Open, pip-installable English Premier League match results with every bookmaker's odds kept intact — opening and closing lines — from 1993-94 to the present.
Most public "Premier League results" datasets throw away the betting odds. This one keeps them all — including opening and closing prices — which is what makes closing-line and market-efficiency analysis possible. Everything is cleaned into two tidy tables, shipped as CSV and Parquet, and bundled inside the package so they load in one line of Python — no download or scraping required.
pip install git+https://github.com/AnishKhetani/premier-league-data
import premier_league_data as pl
results = pl.load_results() # 12,700+ matches, all seasons
table = results[results.season == "2023-24"] # slice a single season
odds = pl.load_results_with_odds("2023-24") # same rows + every bookmaker's odds
print(pl.available_seasons()[:3]) # ['1993-94', '1994-95', '1995-96']
Two tables, each shipped as CSV and Parquet and bundled inside the package:
results — core match resultsOne row per match, standardized across every era: season, date, teams, full-time and
half-time goals and results, referee, and a stable match_id.
results_with_odds — results + all bookmaker oddsThe match-identity keys plus 183 odds columns — 1X2, over/under 2.5, and
Asian-handicap prices, with opening and _close (closing-line) values across
bet365, Pinnacle, William Hill, Bwin, Ladbrokes, Betfair and more. Odds are sparse: a column
is empty for seasons where that bookmaker or market wasn't quoted.
The data is reproducible end-to-end — nothing is hand-edited. A GitHub Actions workflow re-runs the pipeline weekly during the season and opens a PR when the current-season data changes. Full column specification is in SPEC.md.