Formula 1 Fundamentals
The Formula 1 API is stage-based: every level of the sport, from the championship down to a single lap, is modeled as a stage, and you move between levels by changing one path parameter, the stage ID. The rest of this guide builds on the stage hierarchy, so start here.
The Stage Hierarchy
A stage can contain sub-stages, which can contain their own sub-stages. Each level nests inside the one above, and the chips on the right are the type values you branch on:
Every node in this hierarchy is a stage with its own sr:stage: ID, and the Stage Summary feed reads any of them by that ID; the level you get back depends on the ID you pass:
Stage Types
| Stage Type | type value | Information included | Sub-stages |
|---|---|---|---|
| Sport | sport | The seasons available (current and previous only) | Seasons |
| Season | season | Season schedule, driver and team standings, and statistics | Events |
| Event | event | A single Grand Prix: competitors, teams, and the circuit | Sessions |
| Practice | practice | Practice competitors and results (fastest times) | None |
| Qualifying | qualifying | Conditions, competitors, and overall qualifying results | Qualifying Parts |
| Qualifying Part | qualifying_part | Conditions, competitors, and results for Q1, Q2, or Q3 | None |
| Sprint Race | sprint_race | Sprint competitors, laps, and results | Laps |
| Race | race | Race competitors, lap-by-lap data, and overall results | Laps |
| Lap | lap | Per-lap driver positions, gaps, and times | None |
The full table with definitions lives in the Stage Types reference.
Probabilities Apply Only to Some StagesWin probabilities are returned for the
season,event, andracestages only. Thesport,practice,qualifying, andlapstages do not return valid probability data. See Retrieving Race Probabilities.
Where to Start: Seasons
The starting point for any integration is the Seasons feed. It returns every covered season as a season stage. Note the id of the season you want and use it as the stage ID for the next call.
{
"generated_at": "2026-06-13T05:05:04+00:00",
"schema": "https://schemas.sportradar.com/sportsapi/formula1/v2/schemas/seasons.json",
"stages": [
{
"id": "sr:stage:1285547",
"description": "Formula 1 2026",
"scheduled": "2026-03-06T01:30:00+00:00",
"scheduled_end": "2026-12-06T15:00:00+00:00",
"type": "season",
"category": { "id": "sr:category:36", "name": "Formula 1" },
"sport": { "id": "sr:sport:40", "name": "Formula 1" },
"single_event": false
},
{
"id": "sr:stage:1189123",
"description": "Formula 1 2025",
"scheduled": "2025-03-14T01:35:00+00:00",
"scheduled_end": "2025-12-07T15:00:00+00:00",
"type": "season",
"category": { "id": "sr:category:36", "name": "Formula 1" },
"sport": { "id": "sr:sport:40", "name": "Formula 1" },
"single_event": false,
"gender": "men"
}
]
}The list above is trimmed to two seasons; the live feed returns the full list of available seasons. See Historical Data for working with past seasons.
Drilling Into the Tree
Passing a season stage ID to Stage Schedule returns that season's events, each with its sessions nested inside, each with its own stage ID. The excerpt below shows one event (the 2025 Australian Grand Prix) with its practice, qualifying (and its three parts), and race sessions:
{
"stages": [
{
"id": "sr:stage:1189125",
"description": "Australian Grand Prix 2025",
"type": "event",
"status": "Closed",
"unique_stage_id": "sr:stage_unique:1",
"venue": {
"id": "sr:venue:1011",
"name": "Albert Park Circuit",
"city": "Melbourne",
"country": "Australia",
"length": 5278,
"timezone": "Australia/Melbourne"
},
"stages": [
{ "id": "sr:stage:1189127", "description": "Practice 1", "type": "practice", "status": "Closed" },
{ "id": "sr:stage:1189129", "description": "Practice 2", "type": "practice", "status": "Closed" },
{ "id": "sr:stage:1189131", "description": "Practice 3", "type": "practice", "status": "Closed" },
{
"id": "sr:stage:1189133",
"description": "Qualification",
"type": "qualifying",
"status": "Closed",
"stages": [
{ "id": "sr:stage:1189141", "description": "Q1", "type": "qualifying_part" },
{ "id": "sr:stage:1189143", "description": "Q2", "type": "qualifying_part" },
{ "id": "sr:stage:1189145", "description": "Q3", "type": "qualifying_part" }
]
},
{ "id": "sr:stage:1189139", "description": "Race", "type": "race", "status": "Closed" }
]
}
]
}Each venue object is trimmed above; the live feed also returns capacity, coordinates, lap count, corner counts, and the official website. To read the result of any node, pass its id to Stage Summary. See Pulling Schedules.
Knowing Which Stage You Are On
Every stage carries a type attribute that tells you what you are looking at. Branch on type rather than on the description text, which is localized:
seasonresponses carrycompetitors(drivers) andteams(constructors) with championshipresultobjects.raceandsprint_raceresponses carry acompetitorslist with finishing results and a nestedstageslist oflapstages.lapresponses carry the running order at that lap.
The Shared result Object
result ObjectAcross stage types, each competitor's per-stage data lives in a result object. The same object is reused for every stage type, but only the fields meaningful to that stage are populated, so always check the stage type before interpreting a result. For example:
- In a race result you get
position,points,grid,time,gap_to_leader,interval_to_position_ahead,laps,lapsled,pitstop_count,fastest_lap_time,status, andsubstatus. - In a season (standings) result you get championship aggregates:
points,position,victories,podiums,polepositions,fastest_laps,races,races_with_points, andcar_number. - In a lap result you get only the running-order fields:
position,gap_to_leader,interval_to_position_ahead,status, andsubstatus.
The Statistics Summary reference lists exactly which fields each stage type returns.
Concept-to-Feed Map
| You want... | Use this feed | Pass this stage / ID |
|---|---|---|
| The list of seasons | Seasons | (none) |
| A season's events and sessions | Stage Schedule | a season stage ID |
| Driver and constructor standings | Stage Summary | a season stage ID |
| Event detail, competitors, circuit | Stage Summary | an event stage ID |
| Race, qualifying, practice, or sprint results | Stage Summary | the session's stage ID |
| Lap-by-lap running order | Stage Summary | a lap stage ID |
| Win probabilities | Stage Probabilities | a season, event, or race stage ID |
| Driver biography | Competitor Profile | a competitor_id |
| Team / car details | Team Profile | a competitor_id |
| Deleted stages in a season | Deleted Stages | a season stage ID |
| Merged competitor IDs | Competitor Merge Mappings | (none) |
Next Steps
- Learn how stages move through their lifecycle in Race Status Workflow.
- Learn the ID model in depth in ID Handling.
- Jump to a worked example from the Integration Scenarios landing page.
Updated 8 days ago
