Pricing
Football data for analysts, pundits and speculators
fleeing 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.
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.
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.
Starter
Full dataset access for personal projects, academic research, and model building.
Pro
Commercial licence and weekly refresh for production data products and apps.
Max
Daily refresh, highest volume limits, and sub-licence rights for data products.
-- 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;-- 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 coverageUse 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
Subscribe
Choose a tier and subscribe via Stripe. Your welcome email arrives instantly with a login link.
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.
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.
-- 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 PDFEarly 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.
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.
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.
Questions