Football-Data.co.uk

Summary

Football-Data.co.uk is a free resource providing computer-ready historical football results, match statistics, and betting odds data for 22+ European football divisions across 25+ seasons, dating back to 1993/94. It is the gold standard free dataset for building and backtesting football prediction models. Data is available as CSV files organized by league and season, downloadable directly from the website.

The site covers full-time and half-time results, match statistics (shots, corners, fouls, cards, offsides), and historical betting odds from 10+ bookmakers including closing odds. All data is free — no API key, no registration, no rate limits. The dataset is widely cited in academic and hobbyist sports modeling work.

The main limitation is that data is historical and batch-download only — there is no real-time or API access. For live modeling or pre-game predictions, the CSV files must be downloaded and processed offline.

Data Coverage

Data Type Coverage Historical Depth
Match results (FT/HT) 22+ divisions From 1993/94 (~31 seasons)
Match statistics Major leagues From 2000/01 (~24 seasons)
Betting odds 10+ bookmakers From 2000/01 (~24 seasons)
Closing odds Pinnacle + market avg From 2005/06 (~19 seasons)
Asian handicap odds Major leagues From 2005/06

Leagues covered: Premier League, Championship, League 1/2, Scottish Premiership, Bundesliga 1/2, La Liga 1/2, Serie A/B, Ligue 1/2, Eredivisie, Primeira Liga, Jupiler League, and more.

File Format

CSV files follow a consistent naming convention: E0.csv (Premier League), E1.csv (Championship), D1.csv (Bundesliga), etc.

Results file columns (e.g., E0.csv):

Date, HomeTeam, AwayTeam, FTHG (Full-Time Home Goals), FTAG (FT Away Goals),
FTR (Full-Time Result), HTHG, HTAG, HTR

Odds file columns (e.g., E0.csv with bayern.csv naming):

Date, HomeTeam, AwayTeam, B365H, B365D, B365A   (Bet365 home/draw/away odds)
BWA, BWD, BWA                                  (BetWin)
IWH, IWD, IWA                                  (InterWetten)
... closing odds marked with 'C' suffix (e.g., B365C, B365DC, B365AC)

Match stats file columns:

Date, HomeTeam, AwayTeam, HS (Home Shots), AS (Away Shots),
HST (Home Shots on Target), AST, HC (Home Corners), AC, HF (Home Fouls), AF,
HY (Home Yellow), AY, HR (Home Red), AR

Loading Data in Python

import pandas as pd

# Load Premier League results and odds (multiple seasons)
seasons = ["2425", "2324", "2223"]  # 2425 = 2024/25
dfs = []
for s in seasons:
    url = f"https://www.football-data.co.uk/england/{s}E0.csv"
    df = pd.read_csv(url)
    df["season"] = s
    dfs.append(df)

results = pd.concat(dfs, ignore_index=True)

# Load closing odds for the same seasons
dfs_odds = []
for s in seasons:
    url = f"https://www.football-data.co.uk/england/{s}E0.csv"
    df = pd.read_csv(url)
    # Closing odds columns have 'C' suffix
    close_cols = [c for c in df.columns if c.endswith("C")]
    df = df[["Date", "HomeTeam", "AwayTeam", "FTR"] + close_cols]
    df["season"] = s
    dfs_odds.append(df)

Notes

  • The closing odds (columns with C suffix) are the most valuable dataset for backtesting — they represent the market consensus just before kickoff
  • Pinnacle closing odds are available separately (marked PC columns) — Pinnacle is the sharpest bookmaker, making their closing odds the best benchmark for CLV validation
  • Note from the site: As of July 2025, Pinnacle's public API has become unreliable, so their odds are systematically out of date. Use Bet365 or market average closing odds as a proxy for sharp closing lines.
  • No shot-level xG data — match stats (shots, shots on target) can be used to approximate xG at the team level
  • Data is updated weekly during the season — not real-time
  • No API: download files manually or scrape with a script; Apify provides a scraper that converts Football-Data.co.uk CSVs into structured datasets