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.
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 Each row shows the competition, how many seasons are loaded, which data types it has and the state of its latest season (trimmed):
data_type to list only competitions that have it, and search to filter by name.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.
Season status
Good to know
- Only finished matches are counted in
covered_events,coverage_pctandfinished_events. - For a season in progress,
totalcan 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.firstandseasons.laston/coverage/leaguesare 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.