Switch from API-Football
An API-Football v3 compatible host. Keep the endpoints, parameters and JSON your code already speaks: change the base URL, change the key, fetch our ids once.
Before — API-Football v3
curl "https://v3.football.api-sports.io/fixtures?live=all" \
-H "x-apisports-key: YOUR_API_FOOTBALL_KEY"
After — 5DollarFootballAPI
curl "https://api-football.5dollarfootballapi.com/fixtures?live=all" \
-H "x-apisports-key: fb_live_your_key"
Ids are ours, not API-Football's.
League, team and fixture ids are not mapped between providers. Any id your code or database holds from API-Football must be replaced once — step 3 below shows how.
1. Change the base URL and the key
Point your client at https://api-football.5dollarfootballapi.com and put your 5DollarFootballAPI key where the API-Football key was. The host accepts x-apisports-key, x-rapidapi-key (clients written against the RapidAPI listing) and Authorization: Bearer. Paths, query parameters and the response envelope stay as they are:
{
"get": "fixtures",
"parameters": { "live": "all" },
"errors": [],
"results": 6,
"paging": { "current": 1, "total": 1 },
"response": [ ... ]
}
One key, one plan, one quota: the compatible host and the native /v1 share your account's rate limit and league coverage.
2. Fetch our ids once
Every id your code hardcodes or your database stores must become ours. This is the one migration task; it takes a handful of requests.
- Find each competition:
GET /leagues?search=PremierorGET /leagues?code=GB-ENG. Saveleague.id. - Fetch its teams:
GET /teams?league={id}&season={year}. Saveteam.id. - Fetch fixtures the way you already do:
GET /fixtures?league={id}&season={year}. Fixture ids come back in every row. - Replace the old ids in code and in your database. Keep the two providers' ids in separate columns if you ever need to roll back.
- Ids obtained from this host flow through every endpoint on it —
/standings,/oddsand the rest — and through/v1too.
Store ids in a 64-bit integer column; public ids may exceed a signed 32-bit integer. The league coverage page lists every competition with its id.
3. Endpoint coverage
The host serves the fixtures, live scores, standings and odds endpoints with API-Football's parameters and response shapes. It does not claim the whole v3 surface: anything not listed answers with errors.endpoint instead of an empty success that looks like coverage.
| Endpoint | Parameters | Notes |
|---|---|---|
| GET /status | — | Account, plan and today's requests. |
| GET /timezone | — | IANA identifiers accepted by timezone. |
| GET /countries | name, code, search | Codes such as GB-ENG, ES; "World" has no code. |
| GET /leagues | id, name, country, code, season, type, current, search | Seasons with start, end, current and coverage flags. |
| GET /leagues/seasons | — | Season years on record. |
| GET /teams | id, name, search, league + season | Name and id; venue, founded, logo are null. |
| GET /fixtures | id, ids, live, date, league, season, team, last, next, from, to, round, status, timezone | Scores, half-time, status and elapsed minute; extra time and penalties are null. |
| GET /standings | league, season, team | Rank, points, form-free; movement and promotion description where the feed has them. |
| GET /odds | fixture, league + season, date, bookmaker, bet, timezone, page | Pre-match prices for upcoming fixtures, 10 per page. |
| GET /odds/bookmakers | id, search | Our bookmakers under API-Football's ids where they exist. |
| GET /odds/bets | id, search | The bets we price, under API-Football's ids. |
| GET /odds/mapping | page | Upcoming fixtures that carry odds. |
Coming next
Routed and reserved, answering errors.endpoint until they ship: /fixtures/headtohead, /fixtures/rounds, /fixtures/events, /fixtures/statistics, /odds/live.
Not served
Player-level and venue data has no source in our feed. Keep API-Football, another provider or your own source for:
- Players, squads and player statistics
- Starting lineups and formations
- Injuries and sidelined players
- Transfers, coaches and trophies
- Venues
- Predictions
- Team statistics
- Team and league logos, player photos
4. Differences to know
Same shapes, honest values. Where our feed has no source for a field it is null, never invented; where a state cannot be vouched for, the response says so.
| Concern | On this host |
|---|---|
| Seasons | season=2025 means 2025/26 for a cross-year league and 2025 for a calendar-year one, as on API-Football. For a league whose calendar cannot be determined, season returns errors.season; use from/to. |
| Statuses | NS, 1H, HT, 2H, FT and PST. No AET or PEN: full-time is always the 90-minute score. A fixture whose outcome the feed never confirmed is excluded from lists and answers errors.fixture when asked by id. |
| Null fields | referee, venue, logo, flag, status.extra, score.extratime, score.penalty, standings form, home and away splits. |
| Errors | Parameter, key and plan errors are HTTP 200 with the message under errors, as on API-Football. Rate limiting is HTTP 429 with Retry-After; genuine failures are 5xx. |
| Rate-limit headers | x-ratelimit-requests-limit and x-ratelimit-requests-remaining are sent, but they reflect your plan's rate window, not a daily quota — plans here have none. X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset are the authoritative ones. |
| Odds | Bet ids follow API-Football's catalog: 1 Match Winner, 4 Asian Handicap, 5 Goals Over/Under, 6 first-half goals, 8 Both Teams Score, 19 first-half Asian Handicap, 45 Corners Over Under, 56 Corners Asian Handicap, 77 first-half corners, 80 Cards Over/Under, 81 Cards Asian Handicap. One main line per market. Bet365 on every plan; other bookmakers with Ultra. Listing by league or date starts with Pro. |
| Bookmaker ids | Bookmakers API-Football also carries keep its ids (Bet365 = 8, Pinnacle = 4, William Hill = 7 …). Ours that it does not carry use ids from 1000 upwards so nothing collides. |
| Coverage | Your plan's leagues and history window apply. A league outside the plan is a refusal under errors.plan, not an empty list. Esports is never served. |
| Paging | /fixtures returns up to 1,000 rows per page and sets paging.total; pass page for the rest. |
5. What the native API adds
The compatible host is a way in, not the whole product. The same key works on https://api.5dollarfootballapi.com/v1, where the data API-Football does not carry lives:
- Odds movement history — every pre-match and in-play price change, with the score at the time, years back.
- Corner and card standings —
type=cornerandtype=cardleague tables. - Corners and cards on every fixture, corner events in the timeline, and
include=odds,events,statsto expand a whole list in one call.
Ids are the same on both hosts, so mixing them costs nothing.
6. Verify before switching production traffic
- Create a free key, point a copy of your client at
https://api-football.5dollarfootballapi.com, and fetch one league, its teams and a recent fixture. - Run both providers side by side for a scheduled, an in-play and a finished match. Compare your normalized model: kickoff, teams, score, status, standings and the odds markets you use.
- Exercise the failure paths — a bad id, an out-of-plan league, a forced 429 — so your handling of
errorsand ofRetry-Afteris real. - Switch read traffic gradually, keeping the old provider's ids in their own column until you are done.
Ready to try it?
Create a free API key — it works on the compatible host and on /v1 from the same minute.
API-Football is a trademark of its owner. This compatible host is an independent product of 5DollarFootballAPI and is not affiliated with, endorsed by or connected to API-Football or API-SPORTS. Compatibility describes request and response formats only.