Sportmonks sells licensed football data in league-scoped plans, roughly €29 to €249 a month, with add-ons that stack on top. foot.io sells one flat key — $19 or $79 a month — with no gating between tiers: the cheapest paid key reads exactly the same rows as the most expensive one. Those rows are the ones we can defend a right to redistribute — 733,863 of the 1,177,209 matches we hold, earliest 1871, measured 10 August 2026. The pricing shapes differ because the underlying rights differ, and that is the honest heart of this comparison.
Written by foot.io. Sportmonks figures are from their public pricing pages, checked 28 Jul 2026; plan scopes change, so price your own basket there.
foot.io figures were measured against our production database, most recently on 10 Aug 2026.
League gating gets attacked a lot in comparison pages written by people who do not license data. We are not going to do that. Licensed coverage costs money per league, so charging per league is a coherent thing to do, and it buys the customer something real: contractual depth on the leagues they paid for. If you need one league covered completely and reliably next season, a plan with a contract behind it is a better instrument than our measured-but-uneven depth.
Our flat price is not a clever business model Sportmonks failed to think of. It is what is available to us given where our data comes from — much of it public, compiled or open, some of it cleared for sale source by source, and some of it withheld because it is not. That buys you breadth and history very cheaply. It does not buy you a guarantee, and we will not sell you one.
| Capability | foot.io | Sportmonks |
|---|---|---|
| Published price | $0 free · $19/mo Indie · $79/mo Pro · Enterprise on request | Roughly €29–€249/mo depending on plan |
| Plan structure | Flat. Tiers differ on request volume only | Scoped by league, with add-ons that stack on the base plan |
| League gating | None between tiers — the cheapest paid key reads exactly the same rows as the most expensive one. The served set itself (763 of the 926 competitions we hold) is defined by licence, not by plan — see Redistribution rights | Yes, by design: you buy the leagues you need |
| Depth guarantee | None. We publish measured fill rates instead | Contractual on purchased leagues — better than us |
| Redistribution rights | Partial, and enforced by a licence gate since 29 Jul 2026: every tier reads 733,863 of our 1,177,209 held matches (62.3%), 42.9% of held events, 32.9% of held lineups, measured 10 Aug 2026. Top-five-league depth, transfers, shot-level data and market values are withheld, not sold | Licensed supplier — much stronger than us |
| Competitions | 926 held with at least one recorded match; 763 serve at least one match, identical at every paid tier (measured 10 Aug 2026) | Large catalogue, available per plan and per add-on |
| Earliest match | 11 Nov 1871 | Modern era; check per-league season availability |
| Live data | ~5-minute poll, single self-hosted runner | In-play products — better than us |
| Historical odds | 6,222,372 pre-match quotes over 130,550 matches, 21 competitions, 7 bookmakers, 2000–2026; 49,929 odds matches join to a result every tier can read (measured 10 Aug 2026). A research convenience, not a licensed feed | Licensed odds and prediction products |
| Query model | PostgREST — filter, order and embed related rows in one request | REST with an includes syntax for related entities |
| Agent / MCP access | Deployed MCP server, 31 tools, every paid tier | REST only; you write the tool layer |
| Cross-provider ID resolution | resolve_entity translates ids from Transfermarkt, FBref, Wikidata, Sofascore, API-Football and others. Free, never metered | Their own ids |
| Coverage transparency | Per-competition, per-season fill rates on a public endpoint, gaps included | Documented league and feature availability per plan |
| Maturity | Closed beta, solo developer, no SLA on self-serve tiers | Established company with support — ahead of us |
A note on the price row: those are different currencies and, more importantly, different things. €29 of Sportmonks is a defined, licensed, supported scope. $19 of foot.io is everything we can defend a right to re-serve, unguaranteed, from a beta. Compare the fit, not the number.
We cannot sell you licensed depth in the leagues you are most likely to want it. Since 29 Jul 2026 a licence gate enforces our redistribution rights on every tier, and clearances have kept landing: as of 10 August 2026 we re-serve full match depth — result plus events plus lineups — for 37,998 matches across 164 competitions. But read where those are: MLS, Argentina's Primera Nacional, Spain's Primera División RFEF, Austria's Regionalliga, Japan's J2/J3 League. In the Premier League, Serie A, La Liga, the Bundesliga, Ligue 1 and the Champions League, the events and lineups we hold come from sources we have no right to re-serve, so we sell none of them. Sportmonks can sell you those. We cannot, and no amount of paying us changes it. Player market values and injury records remain off the API surface entirely — in no tier, at any price — and transfers and shot-level data, xG included, pass the gate for zero rows. If your buyer asks where the data comes from and expects a licence in the answer, buy from a licensed supplier.
Depth is uneven and we publish it that way. Roughly half of played current-season matches carry events, roughly a third carry lineups — 40,775 and 26,123 of 79,698, measured on 6 August 2026. Across the whole database, events we can defend a right to re-serve are 42.9% of what we hold and lineups 32.9% (measured 10 August 2026). The leagues you would expect are much better than that on raw coverage and much worse on rights. A Sportmonks plan tells you what you are getting before you start. We tell you what we have and let you check it.
Live is not our product. Five-minute polling from a single self-hosted runner. Do not build an in-play feature on it.
We are one person in closed beta. No support rota, no SLA on self-serve tiers, checkout not yet open. That is a genuine risk to a commercial buyer and it belongs in your decision.
No plan matrix. If your question spans thirty leagues and four decades, a per-league plan is the wrong shape and you will end up buying add-ons to answer one question. Our cheapest paid key reads exactly the same rows as the most expensive one; tiers differ only in how many requests you may make. What the rows are is set by our licence gate, identically for everyone.
History that per-league licensing rarely reaches. Licensed feeds are excellent at the modern era and thin before it, because that is what the rights cover. Our spine is compiled and open historical data — exactly the part nobody licenses. If you need 1889 as well as 2026, that asymmetry is the whole argument.
Identifier translation as a free primitive. resolve_entity takes a Transfermarkt id, an FBref id, a Wikidata QID, a Sofascore id or a plain name, and returns our canonical entity with every other provider identifier we hold, plus the match method and a confidence score. It serves identifiers and names only — never stats — so it is never billed and never counts against a quota. 304,915 of our 305,434 players carry at least one external identifier (measured 6 Aug 2026). Use it to bolt our history onto a licensed feed you already buy.
Coverage you can audit before you commit. Per-competition, per-season fill rates are public and unauthenticated, and the erratum logs corrections when we get something wrong.
Pick the leagues your product actually needs and read the fill rates season by season before you talk to us. If a number on this page disagrees with what the endpoint returns, the endpoint is right and we owe you a correction.
Two footnotes on that query. It returns fill rates of what we hold; the licence gate then decides how much of that any key reads (see the redistribution row above). And filtering by name works here only because exactly one competition is called Eredivisie — 17 are called Premier League, so for ambiguous names filter on competition_id instead.