Download Our Data

Football data for analysts, pundits and speculatorsfleeing FBref.

The community's go-to free source just went behind a paywall. Download 1M+ match records as clean CSVs, query via REST API, or write SQL directly in BigQuery — 306 columns per appearance, 23 leagues, 6 seasons. From $5/mo.

The pricing tier that doesn't exist anywhere else

StatsBomb and Opta charge $100,000+/year and only sell to clubs and broadcasters. Free CSV scrapes exist but are dirty, manually assembled, and months behind. Nobody is at the $50–$500/mo tier: clean, ML-ready, SQL-queryable football data with a commercial licence.

Monthly Annual 2 months free
Now Live

XY Event Data · 368M rows · 23 leagues · 6 seasons

match_events is now queryable — every pass, shot, tackle, and touch across all 23 leagues with Opta pitch coordinates (x/y, 0–100 scale). Build shot maps, heatmaps, and pressing models directly in BigQuery.

dribble360.football.match_events

Starter

$49/mo

Full dataset access for personal projects, academic research, and model building.

All 8 datasets · 1M+ player-match records
306 columns per appearance · 303 per team match
23 leagues · 2020–present
match_events with XY coordinates · 368M rows · all 23 leagues
Direct SQL access via BigQuery console
Personal & academic use licence
Monthly refresh
Player core fields (name, slug, nationality) — biographical data (DOB, height, weight, foot) available on Pro and above

Pro

$149/mo
Popular

Commercial licence and weekly refresh for production data products and apps.

Everything in Starter
Full player biographical data — date of birth, height, weight, preferred foot, nationality
Weekly refresh guarantee (7-day max, data typically lands within 24–48hr of final whistle)
Commercial use licence — build & sell apps, dashboards, models, and published research using Dribble360 data (raw data redistribution to third parties not included)
Priority support

Max

$499/mo

Daily refresh, highest volume limits, and sub-licence rights for data products.

Everything in Pro
Daily refresh (48-hour max guarantee)
Sub-licence rights — package and distribute the raw dataset to your own clients
Dedicated support
Custom coverage on request
player_stats.sql
-- Mbappé xG per season — runs in <1s, costs <$0.01
SELECT s.name AS season,
       COUNT(*) AS appearances,
       ROUND(SUM(pm.expected_goals), 2) AS total_xg,
       ROUND(AVG(pm.expected_goals), 3) AS xg_per_90
FROM  `dribble360.football.player_matches` pm
JOIN  `dribble360.football.players` p ON p.id = pm.player_id
JOIN  `dribble360.football.matches`  m ON m.id = pm.match_id
JOIN  `dribble360.football.seasons`  s ON s.id = m.season_id
WHERE p.known_name = 'Mbappé'
GROUP BY s.name
ORDER BY s.name DESC;
New · XY Datashot_map.sql
-- Salah shot map, 2025/26 Premier League — x/y in Opta 0–100 pitch coords
SELECT me.x, me.y, me.outcome,
       m.date, t.name AS opponent
FROM  `dribble360.football.match_events` me
JOIN  `dribble360.football.matches`   m  ON m.id  = me.match_id
JOIN  `dribble360.football.seasons`   s  ON s.id  = m.season_id
JOIN  `dribble360.football.teams`     t  ON t.id != me.team_id
WHERE me.player_id = (SELECT id FROM `dribble360.football.players` WHERE known_name = 'Mohamed Salah')
  AND me.type = 'SHOT'
  AND s.name = '2025/26'
  AND m.league_id = 'english-premier-league';
-- x=0 defensive end · x=100 attacking end · 100% XY coverage

Use Cases

Built For

Data Scientists & ML Engineers

Query 1M+ player-match records in seconds with standard SQL. Skip the ETL — train xG models, compute feature vectors, run clustering directly in BigQuery.

Analytics Product Teams

Build on 8 joined tables with a commercial licence. No API keys, no rate limits, no pagination — just SQL. Your GCP project, your compute, your pricing.

Quant Researchers

Backtest across 6 seasons of match data in milliseconds. Compute per-90 windows, player-pair correlations, and form-adjusted expected points — at a fraction of enterprise data costs.

Process

How BigQuery Access Works

1

Subscribe

Choose a tier and subscribe via Stripe. Your welcome email arrives instantly with a login link.

2

Submit Your GCP Email

Log in to your subscriber dashboard and enter the Google account or service account email you'll query from. Takes 30 seconds.

3

Query Instantly

We grant IAM read access on the dribble360.football dataset. Open BigQuery console, run any SQL, pay Google pennies per TB scanned. No rate limits, no API keys.

Schema

BigQuery-Native Structure

Eight tables, consistent IDs, ready for SQL. Query 1M+ rows without loading a single CSV.

bigquery.sql
-- Top scorers, Premier League 2025/26
SELECT p.known_name, SUM(pm.goals) AS goals
FROM `dribble360.football.player_matches` pm
JOIN `dribble360.football.matches`  m ON m.id = pm.match_id
JOIN `dribble360.football.players`  p ON p.id = pm.player_id
JOIN `dribble360.football.seasons`  s ON s.id = m.season_id
WHERE s.name = '2025/2026'
  AND m.league_id = 'epl'
GROUP BY p.known_name
ORDER BY goals DESC
LIMIT 10;

Schema reference PDF with every table, column family, and query example.

Download BigQuery Schema PDF

Early feedback

What analysts are saying.

"

Finally stopped patching together CSVs from FBRef. The player_matches dataset alone is worth the subscription — 306 columns per appearance, six seasons, clean entity IDs. Ready for pandas in 30 seconds.

JT
Jamie T.
Data Scientist, Fantasy Football Platform
"

Our xG model runs entirely off the API now. Generous rate limits, consistent column names, and the BigQuery tier meant we could benchmark 1M rows without spinning up our own infra.

RL
Research Lead
Sports Analytics Consultancy
"

I write about football for a living. The BigQuery access changed how I work — I can pull career arcs for any player across Europe in under a minute. Nothing else at this price comes close.

AM
Alex M.
Football Journalist & Analyst

Questions

FAQ

Made With 💜 For The Game

Dribble Inc. • 44 Tehama St. • San Francisco, CA

94105

Privacy Policy