Championship standings
This guide covers how to retrieve driver and constructor championship standings, enrich them with participant and round context, and use them to build championship tables and season dashboards.
When to use this
Use the Standings endpoints when you want to:
Display the current drivers' championship table
Display the current constructors' championship table
Show which race weekend standings are current as of
Track points gaps between drivers or constructors
Build a season summary page with final championship positions
Driver standings vs constructor standings
The Motorsport API provides separate endpoints for the World Drivers' Championship and the World Constructors' Championship. They share the same response shape but resolve participant_id to different entity types.
Endpoint
/standings/drivers/seasons/{id}
/standings/teams/seasons/{id}
participant_id resolves to
Driver profile
Team/constructor profile
Points source
Individual race finishes and sprint points
Combined points of both drivers
The Standing entity fields
id
Unique ID of the standing entry
integer
participant_id
ID of the driver or team
integer
sport_id
Sport ID
integer
league_id
The championship this standing belongs to
integer
season_id
The season this standing belongs to
integer
stage_id
The most recently completed race weekend this standing reflects
integer
position
Championship position (1 = leader)
string
points
Total accumulated points
integer
result, group_id, round_id, and standing_rule_id are not used in the Motorsport API.
Available includes
sport participant season league stage
participant resolves to the full driver or team profile depending on which endpoint you call. stage resolves stage_id to the race weekend name and date, useful for displaying "Standings after Round X" context.
Maximum include depth: 2 nested includes.
Retrieving standings
Current drivers' championship:
Current constructors' championship:
With round context (which race they reflect):
Lightweight (position and points only):
For all seasons rather than a specific one, use GET All Driver Standings or GET All Team Standings without the season path. The by-season endpoints are the right choice for most use cases to avoid fetching unnecessary historical data.
Working with the data
Build a drivers' championship table
Build a constructors' championship table
Show points gap to championship leader
Display which round standings are current as of
Common pitfalls
Using a single /standings endpoint to get both driver and constructor standings. These are separate endpoints: /standings/drivers/seasons/{id} for drivers and /standings/teams/seasons/{id} for constructors. You cannot get both from one call.
Using the "all standings" endpoints for current standings. GET All Driver Standings and GET All Team Standings return standings across every season. Always use the by-season-ID endpoints for a specific season's current standings.
position is a string, not an integer. Convert to integer before sorting: int(s["position"]) in Python, parseInt(s.position) in JavaScript.
Expecting result to show position movement. The result field is not used in the Motorsport API and is always null. Do not build UI logic around it.
Polling standings during a live race. Standings update after a session is marked as finished, not during. Fetch standings once after you detect the session state has changed to finished. See Session states.
Common errors
401
Missing or invalid api_token
404
The season ID does not exist or is not in your subscription
See also
Related tutorials
Reference
FAQ
How do I get the season ID to pass to the standings endpoint? See Leagues and seasons. The 2025 F1 season ID is 25273.
What is stage_id on a standing entry? It is the ID of the most recently completed race weekend that this standing reflects. Include stage to resolve it to the weekend name and round number, useful for displaying "Standings after Round X" in your UI.
Can I get standings after a specific race round? Use standingStages filter with the stage ID of the race weekend to get standings as they stood after that round.
How do I link a standing entry back to lap or result data? The participant_id on a standing entry is the same value as participant_id across laps, pitstops, stints, and race results endpoints. Use it directly to join standings data with session-level performance data.
Are sprint race points included in standings? Yes. Points from sprint races (where SPRINT_RACE metadata is true) are included in the season standings totals.
Last updated
Was this helpful?