Open data · CC BY 4.0 · DOI 10.5281/zenodo.22295583
Football match results and goal timing — an open dataset of 92 leagues
76,991 matches in 92 leagues across 42 countries: the three most recent completed seasons of each league, February 2023 to July 2026. Every row has the full-time and half-time score, the kickoff time in UTC and the minute of every goal — from the Premier League down to third and fourth tiers, women's leagues and youth leagues. One CSV under CC BY 4.0: free to use, change and republish, with credit. No odds.
The Zenodo record also holds a data dictionary and a Dixon–Coles baseline notebook. The ZIP here is byte-identical to the Zenodo files. Version 2026.10; DOI 10.5281/zenodo.22295583 always points to the newest version.
Load it in one line
import pandas as pd
url = "https://zenodo.org/records/23348754/files/football_charts_matches.csv?download=1"
df = pd.read_csv(url)
# goals per match by league, lowest first
df.groupby("league_name")["total_goals"].mean().sort_values()url <- "https://zenodo.org/records/23348754/files/football_charts_matches.csv?download=1" df <- read.csv(url) # goals per match by league aggregate(total_goals ~ league_name, data = df, FUN = mean)
The Zenodo notebook fits a Dixon–Coles baseline to this file; more worked examples (a 3. Liga Dixon–Coles model, an HT/FT heatmap in R) are in football-charts-examples, and When are goals scored? is an analysis built on the same data.
Columns
| league, league_name, country | League code, English league name, country |
| season | Season: "2024-2025" for autumn–spring leagues, "2025" for calendar-year leagues |
| match_date, time, kickoff_utc | Kickoff date and time, both in UTC |
| home_team, away_team | Team names, consistent within a league |
| ht_result, ft_result | Half-time and full-time score, "home:away" |
| home_goals, away_goals, total_goals, result | Goals; result is H (home win), D (draw) or A (away win) |
| first_goal_time | Minute of the first goal; empty for 0:0 or when not recorded |
| all_goal_times | Minutes of every goal, e.g. "12,47,93"; empty for 0:0 or when not recorded |
Leagues in the file (92)
207,950 goals in all; at least 98.9% of each league's goals have a recorded minute.
Show all 92 leagues
| Country | League | Seasons | Matches | Goals | Minutes recorded |
|---|---|---|---|---|---|
| Algeria | Ligue 1 | 2023-2024, 2024-2025, 2025-2026 | 720 | 1,567 | 99.8% |
| Australia | A-League | 2023-2024, 2024-2025, 2025-2026 | 492 | 1,552 | 100% |
| Austria | 2. Liga | 2023-2024, 2024-2025, 2025-2026 | 703 | 2,025 | 99.6% |
| Austria | Bundesliga | 2023-2024, 2024-2025, 2025-2026 | 459 | 1,232 | 100% |
| Azerbaijan | Premier League | 2023-2024, 2024-2025, 2025-2026 | 560 | 1,418 | 99.8% |
| Belgium | Jupiler Pro League | 2023-2024, 2024-2025, 2025-2026 | 799 | 2,173 | 99.8% |
| Belgium | Super League Women | 2023-2024, 2024-2025, 2025-2026 | 282 | 893 | 100% |
| Brazil | Serie A Betano | 2023, 2024, 2025 | 1,135 | 2,818 | 100% |
| Brazil | Serie B Superbet | 2023, 2024, 2025 | 1,133 | 2,454 | 100% |
| Bulgaria | Parva liga | 2023-2024, 2024-2025, 2025-2026 | 773 | 1,842 | 99.8% |
| China | Super League | 2023, 2024, 2025 | 720 | 2,187 | 100% |
| Czech Republic | 3. CFL - Group A | 2023-2024, 2024-2025, 2025-2026 | 752 | 2,416 | 99.9% |
| Czech Republic | 3. CFL - Group B | 2023-2024, 2024-2025, 2025-2026 | 784 | 2,428 | 99.7% |
| Czech Republic | ChNL | 2023-2024, 2024-2025, 2025-2026 | 720 | 1,935 | 100% |
| Czech Republic | Chance Liga | 2023-2024, 2024-2025, 2025-2026 | 758 | 2,038 | 99.9% |
| Denmark | 1st Division | 2023-2024, 2024-2025, 2025-2026 | 456 | 1,311 | 100% |
| Denmark | Superliga | 2023-2024, 2024-2025, 2025-2026 | 456 | 1,357 | 100% |
| Egypt | Premier League | 2023-2024, 2024-2025, 2025-2026 | 781 | 1,696 | 99.7% |
| England | Championship | 2023-2024, 2024-2025, 2025-2026 | 1,662 | 4,275 | 100% |
| England | League One | 2023-2024, 2024-2025, 2025-2026 | 1,661 | 4,316 | 100% |
| England | League Two | 2023-2024, 2024-2025, 2025-2026 | 1,660 | 4,452 | 100% |
| England | National League | 2023-2024, 2024-2025, 2025-2026 | 1,658 | 4,728 | 99.9% |
| England | National League North | 2023-2024, 2024-2025, 2025-2026 | 1,664 | 4,601 | 99.9% |
| England | National League South | 2023-2024, 2024-2025, 2025-2026 | 1,655 | 4,654 | 100% |
| England | Premier League | 2023-2024, 2024-2025, 2025-2026 | 1,140 | 3,406 | 100% |
| Estonia | Meistriliiga | 2023, 2024, 2025 | 540 | 1,569 | 100% |
| Finland | Veikkausliiga | 2023, 2024, 2025 | 396 | 1,157 | 100% |
| Finland | Ykkonen | 2023, 2024, 2025 | 402 | 1,231 | 100% |
| France | Division 1 Women | 2023-2024, 2024-2025, 2025-2026 | 399 | 1,315 | 98.9% |
| France | Ligue 1 | 2023-2024, 2024-2025, 2025-2026 | 921 | 2,610 | 100% |
| France | Ligue 2 | 2023-2024, 2024-2025, 2025-2026 | 995 | 2,505 | 99.9% |
| France | National | 2023-2024, 2024-2025, 2025-2026 | 851 | 2,090 | 99.9% |
| Germany | 2. Bundesliga | 2023-2024, 2024-2025, 2025-2026 | 921 | 2,772 | 100% |
| Germany | 3. Liga | 2023-2024, 2024-2025, 2025-2026 | 1,140 | 3,388 | 100% |
| Germany | Bundesliga | 2023-2024, 2024-2025, 2025-2026 | 919 | 2,934 | 99.9% |
| Germany | Frauen-Bundesliga | 2023-2024, 2024-2025, 2025-2026 | 446 | 1,460 | 100% |
| Germany | Regionalliga North | 2023-2024, 2024-2025, 2025-2026 | 929 | 3,150 | 99.8% |
| Greece | Super League | 2023-2024, 2024-2025, 2025-2026 | 610 | 1,605 | 99.6% |
| Greece | Super League 2 | 2023-2024, 2024-2025, 2025-2026 | 709 | 1,603 | 99.9% |
| Hungary | Merkantil Bank Liga | 2023-2024, 2024-2025, 2025-2026 | 786 | 2,008 | 100% |
| Hungary | NB I. | 2023-2024, 2024-2025, 2025-2026 | 594 | 1,750 | 100% |
| India | ISL | 2023-2024, 2024-2025, 2025-2026 | 379 | 1,032 | 99.6% |
| Ireland | Division 1 | 2023, 2024, 2025 | 539 | 1,525 | 99.7% |
| Ireland | Premier Division | 2023, 2024, 2025 | 540 | 1,314 | 100% |
| Italy | Primavera 1 | 2023-2024, 2024-2025, 2025-2026 | 1,068 | 3,177 | 99% |
| Italy | Serie A | 2023-2024, 2024-2025, 2025-2026 | 1,140 | 2,887 | 99.9% |
| Italy | Serie B | 2023-2024, 2024-2025, 2025-2026 | 1,150 | 2,888 | 99.9% |
| Italy | Serie C - Group A | 2023-2024, 2024-2025, 2025-2026 | 1,140 | 2,609 | 100% |
| Italy | Serie C - Group B | 2023-2024, 2024-2025, 2025-2026 | 1,117 | 2,614 | 99.9% |
| Japan | J1 League | 2024, 2025, 2026 | 873 | 2,238 | 100% |
| Japan | J2 League | 2023, 2024, 2025 | 1,222 | 3,059 | 100% |
| Kuwait | Premier League | 2023-2024, 2024-2025, 2025-2026 | 278 | 799 | 100% |
| Latvia | Virsliga | 2023, 2024, 2025 | 546 | 1,629 | 100% |
| Lithuania | A Lyga | 2023, 2024, 2025 | 540 | 1,333 | 99.5% |
| Morocco | Botola Pro | 2023-2024, 2024-2025, 2025-2026 | 728 | 1,628 | 100% |
| Netherlands | Eerste Divisie | 2023-2024, 2024-2025, 2025-2026 | 1,150 | 3,546 | 100% |
| Netherlands | Eredivisie | 2023-2024, 2024-2025, 2025-2026 | 930 | 2,912 | 100% |
| Netherlands | Tweede Divisie | 2023-2024, 2024-2025, 2025-2026 | 932 | 3,045 | 100% |
| Norway | Eliteserien | 2023, 2024, 2025 | 720 | 2,191 | 99.8% |
| Poland | Division 1 | 2023-2024, 2024-2025, 2025-2026 | 939 | 2,633 | 99.8% |
| Poland | Ekstraklasa | 2023-2024, 2024-2025, 2025-2026 | 927 | 2,532 | 100% |
| Portugal | Liga Portugal | 2025-2026 | 308 | 823 | 100% |
| Portugal | Liga Portugal 2 | 2023-2024, 2024-2025, 2025-2026 | 922 | 2,269 | 100% |
| Romania | Liga 1 | 2023-2024, 2024-2025, 2025-2026 | 827 | 2,042 | 100% |
| Russia | Premier League | 2023-2024, 2024-2025, 2025-2026 | 724 | 1,900 | 100% |
| Saudi Arabia | Division 1 | 2023-2024, 2024-2025, 2025-2026 | 919 | 2,521 | 99.4% |
| Saudi Arabia | Saudi Professional League | 2023-2024, 2024-2025, 2025-2026 | 926 | 2,754 | 99.9% |
| Scotland | Championship | 2023-2024, 2024-2025, 2025-2026 | 549 | 1,410 | 100% |
| Scotland | League One | 2023-2024, 2024-2025, 2025-2026 | 550 | 1,563 | 100% |
| Scotland | League Two | 2023-2024, 2024-2025, 2025-2026 | 548 | 1,488 | 100% |
| Scotland | Premiership | 2023-2024, 2024-2025, 2025-2026 | 630 | 1,753 | 100% |
| Serbia | Serbia | 2023-2024, 2024-2025, 2025-2026 | 777 | 2,117 | 99.8% |
| Slovenia | Prva liga | 2023-2024, 2024-2025, 2025-2026 | 524 | 1,504 | 99.4% |
| South Korea | K League 1 | 2023, 2024, 2025 | 594 | 1,543 | 100% |
| South Korea | K League 2 | 2023, 2024, 2025 | 741 | 1,903 | 100% |
| Spain | La Liga | 2023-2024, 2024-2025, 2025-2026 | 1,140 | 3,024 | 100% |
| Spain | La Liga2 | 2023-2024, 2024-2025, 2025-2026 | 1,433 | 3,543 | 100% |
| Spain | Primera RFEF - Group 1 | 2023-2024, 2024-2025, 2025-2026 | 1,158 | 2,719 | 99.9% |
| Spain | Primera RFEF - Group 2 | 2023-2024, 2024-2025, 2025-2026 | 1,140 | 2,621 | 100% |
| Spain | Segunda Division B - Group 1 | 2023-2024, 2024-2025, 2025-2026 | 918 | 2,218 | 99.8% |
| Spain | Segunda Division B - Group 2 | 2023-2024, 2024-2025, 2025-2026 | 918 | 2,196 | 99.9% |
| Spain | Segunda Division B - Group 3 | 2023-2024, 2024-2025, 2025-2026 | 918 | 2,208 | 100% |
| Spain | Segunda Division B - Group 4 | 2023-2024, 2024-2025, 2025-2026 | 935 | 1,998 | 100% |
| Spain | Segunda Division B - Group 5 | 2023-2024, 2024-2025, 2025-2026 | 918 | 2,218 | 100% |
| Sweden | Allsvenskan | 2023, 2024, 2025 | 720 | 2,028 | 100% |
| Sweden | Allsvenskan Women | 2023, 2024, 2025 | 546 | 1,729 | 100% |
| Sweden | Superettan | 2023, 2024, 2025 | 720 | 1,992 | 100% |
| Switzerland | Challenge League | 2023-2024, 2024-2025, 2025-2026 | 546 | 1,623 | 99.8% |
| Switzerland | Super League | 2023-2024, 2024-2025, 2025-2026 | 625 | 1,884 | 100% |
| Thailand | Thai League 1 | 2023-2024, 2024-2025, 2025-2026 | 720 | 2,110 | 100% |
| Turkey | 1. Lig | 2023-2024, 2024-2025, 2025-2026 | 1,070 | 2,859 | 99.8% |
| Turkey | Super Lig | 2023-2024, 2024-2025, 2025-2026 | 1,028 | 2,878 | 99.8% |
Known issues in version 2026.10
- 57 matches with goals have no goal minutes, and 86 list a number of minutes that does not match the score — 0.2% of rows together.
- Bourg en Bresse v Le Puy-en-Velay (National, France, 2026-02-06) appears 2 times.
- Werder Bremen II v Hamburger SV II (Regionalliga North, Germany, 2026-04-26) appears 2 times, with different scores (1:1 and 2:1).
- 9 Primavera 1 (Italy) rows have decimal minute values instead of whole minutes.
- Added-time goals are whole minutes (45+2 is recorded as 47), so minutes 46–48 also hold a few early second-half goals.
The next version fixes the rows above. Results and goal minutes are compiled by football-charts.com from public sources and provided as is.
Credit and citation
CC BY 4.0 asks for credit. Please write “Data: Football Charts (football-charts.com), CC BY 4.0” and link this page or the DOI. To cite a fixed version:
Football Charts (2026). Football Match Results and Goal Timing, 92 Leagues (2023–2026) (Version 2026.10) [Data set]. Zenodo. https://doi.org/10.5281/zenodo.23348754
@dataset{football_charts_2026_10,
author = {{Football Charts}},
title = {Football Match Results and Goal Timing, 92 Leagues (2023--2026)},
version = {2026.10},
publisher = {Zenodo},
year = {2026},
doi = {10.5281/zenodo.23348754},
url = {https://www.football-charts.com/dataset}
}Need newer data or more seasons?
The file is a frozen version. The free API and MCP server serve the current and previous season of all 98 leagues, updated daily: free to start, with 100 requests/day without a key and 200/day with a free key. Paid API plans add every season back to 2020. Universities and research institutes can ask for 12 months of full-history access at no cost. Historical bookmaker odds are not part of this dataset; they are sold separately as the odds archive.
