Documentation
BigQuery Data Access
SQL access to a dataset published for your tier. Run queries from your own Google Cloud billing project; Google charges for query compute under its pricing and quotas.
Plans, datasets, and licence
Starter · $49/month
dribble360.football_starterPersonal and academic use. Monthly publication. Core player fields; DOB, height, weight, and foot are excluded.
Pro · $149/month
dribble360.football_proCommercial derived products, weekly publication, and available player biography. Raw redistribution is excluded.
Max · $499/month
dribble360.football_maxDaily validated publication, enriched Premier League events, named lineups, ordering, and captured revision history. A seven-day evaluation is available only when the product passes publication checks.
Pro and Max permit commercial derived products. Raw-data redistribution is not included by default. Any negotiated raw-data retention or redistribution rights require a separately signed Max order form and licence addendum, subject to Dribble’s upstream rights. The signed agreement and Terms of Service govern your use.
Getting access
Choose a tier, then open /bq-subscribers and connect the Google account or service-account email you will query from. Dribble grants access to that tier’s dataset and project discovery. Your identity also needs permission to run BigQuery jobs in your own billing project. Checkout and connection require a current, validated publication.
Use football_starter, football_pro, or football_max as assigned in your workspace. The canonical football dataset is the internal publication source, not the subscriber dataset.
Tables included in every tier
13 data tables, plus product_manifest. Entity tables and appearance/assignment tables are separate.
playersPlayer directory7 core columns on Starter; 11 including biography on Pro/MaxteamsTeam directoryJoin by team IDmanagersManager directorySeparate from manager assignmentsrefereesOfficial directorySeparate from match rolesleaguesCompetitionsJoin seasons.league_id to idseasonsSeason catalogCompetition-specific season labelsmatchesFixtures and results8 BigQuery columns; differs from CSV/RESTplayer_matchesPlayer statisticsFilter through matches and seasonsteam_matchesTeam statisticsOne team side per matchmanager_matchesManager assignmentsmanager_id, team_id, match_id, typereferee_matchesOfficial assignmentsRole-specific available statisticstransfersHistorical club movementsArchived; collection paused; through 15 May 2026match_eventsPitch events13 columns on Starter/Pro; Max also includes period_idMax event detail
Max adds 7 tables, for 20 data tables plus the manifest. Enriched event detail is specific to the Premier League; do not assume every competition has these fields.
premier_league_eventsEnriched events with unique keys, periods, pass end coordinates, qualifiers, and deterministic ordering fields.
premier_league_event_qualifiersNormalized qualifier types, order, and values keyed to the event.
premier_league_lineupsNamed players, starters and bench, positions, formation places, and formations where recorded.
premier_league_event_typesPublished event-type counts by season.
premier_league_event_versionsCaptured content revisions with observation times, row hashes, and provenance.
premier_league_publicationsPublication history and event-row counts.
premier_league_metadataCoverage start, ordering semantics, as-of rules, and explicit historical limitations.
Standard event coordinates use the Opta 0–100 pitch system. Coordinates and player attribution can be null. Pressure data is not available. Provider event IDs restart per team: use event_key for identity, and the published team/match sequence fields for deterministic ordering. Revision history begins at its recorded coverage start; the archive does not reconstruct revisions from before capture began.
Check publication and schema
The following examples use Pro. Substitute your assigned tier. A ready manifest records a validated publication; its timestamp does not prove every upstream feed has equal completeness. Compare coverage dates for the specific analysis.
SELECT * FROM `dribble360.football_pro.product_manifest`;
SELECT table_name, column_name, data_type, is_nullable
FROM `dribble360.football_pro.INFORMATION_SCHEMA.COLUMNS`
ORDER BY table_name, ordinal_position;
SELECT l.known_name AS competition, s.name AS season,
COUNT(*) AS recorded_matches, MAX(m.date) AS latest_fixture
FROM `dribble360.football_pro.matches` m
JOIN `dribble360.football_pro.seasons` s ON s.id = m.season_id
JOIN `dribble360.football_pro.leagues` l ON l.id = s.league_id
GROUP BY competition, season
ORDER BY competition, season DESC;Example analysis
Premier League player totals and xG per 90 minutes, using named player and season IDs. Appearance rows with no minutes are excluded.
SELECT p.id, COALESCE(p.known_name, p.name) AS player,
SUM(pm.goals) AS goals,
ROUND(SAFE_DIVIDE(SUM(pm.expected_goals) * 90,
SUM(pm.mins_played)), 3) AS xg_per_90
FROM `dribble360.football_pro.player_matches` pm
JOIN `dribble360.football_pro.players` p ON p.id = pm.player_id
JOIN `dribble360.football_pro.matches` m ON m.id = pm.match_id
JOIN `dribble360.football_pro.seasons` s ON s.id = m.season_id
JOIN `dribble360.football_pro.leagues` l ON l.id = s.league_id
WHERE s.name = '2025/2026' AND l.slug = 'premier-league'
AND pm.mins_played > 0
GROUP BY p.id, player
ORDER BY goals DESC
LIMIT 20;Coverage and freshness
Source ingestion is scheduled daily. Starter publishes monthly, Pro weekly, and Max after successful daily publication and contract validation. This is post-match data. Season depth and event detail vary by competition and round; calendar-year leagues use different season labels. Inspect the workspace samples, seasons, and the metadata queries before building a model. BigQuery access has no Dribble REST request quota; Google Cloud quotas and compute charges still apply.