Damir81/football-charts-results-goal-timing
Football Charts — Match Results and Goal Timing Football Charts publishes results, fixtures, league tables and the minute of every goal for 93 leagues in 42 countries, including the lower divisions and women's competitions most sources skip. Free JSON API and MCP server; the results and goal-timing dataset is CC BY 4.0 with a DOI (10.5281/zenodo.22295583). Most public football datasets cover the big five European leagues and stop at the final score. This one reaches Serie C, 3.… See the full description on the dataset page: https://huggingface.co/datasets/Damir81/football-charts-results-goal-timing.
Football Charts — Match Results and Goal Timing
Football Charts publishes results, fixtures, league tables and the minute of every goal for 93 leagues in 42 countries, including the lower divisions and women's competitions most sources skip. Free JSON API and MCP server; the results and goal-timing dataset is CC BY 4.0 with a DOI (10.5281/zenodo.22295583).
Most public football datasets cover the big five European leagues and stop at the final score. This one reaches Serie C, 3. Liga, Segunda RFEF, the National League, the Nordic and Baltic tiers, and four women's leagues, and it records the minute of every goal.
No betting odds or derived market data are included here.
Columns
One row per match.
How goal minutes are recorded, and why it matters
Stoppage-time goals are stored as a continuing minute count, not in 45+2 notation. A goal two minutes into first-half stoppage time appears as minute 47, not 45+2.
That has a measurable consequence. Over matches carrying both a half-time score and a complete list of goal minutes:
Measured on the 71,111 matches in this file that carry both a half-time score and a complete goal-minute list, covering 207,504 goals.
Both are correct arithmetic on the same matches. The gap is entirely the recording convention. ht_result is the authority on which half a goal fell in; a minute cut at 45 is not. Anyone splitting halves on the minute column will be wrong by roughly the size of the effect they are trying to measure.
Contents
77,067 matches, 92 leagues, 42 countries: the three most recent completed seasons of each league as of September 2026. Season labels differ by calendar because some leagues run through the winter and some through the summer.
Known limits
- 71,219 of 77,067 rows carry goal minutes. Treat the rest as missing, not as goalless.
- In 78 rows, 0.11% of those with timings, the count of goal minutes disagrees with the full-time score. Validate before analysing.
- No player-level data, no expected goals, no lineups, no tracking.
- Coverage and known defects are published at <https://www.football-charts.com/data/quality>.
Live API
The same data is available as a free JSON API and as an MCP server, so an assistant can query it directly: <https://www.football-charts.com/developers>
Citation
@dataset{devetak_football_charts,
author = {Devetak, Damir},
title = {Football Charts: Match Results and Goal Timing},
publisher = {Zenodo},
doi = {10.5281/zenodo.22295583},
url = {https://www.football-charts.com/data}
}Licence
CC BY 4.0. Use, redistribute and adapt with attribution to football-charts.com.
