πŸ”‚Laps

🏎️ Motorsport API Required

All Laps endpoints require an active Motorsport API subscription (€79/mo, 3,000 API calls/hr).

View pricing β†’arrow-up-right

A lap represents a single circuit completion by a driver during a motorsport fixture. Lap data is always scoped to a specific fixturearrow-up-right (session) and driver. It is available for race sessions and, where timing data is captured, for qualifying and practice sessions too.

circle-info

Use the Laps endpoints to retrieve lap-by-lap timing for post-race analysis, build historical lap charts, or power live timing displays during an active session.

Use the details include to enrich each lap with sector times and total lap duration. The type reference for these details is described in the Results & Live Data Type Referencearrow-up-right.

Available endpoints

Include options

fixturearrow-up-right, participantarrow-up-right, details

circle-info

Want to keep responses lighter and faster? Use select to request only the fields you need. See: Request optionsarrow-up-right

Using details

The base lap response returns only the lap number, driver number, and participant ID. Add ?include=details to get the full timing breakdown per lap:

  • LAP_DURATION - total lap time in milliseconds

  • SECTOR_1, SECTOR_2, SECTOR_3 - individual sector times in milliseconds

These are the type developer_name values. Resolve them via the Results & Live Data Type Referencearrow-up-right.

Include depth: Laps endpoints support a maximum of 2 nested includes. This is shallower than most other Motorsport API endpoints - plan your include chains accordingly.

Choosing the right endpoint

Use case
Endpoint to use

Full post-session lap history for all drivers

GET Laps by Fixture ID

Full lap history for one driver

GET Laps by Fixture ID and Driver ID

Live timing - most recent lap per driver

GET Latest Laps by Fixture ID

All drivers' data for a specific lap number

GET Laps by Fixture ID and Lap Number

Full laps vs latest laps

The full laps endpoint (/fixtures/FIXTURE_ID/laps) returns every lap recorded in the session for every driver. In a 70-lap race with 20 drivers, this is up to 1,400 records. This endpoint has no pagination - all records are returned in a single response. It is best suited to post-session analysis once a fixture is complete.

The latest laps endpoint (/fixtures/FIXTURE_ID/laps/latest) returns only the most recently completed lap per driver - a maximum of 20 records regardless of race distance. This is the correct endpoint for live timing displays. Poll it at a sensible interval (10-15 seconds) rather than the full laps endpoint, which grows with every lap and becomes increasingly expensive to process as a race progresses.

Working with lap fields

  • lap_number - the lap number within the session. Lap 1 is the first lap after the start/safety car release. In qualifying sessions, laps are numbered sequentially per driver.

  • driver_number - the driver's race number (e.g. 3 for Verstappen, 44 for Hamilton). This is the number displayed on the car, not a database ID.

  • participant_id - the unique ID of the driver entity in the Motorsport API. Resolve it with ?include=participant to get the driver's name, nationality, and other profile data.

  • is_latest - true for the most recently completed lap per driver in the session. In the full laps endpoint this flag will be true on only one record per driver - the last lap they completed. It is always true on all records returned by the latest laps endpoint.

Common requests

All laps in a completed race session with sector times:

Full lap history for a single driver with sector times:

Live timing - most recent lap per driver:

All drivers' lap times on a specific lap (e.g. lap 42):

circle-info

For live session timing, laps data is also available as an include directly on fixture and livescores responses via latestLaps. This avoids a separate API call when you are already fetching session state: ?include=lineups.details;latestLaps. Use the dedicated Laps endpoints when you need full lap history or per-lap breakdown independently of fixture data.

Get an overview and explanation of all the fields returned in the API response:

Last updated

Was this helpful?