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.

  1. Find each competition: GET /leagues?search=Premier or GET /leagues?code=GB-ENG. Save league.id.
  2. Fetch its teams: GET /teams?league={id}&season={year}. Save team.id.
  3. Fetch fixtures the way you already do: GET /fixtures?league={id}&season={year}. Fixture ids come back in every row.
  4. 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.
  5. Ids obtained from this host flow through every endpoint on it — /standings, /odds and the rest — and through /v1 too.

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 /statusAccount, plan and today's requests.
GET /timezoneIANA identifiers accepted by timezone.
GET /countriesname, code, searchCodes such as GB-ENG, ES; "World" has no code.
GET /leaguesid, name, country, code, season, type, current, searchSeasons with start, end, current and coverage flags.
GET /leagues/seasonsSeason years on record.
GET /teamsid, name, search, league + seasonName and id; venue, founded, logo are null.
GET /fixturesid, ids, live, date, league, season, team, last, next, from, to, round, status, timezoneScores, half-time, status and elapsed minute; extra time and penalties are null.
GET /standingsleague, season, teamRank, points, form-free; movement and promotion description where the feed has them.
GET /oddsfixture, league + season, date, bookmaker, bet, timezone, pagePre-match prices for upcoming fixtures, 10 per page.
GET /odds/bookmakersid, searchOur bookmakers under API-Football's ids where they exist.
GET /odds/betsid, searchThe bets we price, under API-Football's ids.
GET /odds/mappingpageUpcoming 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.

ConcernOn this host
Seasonsseason=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.
StatusesNS, 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 fieldsreferee, venue, logo, flag, status.extra, score.extratime, score.penalty, standings form, home and away splits.
ErrorsParameter, 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 headersx-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.
OddsBet 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 idsBookmakers 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.
CoverageYour 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:

Ids are the same on both hosts, so mixing them costs nothing.

6. Verify before switching production traffic

  1. 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.
  2. 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.
  3. Exercise the failure paths — a bad id, an out-of-plan league, a forced 429 — so your handling of errors and of Retry-After is real.
  4. 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.