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

Schedule

This guide covers how to retrieve the full race calendar for a season using the Schedules endpoint, and what data is available at the schedule level.

When to use this

Use the Schedules endpoint when you want to:

  • Retrieve all race weekends for a season in a single call, each with their sessions and venue

  • Build a season calendar view showing all rounds with dates and circuit names

  • Get a structured overview of the season without querying each stage individually

What the schedule returns

The Schedule is a denormalised view that combines stage, fixture, and venue data for a given league and season in one response. Unlike querying stages or fixtures separately, the Schedules endpoint returns all three together without requiring nested includes.

The Schedule entity contains three nested objects per race weekend:

  • Stages - the race weekend itself (e.g. "Bahrain Grand Prix 2025")

  • Fixtures - each individual session within that weekend (Practice 1, Qualifying, Race, etc.)

  • Venues - the circuit where the weekend takes place

Retrieving the schedule

The Schedules endpoint requires a season_id. See Leagues and seasons for how to find it.

GET https://api.sportmonks.com/v3/motorsport/schedules/seasons/{season_id}
?api_token={your_token}

A schedule response looks like this (partial):

Note the leg field on each fixture. It shows the session's position within its session type: "1/3" means Practice 1 of 3, "3/3" means the third qualifying session. For race sessions it returns "1/1". The length field returns planned session length in minutes for practice and qualifying, and total lap count for race sessions.

Working with the data

Build a race calendar

Find the next upcoming race weekend

Common pitfalls

Querying by league_id instead of season_id. The Schedules endpoint requires a season_id. Pass the league ID to the seasons endpoint first to resolve the current season. See Leagues and seasons.

Assuming venues always has one entry. The venues array on each round is a list. In all known cases it contains exactly one entry per round, but defensively access it as venues[0] with a null check.

Matching session type by name string. Session names like "Practice 1" and "Race" are reliable across the current dataset, but can vary for sprint weekends (where "Practice 1" may be replaced by "Sprint Qualifying"). Check the leg field as a secondary signal for session ordering.

The Schedule entity has no include options. Unlike Fixtures or Stages, the Schedule endpoint returns stages, fixtures, and venues as a flat embedded response. There are no additional includes available on this endpoint.

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

What is the difference between the Schedule endpoint and the Stages endpoint? The Schedule endpoint returns a denormalised view of the entire season at once, combining stages, fixtures, and venues in a single response without extra includes. The Stages endpoint returns stages individually or paginated, with includes available to attach fixtures separately. Use Schedule for building a full season calendar; use Stages when you need more control over what gets included.

Does the Schedule endpoint paginate? Yes. For a full season with 24 rounds, the default page size of 25 is usually sufficient, but use cursor pagination to be safe. See Pagination.

How do I tell if a race weekend has a sprint race? Check the fixture names within a round. Sprint weekends replace one practice session with a sprint qualifying and sprint race session. The leg field will also reflect the changed session count.

Last updated

Was this helpful?