Match identity & results
Teams, kickoff time, league, tournament, stage, status, final and half-time scores.
Gamblistics is a curated dataset of football (soccer) matches, teams, lineups and per-player statistics - designed from the ground up to train models that predict prediction-market outcomes.
Public. Community-first. Continuously growing.
Match-level and player-level data collected from live football matches, joined by stable UUIDs.
Teams, kickoff time, league, tournament, stage, status, final and half-time scores.
Possession, shots (on / off / blocked), corners, xG, passes, cards, offsides, fouls, saves - split by overall, first half, second half.
Starting XI, substitutes, formations, jersey numbers, tactical positions, minutes on/off, captains, goalkeepers and coaches.
~100 metrics per player per match - xG, shots, passing accuracy, duels, ratings and more. Top leagues, 2024–25 season onward.
Most public football data is raw, messy and hard to join. Gamblistics fixes that.
Delivered as columnar Parquet files with a documented schema. Load straight into pandas, Polars, DuckDB or Spark.
One canonical UUID per entity - match, team, player, league, tournament. Joins across tables are trivial and stable over time.
Match-level, team-level (per period) and per-player metrics in one coherent, aligned dataset.
Designed to support calibrated probability models for final score (Poisson λhome/λaway), 1H score, total corners, over/under 1.5 & 2.5 goals, time of first goal.
Continuously refreshed from live matches through our collection pipeline. New matches, players and tournaments land regularly.
Free to download and use. We want researchers, students and quants building on top of it - no gatekeeping.
Approximate figures - growing every week.
A note on coverage. Per-player statistics are biased toward top leagues from the 2024–25 season onward. Match, team and lineup coverage is broader. We're being upfront so you can plan your modeling accordingly.
Every entity has a stable UUID. Every table joins on those UUIDs.
countriesleaguestournamentsseasonsstagesteamsplayersmatches - identity, kickoff, score, statusmatch_team_stats - per period (overall / 1H / 2H)match_lineups - XI, subs, formations, minutesmatch_player_stats - ~100 metrics / player / matchmatch_idteam_idplayer_idleague_id / tournament_idThe dataset is public. Download it, join it, model it - and let us know what you build.
# Python · Polars
import polars as pl
matches = pl.read_parquet("hf://datasets/gamblistics-lab/sport-statistics/matches.parquet")
stats = pl.read_parquet("hf://datasets/gamblistics-lab/sport-statistics/match_team_stats.parquet")
df = matches.join(stats, on="match_id", how="left")