API-Football is the most established football API on the market and a genuinely good product. This page sets the two side by side on the things that decide a long integration — requests per dollar, what the free key can actually reach, and where the data comes from — including the tier where API-Football wins.
| Feature | KickoffAPI | API-Football |
|---|---|---|
| Free tier | 100 req/day, real-time, full seasons | 100 req/day, seasons limited |
| At $19/month | 20,000 req/day | 7,500 req/day |
| At $39/month | 100,000 req/day | 150,000 req/day |
| Highest published plan | 500,000 req/day ($99) | 150,000 req/day ($39) |
| Own xG model | Queryable endpoint, versioned model | Not published |
| Data sourcing | Own reconciled store, origin on every row | Not published |
Both products' figures taken from their public pricing pages, 24 September 2026. Product names are trademarks of their respective owners. If anything here is out of date, tell us and we will correct it.
The fastest way to judge an API is to read one response. This is a real, unedited KickoffAPI call — Liverpool v Bournemouth, Premier League, matchday one of 2025.
$ curl -G "https://api.kickoffapi.com/api/v2/fixtures" \ -d "league=39&season=2025&limit=1" -H "x-api-key: YOUR_KEY" { "data": [{ "id": "fx_j3AR8hjl9tRa", "date": "2025-08-15T20:00:00.000Z", "status": { "long": "Match Finished", "short": "FT" }, "league": { "id": "lg_49706223160bbba4", "name": "Premier League" }, "home": { "id": "tm_8d1cf3beebe33484", "name": "Liverpool FC" }, "away": { "id": "tm_3b1b1f15d2ccae5e", "name": "AFC Bournemouth" }, "score": { "home": 4, "away": 2, "halftime": { "home": 1, "away": 0 } }, "source": "owned" }], "meta": { "count": 1, "nextCursor": "1", "source": "owned" } }
Three things worth noticing, because they are what you live with for the next two years:
{ data, meta }. Pagination is a cursor in the same place on every resource, so one client handles all of them.fx_, lg_, tm_, pl_. An id tells you what it points at, and it does not change under you."source": "owned". Every row says where it came from. That field is the whole point of the section below.Rate limiting is on the response too, not buried in a dashboard — x-ratelimit-limit, x-ratelimit-remaining and x-ratelimit-reset come back on every authenticated call, so your client can back off on its own. Live matches come from the same endpoint with ?live=all.
Most football APIs, including some very good ones, are a layer over a single upstream data supplier. That works until the day it does not — the supplier reprices, loses a licence, changes a schema, or goes down — and every product built on top inherits the problem at once.
KickoffAPI is built the other way round. We maintain our own reconciled store of football history, assembled from several independent sources and cross-checked against each other, and we use a commercial feed only to fill what we cannot yet own. That is why every row carries a source field: you can see, per record, which store produced it.
It is not a feature you will use on day one. It is the reason the integration you write this month still returns the same shape in two years, and for anything you intend to run as a business, that is worth more than a cheaper request.
You want a free tier you can genuinely prototype on — real-time and the full season range, not a sample. You want a queryable xG model and per-match projections without buying a second vendor. You need more than 150,000 requests a day. Or you would rather your product's data did not depend on one supplier's contract.
Their Mega plan is 150,000 requests a day for $39 against our 100,000 at the same price — if raw request count in that band is your binding constraint, they are the better buy and we would rather tell you than have you find out. They are also long-established with a large community, and if you are already integrated and content, there is no urgent reason to move.
At the entry tier, yes: both charge $19 a month and KickoffAPI includes 20,000 requests a day against API-Football's 7,500 — about 2.7× more. At $39 the comparison reverses: API-Football's Mega plan includes 150,000 requests a day and our Pro plan includes 100,000. Above that, our Ultra plan is 500,000 a day for $99, which their published tiers do not reach.
Both give 100 requests a day and neither asks for a card. The difference is what the key can reach: API-Football states that free plans are limited in terms of available seasons, while our free tier returns real-time scores across the full season range. You can verify that in about a minute without giving us anything.
A queryable xG model at /api/v2/xg with its version returned alongside the value, per-match projections at /api/v2/fixtures/{id}/projection, Elo-based ratings, form guides and season simulations. These are computed in house rather than resold, which is why they are on every plan rather than an add-on.
Our v1 surface is deliberately api-football-shaped, so an existing integration can usually be pointed at KickoffAPI with a base URL and a key change. v2 is the native surface with the cursor envelope and prefixed ids shown above, and you can move to it later at your own pace.
100 requests a day, real-time, no card. The fastest way to settle a comparison is to run both.