KICKOFFAPI / SWITCH / SPORTMONKS

Switch from SportMonks to KickoffAPI

A call-for-call migration map: every endpoint you are most likely using on SportMonks' Football API 3.0, the KickoffAPI call that answers the same need, and an honest section on what does not line up one-to-one.

THEIR CALL → OUR CALL

Endpoints side by side

NeedSportMonks (Football API 3.0)KickoffAPI
Fixtures by league + season GET /v3/football/fixtures?filters=fixtureLeagues:{ids};fixtureSeasons:{ids} GET /api/v2/fixtures?league={lg_… or int}&season={YYYY}
Full season schedule GET /v3/football/schedules/seasons/{seasonId} GET /api/v2/fixtures?league=…&season=… (paged with limit + cursor)
Fixtures by date GET /v3/football/fixtures/date/{YYYY-MM-DD} (a timezone shifts the date bucket; a date-range endpoint is capped at 100 days) GET /api/v2/fixtures?date=YYYY-MM-DD (range: from + to)
Standings GET /v3/football/standings/seasons/{seasonId} GET /api/v2/standings?league=…&season=… (both required)
Teams GET /v3/football/teams/seasons/{seasonId} · single team GET /v3/football/teams/{ID} GET /api/v1/teams?league=…&season=… (v1 — v2's /api/v2/teams filters by country only)
Head-to-head GET /v3/football/fixtures/head-to-head/{team_id_1}/{team_id_2} GET /api/v2/headtohead?h2h={tm_1-tm_2} (or team1 + team2)
One fixture GET /v3/football/fixtures/{ID} — scores and participants arrive via include= GET /api/v2/fixtures/{fx_… or int} — score, home, away on the row
Authentication ?api_token=YOUR_TOKEN or header Authorization: YOUR_TOKEN (either counts against the same rate limit) header x-api-key

Their column was read from docs.sportmonks.com (v3 docs, fetched 1 October 2026); ours from KickoffAPI's published OpenAPI specs and v2 reference. Product names are trademarks of their respective owners.

THEIR CALL — SPORTMONKS V3, FIXTURES BY LEAGUE
curl -H "Authorization: YOUR_TOKEN" \
  "https://api.sportmonks.com/v3/football/fixtures?filters=fixtureLeagues:501,271&per_page=25"
OUR CALL — KICKOFFAPI V2, FIXTURES BY LEAGUE + SEASON
curl -G "https://api.kickoffapi.com/api/v2/fixtures" \
  -d "league=39&season=2025&limit=25" \
  -H "x-api-key: YOUR_KEY"
READ THIS BEFORE YOU MIGRATE

What is different

SHAPES THAT CHANGE IN YOUR CODE

Envelope, ids, paging, filters

Envelope. Their fixture object carries the id and kickoff time at the top (starting_at) while scores and participants arrive through include= — fixture endpoints allow three nested levels. Ours is one envelope everywhere: { data, meta }, with score, home, away and league already on the row and the cursor in the same place on every list response.

Ids. Their ids are plain numbers (a fixture is 19146701). Ours are prefixed — fx_, lg_, tm_ — so an id tells you what it points at. If you have legacy integer ids lying around, GET /api/v2/resolve?entity=&legacyId= and GET /api/v2/idmap/leagues translate them.

Paging. Their list endpoints take per_page (max 50, default 25) and page. Ours take limit and follow meta.nextCursor.

Filters. Their dynamic filters chain inside a single parameter with ; (filters=fixtureLeagues:501,271;fixtureSeasons:23690). Ours are ordinary query parameters — league, season, date, from, to, team — so there is no filter syntax to learn.

MAPPING NOTES & LIMITS

Where the two do not match up

Season ids. Their schedule, standings and team-by-season routes need an internal season id (for example 23690). Ours take the league and the season year (season=2025) directly.

Teams. Theirs lists teams of a season; ours lists teams of a league + season, and that call lives on v1 (/api/v1/teams) because our v2 teams endpoint filters by country only. This page shows the v1 path on purpose rather than pretending v2 covers it.

Auth. Their token can travel in the query string or the Authorization header. Ours is a single header, x-api-key, on every endpoint.

What this page does not claim. It maps calls, nothing else. We have not benchmarked SportMonks for coverage, latency or uptime, and nothing here should be read as a reliability claim about them — judge that from your own traffic.

Sources: docs.sportmonks.com/v3 (authentication, filters reference, fixtures/schedules/standings/teams/head-to-head endpoint pages) and KickoffAPI's own reference. Retrieved 1 October 2026. Anything their documentation did not answer is left out rather than guessed.

Get on the wire

One header, one envelope, every league on the free tier. Your key takes 30 seconds.