Skip to main content
All JSON files in the F1 Stats Archive follow schemas based on the Ergast API format. This page documents the structure of each file type with real examples.

Common Structure

All JSON files share a common wrapper structure:
The MRData object contains metadata about the API response and wraps the actual race data.

Season-Level Files

Location: {year}/events.jsonDescription: Complete race calendar for the season with circuit information and session schedules.Schema:
Sprint Weekend Example:
Sprint weekends have Sprint and SprintQualifying fields instead of SecondPractice and ThirdPractice.
Location: {year}/driverPoints.jsonDescription: Final driver championship standings for the season.Schema:
Key Fields:
  • position: Championship position (1-20+)
  • points: Total points accumulated
  • wins: Number of race wins
  • driverId: Unique driver identifier (lowercase with underscores)
  • code: Three-letter driver code (e.g., VER, HAM, LEC)
Location: {year}/teamPoints.jsonDescription: Final constructor championship standings for the season.Schema:
Key Fields:
  • position: Championship position
  • points: Combined points from both drivers
  • wins: Number of race wins
  • constructorId: Unique team identifier

Race-Level Files

Location: {year}/{race-name}/event_info.jsonDescription: Race weekend information including circuit details and session schedule.Schema:
This is a simplified version of a single race entry from events.json.
Location: {year}/{race-name}/results.jsonDescription: Complete race results including finishing positions, times, and points.Schema:
Key Fields:
  • position: Finishing position (or classification)
  • positionText: Position as text (“1”, “2”, “R” for retired, “D” for disqualified)
  • grid: Starting grid position
  • laps: Laps completed
  • status: “Finished”, “Retired”, “Lapped”, etc.
  • Time.millis: Race time in milliseconds (winner only)
  • Time.time: Race time or gap to winner
  • FastestLap: Driver’s fastest lap information
Location: {year}/{race-name}/quali_results.jsonDescription: Qualifying results showing times from Q1, Q2, and Q3 sessions.Schema:
Key Fields:
  • Q1: Fastest lap time in Q1 session
  • Q2: Fastest lap time in Q2 session (if reached)
  • Q3: Fastest lap time in Q3 session (if reached)
Drivers eliminated in Q1 only have Q1 times. Drivers eliminated in Q2 have Q1 and Q2 times. Top 10 drivers have all three times.
Location: {year}/{race-name}/laptimes.jsonDescription: Lap-by-lap timing data for every driver throughout the race.Schema:
Key Fields:
  • number: Lap number
  • Timings: Array of all drivers’ times for this lap
  • position: Position at the end of this lap
  • time: Lap time
This file can be very large (100+ KB) for modern races with 50+ laps and 20 drivers.
Location: {year}/{race-name}/pitstops.jsonDescription: All pit stop data including lap number, stop duration, and time of day.Schema:
Key Fields:
  • lap: Lap number when pit stop occurred
  • stop: Stop number for this driver (1, 2, 3, etc.)
  • time: Local time of day (HH:MM:SS)
  • duration: Pit stop duration in seconds
Use duration to compare pit stop efficiency across teams and races.
Location: {year}/{race-name}/sprint_results.json (sprint weekends only)Description: Sprint race results with positions, times, and points awarded.Schema:
Sprint Points (2024):
  • 1st: 8 points
  • 2nd: 7 points
  • 3rd: 6 points
  • 4th: 5 points
  • 5th: 4 points
  • 6th: 3 points
  • 7th: 2 points
  • 8th: 1 point
Sprint race format and points have changed over the years. Always check the points field for actual points awarded.

Common Data Types

Driver Object

Appears in all race data:

Constructor Object

Appears in all race data:

Circuit Object

Appears in event files:

Time Object

Appears in results:

Data Validation

Field PresenceNot all fields are guaranteed to exist in every record:
  • FastestLap may be missing for retired drivers
  • Time may be missing for non-finishers
  • AverageSpeed appears inconsistently
  • Historical data may have fewer fields
Consistent IdentifiersUse these IDs for consistent lookups across files:
  • driverId: “max_verstappen”, “hamilton”, “leclerc”
  • constructorId: “red_bull”, “ferrari”, “mclaren”
  • circuitId: “monaco”, “silverstone”, “monza”

Next Steps

Data Structure Overview

Return to the overview for navigation guidance

Directory Layout

See how files are organized on disk