# Football data sources — historical results, live scores & ML features (xG etc.) — compiled June 2026

> Source: <https://gist.github.com/hungson175/b804219579b3c3f6deb53dd0421d071a>
> Published: 2026-06-12 05:49:08+00:00

A concise, current (June 2026) map of where to get **historical results**, **live results**, and
**modelling data like expected goals (xG)** for football — aimed at anyone building a match-prediction
model/agent. Free-first; every row notes whether you need an API key.

Note: a few datasets ship historical bookmaker-odds columns — listed here purely as

model features, not for betting. Always read each provider's Terms & rate limits and cache aggressively.

| Source | What you get | Key? | Notes / best for |
|---|---|---|---|
|

[football-data.org](https://www.football-data.org/)**free forever**[API-Football](https://www.api-football.com/)[TheSportsDB](https://www.thesportsdb.com/)[Football-Data.co.uk](https://www.football-data.co.uk/)[StatsBomb Open Data](https://github.com/statsbomb/open-data)| Source | What you get | Key? | Notes / best for |
|---|---|---|---|
ESPN hidden API — `site.api.espn.com/apis/site/v2/sports/soccer/{league}/scoreboard` |
Live scores + finished results, JSON | No | Free, no signup, fast; unofficial so endpoints can change. Solid for matchday polling. |
|

[football-data.org](https://www.football-data.org/)[SofaScore](https://www.sofascore.com/)[Live-Score API](https://live-score-api.com/)| Source | What you get | Key? | Notes / best for |
|---|---|---|---|
|

[Understat](https://understat.com/)[StatsBomb Open Data](https://github.com/statsbomb/open-data)[Club Elo](http://clubelo.com/API)[soccerdata (Python)](https://github.com/probberechts/soccerdata)**Start here.**[worldfootballR (R)](https://jaseziv.github.io/worldfootballR/)** Fixtures & results:**[football-data.org](https://www.football-data.org/)(keyed, clean) — or[openfootball](https://github.com/openfootball)for zero-setup.**Live during matches:** ESPN hidden API (no key) +[API-Football](https://www.api-football.com/)free tier as backup. Confirm a final score from**two** sources before trusting it.**Model features:**[soccerdata](https://github.com/probberechts/soccerdata)→ FBref xG + Understat shot xG +[Club Elo](http://clubelo.com/API)ratings;[StatsBomb Open Data](https://github.com/statsbomb/open-data)when you want raw events.**Curated index of everything else:**[openfootball/awesome-football](https://github.com/openfootball/awesome-football).

**Practical tips**

- Cache results locally; most free tiers are rate-limited (and live feeds lag — verify FT from ≥2 outlets).
- "Hidden"/unofficial endpoints (ESPN, SofaScore) are great but can change without notice — keep a fallback.
- xG and form are
*features*for your model, not requirements — even a clean results feed + Elo gets you far.

*Compiled June 2026. Free tiers and endpoints change — double-check each provider's current docs.*
