Stages
This guide covers how stages work in the Motorsport API, how to retrieve them, and how to use them to access the sessions within a race weekend.
When to use this
Use the Stages endpoints when you want to:
Retrieve a specific race weekend by its ID
List all race weekends in a season with their dates and status
Get all sessions (fixtures) for a specific race weekend
Check whether a race weekend is finished or currently active
What a stage is
A stage represents a race weekend. It groups all the individual sessions at a single circuit: practice sessions, qualifying, the sprint race (if applicable), and the main race. Each session within the weekend is a Fixture.
Stage (race weekend: "Bahrain Grand Prix 2025")
βββ Fixtures
βββ Practice 1
βββ Practice 2
βββ Practice 3
βββ Qualifying
βββ RaceThe Stage entity fields
id
Unique ID of the stage
sport_id
Sport ID (2 for Motorsport)
league_id
The championship this weekend belongs to
season_id
The season this weekend belongs to
type_id
The stage type (e.g. race weekend, test session)
name
The name of the race weekend (e.g. "Bahrain Grand Prix 2025")
sort_order
The round number within the season
finished
Whether the weekend is complete
is_current
Whether this is the current active race weekend
starting_at
Start date of the weekend
ending_at
End date of the weekend
games_in_current_week and tie_breaker_rule_id are not used in the Motorsport API.
Retrieving stages
Get all stages for a season:
Get a specific stage by ID:
Get all sessions within a stage:
Get stages with their type resolved:
Available includes
sport league season type fixtures
Working with the data
List all race weekends in a season
Get all sessions for a race weekend
Find the current active race weekend
Common pitfalls
Using the Schedule endpoint when you need includes. The Schedule endpoint returns a denormalised view of stages and fixtures together, but has no include options. If you need to attach results, lineups, or venue details to fixtures within a weekend, query the stage with &include=fixtures first, then enrich individual fixtures via the Fixtures endpoint.
Confusing sort_order with id. sort_order is the round number within the season (1, 2, 3...). id is the unique database ID of the stage. Use sort_order for display and sorting, id for API lookups.
finished returns a boolean, is_current also returns a boolean. Both are true booleans on the Stage entity (unlike is_current on Season which returns an integer). Check the entity page for the specific type of each field before writing comparison logic.
type_id requires a separate lookup. The stage type (e.g. race weekend vs test session) is an integer ID that maps to a type entity. Include type to get the human-readable label, or fetch all types once and cache them locally.
Common errors
401
Missing or invalid api_token
404
The stage_id does not exist or is not in your subscription
See also
Related tutorials
Reference
FAQ
What is the difference between a stage and a fixture? A stage is the race weekend as a whole. A fixture is a single session within that weekend (e.g. Practice 1 or the Race). A stage contains multiple fixtures.
How do I find a stage ID if I only know the race name or round number? Query all stages for the season with stageSeasons filter, then match on name or sort_order.
Does each season always start at sort_order 1? Yes. sort_order reflects the round number within the season, starting at 1.
How do I tell if a weekend has a sprint race? Fetch the stage with &include=fixtures and check the fixture names. A sprint weekend will include a "Sprint Qualifying" and "Sprint" fixture in addition to the standard sessions.
Last updated
Was this helpful?