# Football API data coverage

See the competitions, seasons, teams, and match data currently available through Stats API.

Canonical URL: https://stats-api.com/coverage

Data coverage

## Coverage you can *verify before buying.*

Check whether your competition and season include the data your app needs. An available endpoint does not mean every match has statistics, lineups, or player data.

**Available endpoints**

Check coverage before integrating

Competitions **✓** Catalog and country metadata

Seasons **✓** Historical labels, available date ranges and tournament groups

Teams **✓** Stats API IDs and name search

Fixtures **✓** Dates, rounds, participants

Results **✓** Full-time scores

Match statistics **✓** Shots, possession, cards and nullable xG where supplied

Players & squads **✓** Profiles, team squads, and match and season player statistics, with started and played flags per match

Team season statistics **✓** Season totals where supplied; unknown fields stay null

Lineups & events **✓** Starting teams and match timelines, in the provider’s order, where covered

Availability flags **✓** Every match says which details are stored: timeline, lineups, team statistics and player statistics

Standings & absences **✓** Season tables and reported injuries or suspensions where covered

Referees **✓** Referee name for a match where ingested

Odds **✓** Pre-match odds (Bet365 and Pinnacle) and short-lived live odds, each with freshness and expiry fields; bookmaker and market coverage varies

**Not currently available**

Plan around these limits

Shot maps **—** Shot coordinates for a match. On the roadmap, not in the contract

Heat maps **—** Player touch maps for a match or a season. On the roadmap, not in the contract

Predictions **—** Ready-made outcome probabilities or betting picks

Guaranteed live timing **—** No sub-minute delivery or freshness SLA

Coverage varies by competition

## Inspect coverage *competition by competition.*

These guides describe specific historical fixtures-and-results datasets. For current seasons and richer fields, query /api/v1/coverage/leagues, then check the coverage flags returned for your chosen match.

England

### [Premier League API](https://stats-api.com/football-api/premier-league)

2025/26 · 20 teams · 380 matches

Spain

### [La Liga API](https://stats-api.com/football-api/la-liga)

2025/26 · 20 teams · 380 matches

Germany

### [Bundesliga API](https://stats-api.com/football-api/bundesliga)

2025/26 · 18 teams · 306 matches

Italy

### [Serie A API](https://stats-api.com/football-api/serie-a)

2025/26 · 20 teams · 380 matches

France

### [Ligue 1 API](https://stats-api.com/football-api/ligue-1)

2025/26 · 18 teams · 306 matches

International

### [World Cup API](https://stats-api.com/football-api/world-cup)

2026 · 48 teams · 104 matches

Source policy

## 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. Every match also carries `details_available`, which says whether Stats API holds a timeline, lineups, team statistics and player statistics for that exact match, so you can check before you ask. OpenFootball’s community-maintained CC0 data remains a historical bootstrap, not a live feed. The API 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 →](https://stats-api.com/docs)

---

Markdown version of https://stats-api.com/coverage. Site index: https://stats-api.com/llms.txt · Full documentation and OpenAPI contract: https://stats-api.com/llms-full.txt · AI usage policy: https://stats-api.com/ai.txt
