1. StatsBomb open data
What: full event data (passes, shots, pressures, carries, 360 freeze-frames) for selected competitions. Where: github.com/statsbomb/open-data Good for: event-level modelling, xG, pass networks, defensive metrics. Trade-off: only a subset of competitions and seasons; you cannot pick the latest matchday.
2. FBref
What: the deepest public repository of team and player tables — including advanced stats derived from Opta data.
Where: fbref.com
Good for: historical comparisons, league tables with advanced metrics, scouting by percentile.
Trade-off: it is a website, not an API. Respect their conditions and keep scraping minimal — packages like soccerdata cache aggressively for a reason.
3. Understat
What: shot-level xG data for the top five European leagues, back to 2014. Where: understat.com Good for: xG trend analysis, shot maps, season-long team comparisons. Trade-off: one xG model only (their own), five leagues.
4. football-data.co.uk
What: results, tables and betting odds going back decades, as clean CSV files. Where: football-data.co.uk Good for: modelling match outcomes, testing market efficiency, backtesting. Trade-off: no events; one row per match.
5. OpenFootball
What: open, scrape-free datasets: World Cup squads and matches, and league archives in JSON/CSV. Where: github.com/openfootball Good for: historical tournaments, quick joins with odds datasets. Trade-off: sparse on modern domestic leagues compared to the sources above.
Bonus: let Python do the plumbing
soccerdata (a Python package) wraps FBref, Understat, WhoScored and others behind pandas DataFrames, with local caching and polite rate limits:
import soccerdata as sd
fbref = sd.FBref(leagues="ENG-Premier League", seasons="2025-26")
stats = fbref.read_team_season_stats(stat_type="passing")
understat = sd.Understat(leagues="ENG-Premier League", seasons="2025")
shots = understat.read_shot_events()
How to choose
| Question | Start with |
|---|---|
| "Why are we losing matches we dominate?" | StatsBomb events + your own xG |
| "How does this player compare historically?" | FBref |
| "Is this team's finishing sustainable?" | Understat xG trend |
| "Can I beat the market model?" | football-data.co.uk odds |
| "I need tournament history fast" | OpenFootball |
Pick one, build something small, and publish what you find.