Skip to main content
Use this page to check what data exists for a competition and season before you build on it.
Fastest way: ask your AI. Set up your coding tool once with Build with AI, then paste:
Just want a quick look? Browse the coverage page.

History depth varies

How far back data goes depends on the competition, and on the data type within it. Don’t assume a fixed number of years. Check the competitions you need. Some examples from the coverage endpoints: Within one competition, data types start at different seasons. In the Premier League:

Odds history

Odds history is thinner than match data:
  • Before the 2026/27 season (around August 2026), matches mostly have closing prices only (the last price before kickoff), mostly from Bet365.
  • From the 2026/27 season, matches can also have opening prices, and prices from more bookmakers: Bet365, Paddy Power, BetMGM UK, Pinnacle and Betfair Exchange.
Check opening_odds and closing_odds in the coverage response for the exact seasons you need.

The coverage endpoints

Check coverage before you build

1

Find competitions with the data you need

Add data_type to list only competitions that have it, and search to filter by name.
Each row shows the competition, how many seasons are loaded, which data types it has and the state of its latest season (trimmed):
2

Check each season

Ask for one competition to see coverage season by season.
Each season shows its status, match counts, and for each data type how many finished matches have it (trimmed):
3

Use the season ID

Coverage uses the same sn_ season IDs as every other endpoint. Pass the one you picked to /football/matches, standings or stats.

Data types

Each data type has available (true or false). On /coverage/leagues/{competition_id}, most also have:
  • covered_events: finished matches in the season that have this data.
  • coverage_pct: those matches as a percentage of all finished matches, to one decimal place.
New data type keys may be added, so ignore keys your code doesn’t recognise.

Season status

Good to know

  • Only finished matches are counted in covered_events, coverage_pct and finished_events.
  • For a season in progress, total can be lower than the full season, because fixtures are still being added.
  • Coverage responses are cached for several hours, so the latest matches can take a while to show up in the counts.
  • seasons.first and seasons.last on /coverage/leagues are a quick guide. For the exact list of seasons, use /coverage/leagues/{competition_id}. Seasons there aren’t always in date order.

Quick check with competition flags

Every competition also carries flags: has_team_stats, has_player_stats, xg_available, odds_available and live_odds_available. They tell you whether the data type exists anywhere in the competition, not which seasons have it. See Data model.

Next steps

  • Find IDs: get the competition_id and season_id for the leagues you picked.
  • Odds: which bookmakers and markets a match has.