F1 DataStop Docs

Data

Data sources & CDN layout

Sources & authority

APIUseAuthority
Jolpica/ErgastStandings, schedules, results, laps, pit stopsAuthoritative for identity, results, standings, schedule, round numbering. Community mirror — proxy-only, never redistributed to R2.
OpenF1Live timing, weather, team radio, headshots, starting grid, overtakesAuthoritative for session resources it uniquely provides (2023+). Live position/car data stays on the proxy; only post-session snapshots are warehoused.
FastF1Telemetry, sectors, compounds, stintsAuthoritative only for sector/compound/stint/ms-precision summaries. Never overwrites Ergast results.

DNF rule (shared by ingest and frontend): status='Finished' or matches +N Lap(s) ⇒ classified, else DNF.

R2 / CDN layout (cdn.f1datastop.com)

Default host constant in analysis/cdn_schedule.py; override with BLOB_PUBLIC_BASE. Path convention:

charts/<season>/<round>-<slug>/<session>/<format>/<chart>[__<DRIVERKEY>].png
telemetry/…  circuits/…  replays/…  weather/…  season JSON (data_export.py)

Chart pipeline (analysis/)

generate.py renders branded Deep Dive posters (Deep Carbon palette, race-country flag, @F1DataStop) from FastF1. Six comprehensive boards (race_analysis, driver_compare, season_scorecard, championship, constructors, circuit_history) plus 18 single-topic charts in the CHARTS registry. Local test writes to out/:

cd analysis
./venv/bin/python generate.py --season 2025 --round 13 --session R \
    --only race_analysis --no-upload --format landscape

season_scorecard is warehouse-backed — it needs SUPABASE_URL + a read (anon) key even with --no-upload. Full flag reference: analysis/POSTERS.md. Pipeline overview: analysis/README.md.