Coverage you can
verify before buying.
We distinguish what is available now from what depends on a future licensed feed. No inflated competition counts and no silent gaps.
Inspect coverage
competition by competition.
These are data-backed pages, not an aspirational league directory. Every linked competition is available through today’s authenticated beta contract.
Premier League API
2025/26 · 20 teams · 380 matches
View dataset → SpainLa Liga API
2025/26 · 20 teams · 380 matches
View dataset → GermanyBundesliga API
2025/26 · 18 teams · 306 matches
View dataset → ItalySerie A API
2025/26 · 20 teams · 380 matches
View dataset → FranceLigue 1 API
2025/26 · 18 teams · 306 matches
View dataset → InternationalWorld Cup API
2026 · 48 teams · 104 matches
View dataset →Swap the feed, keep the contract.
Coverage is not uniform, and we publish that rather than hide it. Fixtures and results reach far more competitions than match statistics do: a competition can carry results while carrying no corners, shots or possession. Every statistics response therefore states coverage.statistics_available for the match you asked about, so an uncovered competition returns an explicit answer instead of an error. OpenFootball’s community-maintained CC0 data remains a historical bootstrap, not a live feed. The beta serves each dataset as Stats API observed it at the latest successful ingestion, with no promised maximum age or refresh interval. GET /api/v1/coverage/summary reports that ingestion and artifact-retrieval time, while source_updated_at stays null and freshness_guaranteed stays false.
Source mappings support reviewed provider migrations. Unique reschedules and corrections can keep a stable ID; ambiguous matches are never guessed. If a fixture disappears from a complete snapshot, it is hidden as an inactive tombstone rather than mislabeled as canceled, and the same ID is restored if it reappears.
See the available endpoint contract →