For the complete documentation index, see llms.txt. This page is also available as Markdown.

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.

Driver standings
Constructor standings

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

Field
Description
Type

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

Status
Likely cause

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?