F1 API
Welcome to the BALLDONTLIE F1 API. This API contains comprehensive F1 data including drivers, teams, circuits, events, sessions, lap times, pit stops, and much more. An API key is required. You can obtain an API key by creating a free account on our website. Read the authentication section to learn how to use the API key.
Take a look at our other APIs.
Join us on discord.
AI-Powered Integration
Using the OpenAPI Specification with AI
Our complete OpenAPI specification allows AI assistants to automatically understand and interact with our API. Simply share the spec URL with your AI assistant and describe what you want to build--the AI will handle the technical implementation.
Getting Started with AI:
- Copy this URL:
https://www.balldontlie.io/openapi.yml - Share it with your preferred AI assistant (ChatGPT, Claude, Gemini, etc.)
- Tell the AI what you want to build (e.g., "Create a dashboard showing the current F1 driver standings")
- The AI will read the OpenAPI spec and write the code for you
Example prompts to try:
- "Using the OpenAPI spec at https://www.balldontlie.io/openapi.yml, show me how to get Max Verstappen's lap times"
- "Read the BALLDONTLIE OpenAPI spec and create a Python script that fetches F1 race results"
- "Help me understand the available F1 endpoints from this OpenAPI spec: https://www.balldontlie.io/openapi.yml"
This makes it incredibly easy for non-technical users, analysts, and researchers to leverage our sports data without needing to learn programming from scratch.
Account Tiers
There are three different account tiers which provide you access to different types of data. Visit our website to create an account for free.
Paid tiers do not apply across sports. The tier you purchase for F1 will not automatically be applied to other sports. You can purchase the ALL-ACCESS ($299.99/mo) tier to get access to every endpoint for every sport.
Read the table below to see the breakdown.
| Endpoint | Free | ALL-STAR | GOAT |
|---|---|---|---|
| Drivers | Yes | Yes | Yes |
| Teams | Yes | Yes | Yes |
| Circuits | Yes | Yes | Yes |
| Seasons | Yes | Yes | Yes |
| Events | Yes | Yes | Yes |
| Sessions | No | Yes | Yes |
| Session Results | No | Yes | Yes |
| Driver Standings | No | Yes | Yes |
| Team Standings | No | Yes | Yes |
| Lap Times | No | No | Yes |
| Qualifying Results | No | No | Yes |
| Pit Stops | No | No | Yes |
| Tire Stints | No | No | Yes |
| Session Weather | No | No | Yes |
| Race Control Messages | No | No | Yes |
| Position History | No | No | Yes |
| Session Timing Stats | No | No | Yes |
| Track Status | No | No | Yes |
The feature breakdown per tier is shown in the table below.
| Tier | Requests / Min | $USD / mo. |
|---|---|---|
| GOAT | 600 | 39.99 |
| ALL-STAR | 60 | 9.99 |
| Free | 5 | 0 |
Authentication
To authorize, use this code:
curl "api_endpoint_here" -H "Authorization: YOUR_API_KEY"
const response = await fetch("api_endpoint_here", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"api_endpoint_here",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
Make sure to replace
YOUR_API_KEYwith your API key.
BALLDONTLIE uses API keys to allow access to the API. You can obtain an API key by creating a free account at our website
We expect the API key to be included in all API requests to the server in a header that looks like the following:
Authorization: YOUR_API_KEY
Pagination
This API uses cursor based pagination rather than limit/offset. Endpoints that support pagination will send back responses with a meta key that looks like what is displayed on the right.
{
"meta": {
"next_cursor": 90,
"per_page": 25
}
}
You can use per_page to specify the maximum number of results. It defaults to 25 and doesn't allow values larger than 100.
You can use next_cursor to get the next page of results. Specify it in the request parameters like this: ?cursor=NEXT_CURSOR.
Errors
The API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 401 | Unauthorized - You either need an API key or your account tier does not have access to the endpoint. |
| 400 | Bad Request -- The request is invalid. The request parameters are probably incorrect. |
| 404 | Not Found -- The specified resource could not be found. |
| 406 | Not Acceptable -- You requested a format that isn't json. |
| 429 | Too Many Requests -- You're rate limited. |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |
Drivers
Get All Drivers
curl "https://api.balldontlie.io/f1/v1/drivers" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/f1/v1/drivers", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/drivers",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 21956,
"first_name": "Max",
"last_name": "Verstappen",
"display_name": "Max Verstappen",
"short_name": "M. Verstappen",
"country_code": "NED",
"country_name": "Netherlands",
"racing_number": "1"
},
{
"id": 21957,
"first_name": "Lando",
"last_name": "Norris",
"display_name": "Lando Norris",
"short_name": "L. Norris",
"country_code": "GBR",
"country_name": "Britain",
"racing_number": "4"
}
],
"meta": {
"next_cursor": 21957,
"per_page": 2
}
}
This endpoint retrieves all drivers.
HTTP Request
GET https://api.balldontlie.io/f1/v1/drivers
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| search | false | Filter by driver name |
| country_code | false | Filter by country code (e.g., "NL", "GB") |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Teams
Get All Teams
curl "https://api.balldontlie.io/f1/v1/teams" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/f1/v1/teams", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/teams",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
},
{
"id": 806,
"name": "Ferrari",
"display_name": "Ferrari",
"color": "DC0000"
}
],
"meta": {
"next_cursor": 806,
"per_page": 2
}
}
This endpoint retrieves all teams.
HTTP Request
GET https://api.balldontlie.io/f1/v1/teams
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| search | false | Filter by team name |
| team_ids[] | false | Filter by specific team IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Circuits
Get All Circuits
curl "https://api.balldontlie.io/f1/v1/circuits" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/f1/v1/circuits", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/circuits",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 307,
"name": "Bahrain",
"short_name": "Bahrain",
"country_code": "BHR",
"country_name": "Bahrain"
},
{
"id": 308,
"name": "Jeddah",
"short_name": "Jeddah",
"country_code": "SAU",
"country_name": "Saudi Arabia"
}
],
"meta": {
"next_cursor": 308,
"per_page": 2
}
}
This endpoint retrieves all circuits.
HTTP Request
GET https://api.balldontlie.io/f1/v1/circuits
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| search | false | Filter by circuit name |
| country_code | false | Filter by country code (e.g., "MC", "IT") |
| circuit_ids[] | false | Filter by specific circuit IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Seasons
Get All Seasons
curl "https://api.balldontlie.io/f1/v1/seasons" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/f1/v1/seasons", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/seasons",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"year": 2026,
"display_name": "2026"
},
{
"year": 2025,
"display_name": "2025"
}
],
"meta": {
"next_cursor": 2025,
"per_page": 2
}
}
This endpoint retrieves all seasons.
HTTP Request
GET https://api.balldontlie.io/f1/v1/seasons
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Events
Get All Events
curl "https://api.balldontlie.io/f1/v1/events?season=2024" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/events?season=2024",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/events",
params={"season": 2024},
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
{
"id": 353,
"name": "Qatar Airways Qatar Grand Prix",
"short_name": "Qatar Airways Qatar GP",
"season": 2024,
"start_date": "2024-11-29T13:30:00.000Z",
"end_date": "2024-12-01T16:00:00.000Z",
"status": "final",
"circuit": {
"id": 329,
"name": "Lusail",
"short_name": "Lusail",
"country_code": "QAT",
"country_name": "Qatar"
},
"location": "Lusail",
"country_code": "QAT",
"country_name": "Qatar"
}
],
"meta": {
"next_cursor": 353,
"per_page": 2
}
}
This endpoint retrieves all events (race weekends).
HTTP Request
GET https://api.balldontlie.io/f1/v1/events
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| season | false | Filter by season year (e.g., 2024) |
| status | false | Filter by status (e.g., "Completed", "Scheduled") |
| circuit_ids[] | false | Filter by specific circuit IDs (array) |
| event_ids[] | false | Filter by specific event IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Sessions
Get All Sessions
curl "https://api.balldontlie.io/f1/v1/sessions" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/f1/v1/sessions", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/sessions",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
{
"id": 1769,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Qualifying",
"name": "Qual",
"date": "2024-12-07T14:00:00.000Z",
"status": "final"
}
],
"meta": {
"next_cursor": 1769,
"per_page": 2
}
}
This endpoint retrieves all sessions (practice, qualifying, sprint, race).
HTTP Request
GET https://api.balldontlie.io/f1/v1/sessions
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| event_ids[] | false | Filter by specific event IDs (array) |
| type | false | Filter by session type (e.g., "Race", "Qualifying", "Practice") |
| status | false | Filter by status (e.g., "Completed", "Scheduled") |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Session Results
Get All Session Results
curl "https://api.balldontlie.io/f1/v1/session_results?session_ids[]=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/session_results?session_ids[]=1",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/session_results",
params={"session_ids[]": [1]},
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 22225,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21957,
"first_name": "Lando",
"last_name": "Norris",
"display_name": "Lando Norris",
"short_name": "L. Norris",
"country_code": "GBR",
"country_name": "Britain",
"racing_number": "4",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"position": 1,
"is_winner": true,
"laps_completed": 58,
"pit_stops": 1,
"retired": false
},
{
"id": 22239,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21960,
"first_name": "Carlos",
"last_name": "Sainz",
"display_name": "Carlos Sainz",
"short_name": "C. Sainz",
"country_code": "ESP",
"country_name": "Spain",
"racing_number": "55",
"team": {
"id": 806,
"name": "Ferrari",
"display_name": "Ferrari",
"color": "DC0000"
}
},
"position": 2,
"is_winner": false,
"laps_completed": 58,
"pit_stops": 1,
"retired": false
}
],
"meta": {
"next_cursor": 22239,
"per_page": 2
}
}
This endpoint retrieves session results.
HTTP Request
GET https://api.balldontlie.io/f1/v1/session_results
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | false | Filter by specific session IDs (array) |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Driver Standings
Get Driver Standings
curl "https://api.balldontlie.io/f1/v1/driver_standings?season=2024" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/driver_standings?season=2024",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/driver_standings",
params={"season": 2024},
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 397,
"season": 2024,
"driver": {
"id": 21956,
"first_name": "Max",
"last_name": "Verstappen",
"display_name": "Max Verstappen",
"short_name": "M. Verstappen",
"country_code": "NED",
"country_name": "Netherlands",
"racing_number": "1",
"team": {
"id": 807,
"name": "Red Bull",
"display_name": "Red Bull",
"color": "00327D"
}
},
"position": 1,
"points": 437
},
{
"id": 398,
"season": 2024,
"driver": {
"id": 21957,
"first_name": "Lando",
"last_name": "Norris",
"display_name": "Lando Norris",
"short_name": "L. Norris",
"country_code": "GBR",
"country_name": "Britain",
"racing_number": "4",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"position": 2,
"points": 374
}
],
"meta": {
"next_cursor": 398,
"per_page": 2
}
}
This endpoint retrieves driver standings.
HTTP Request
GET https://api.balldontlie.io/f1/v1/driver_standings
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| season | true | The season year (e.g., 2024) |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Team Standings
Get Team Standings
curl "https://api.balldontlie.io/f1/v1/team_standings?season=2024" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/team_standings?season=2024",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/team_standings",
params={"season": 2024},
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 175,
"season": 2024,
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
},
"position": 1,
"points": 666
},
{
"id": 176,
"season": 2024,
"team": {
"id": 806,
"name": "Ferrari",
"display_name": "Ferrari",
"color": "DC0000"
},
"position": 2,
"points": 652
}
],
"meta": {
"next_cursor": 176,
"per_page": 2
}
}
This endpoint retrieves team (constructor) standings.
HTTP Request
GET https://api.balldontlie.io/f1/v1/team_standings
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| season | true | The season year (e.g., 2024) |
| team_ids[] | false | Filter by specific team IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Lap Times
Get All Lap Times
curl "https://api.balldontlie.io/f1/v1/lap_times?session_ids[]=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/lap_times?session_ids[]=1",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/lap_times",
params={"session_ids[]": [1]},
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 162484,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21960,
"first_name": "Carlos",
"last_name": "Sainz",
"display_name": "Carlos Sainz",
"short_name": "C. Sainz",
"country_code": "ESP",
"country_name": "Spain",
"racing_number": "55",
"team": {
"id": 806,
"name": "Ferrari",
"display_name": "Ferrari",
"color": "DC0000"
}
},
"lap_number": 2,
"lap_time": "1:49.770",
"lap_time_ms": 109770,
"is_pit_out_lap": false,
"is_pit_in_lap": false
},
{
"id": 162483,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21957,
"first_name": "Lando",
"last_name": "Norris",
"display_name": "Lando Norris",
"short_name": "L. Norris",
"country_code": "GBR",
"country_name": "Britain",
"racing_number": "4",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"lap_number": 2,
"lap_time": "1:48.349",
"lap_time_ms": 108349,
"is_pit_out_lap": false,
"is_pit_in_lap": false
}
],
"meta": {
"next_cursor": 162483,
"per_page": 2
}
}
This endpoint retrieves lap times.
HTTP Request
GET https://api.balldontlie.io/f1/v1/lap_times
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | true | Filter by specific session IDs (array) |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| lap_number | false | Filter by specific lap number |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Qualifying Results
Get All Qualifying Results
curl "https://api.balldontlie.io/f1/v1/qualifying_results" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/qualifying_results",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/qualifying_results",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 4457,
"session": {
"id": 1769,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Qualifying",
"name": "Qual",
"date": "2024-12-07T14:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21957,
"first_name": "Lando",
"last_name": "Norris",
"display_name": "Lando Norris",
"short_name": "L. Norris",
"country_code": "GBR",
"country_name": "Britain",
"racing_number": "4",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"q1_time": "1:23.682",
"q1_time_ms": 83682,
"q1_lap": 2,
"q2_time": "1:23.098",
"q2_time_ms": 83098,
"q2_lap": 7,
"q3_time": "1:22.595",
"q3_time_ms": 82595,
"q3_lap": 15,
"final_position": 1
},
{
"id": 4475,
"session": {
"id": 1769,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Qualifying",
"name": "Qual",
"date": "2024-12-07T14:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21959,
"first_name": "Oscar",
"last_name": "Piastri",
"display_name": "Oscar Piastri",
"short_name": "O. Piastri",
"country_code": "AUS",
"country_name": "Australia",
"racing_number": "81",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"q1_time": "1:23.640",
"q1_time_ms": 83640,
"q1_lap": 2,
"q2_time": "1:23.199",
"q2_time_ms": 83199,
"q2_lap": 7,
"q3_time": "1:22.804",
"q3_time_ms": 82804,
"q3_lap": 15,
"final_position": 2
}
],
"meta": {
"next_cursor": 4475,
"per_page": 2
}
}
This endpoint retrieves qualifying results with Q1, Q2, and Q3 times.
HTTP Request
GET https://api.balldontlie.io/f1/v1/qualifying_results
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | false | Filter by specific session IDs (array) |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Pit Stops
Get All Pit Stops
curl "https://api.balldontlie.io/f1/v1/pit_stops" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/f1/v1/pit_stops", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/pit_stops",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 6427,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21974,
"first_name": "Franco",
"last_name": "Colapinto",
"display_name": "Franco Colapinto",
"short_name": "F. Colapinto",
"country_code": "ARG",
"country_name": "Argentina",
"racing_number": "43",
"team": {
"id": 813,
"name": "Williams",
"display_name": "Williams",
"color": "FFFFFF"
}
},
"stop_number": 1,
"lap": 3,
"time_of_day": "17:09:29",
"duration_seconds": 24.941,
"total_time_seconds": 24.941
},
{
"id": 6428,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21959,
"first_name": "Oscar",
"last_name": "Piastri",
"display_name": "Oscar Piastri",
"short_name": "O. Piastri",
"country_code": "AUS",
"country_name": "Australia",
"racing_number": "81",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"stop_number": 1,
"lap": 4,
"time_of_day": "17:10:26",
"duration_seconds": 23.582,
"total_time_seconds": 23.582
}
],
"meta": {
"next_cursor": 6428,
"per_page": 2
}
}
This endpoint retrieves pit stop data.
HTTP Request
GET https://api.balldontlie.io/f1/v1/pit_stops
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | false | Filter by specific session IDs (array) |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Tire Stints
Get All Tire Stints
curl "https://api.balldontlie.io/f1/v1/tire_stints" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/f1/v1/tire_stints", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/tire_stints",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 84564,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21956,
"first_name": "Max",
"last_name": "Verstappen",
"display_name": "Max Verstappen",
"short_name": "M. Verstappen",
"country_code": "NED",
"country_name": "Netherlands",
"racing_number": "1",
"team": {
"id": 807,
"name": "Red Bull",
"display_name": "Red Bull",
"color": "00327D"
}
},
"stint_number": 1,
"compound": "MEDIUM",
"is_new": true,
"start_lap": 0,
"total_laps": 29
},
{
"id": 84566,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21957,
"first_name": "Lando",
"last_name": "Norris",
"display_name": "Lando Norris",
"short_name": "L. Norris",
"country_code": "GBR",
"country_name": "Britain",
"racing_number": "4",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"stint_number": 1,
"compound": "MEDIUM",
"is_new": true,
"start_lap": 0,
"total_laps": 26
}
],
"meta": {
"next_cursor": 84566,
"per_page": 2
}
}
This endpoint retrieves tire stint data showing compound usage throughout the race.
HTTP Request
GET https://api.balldontlie.io/f1/v1/tire_stints
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | false | Filter by specific session IDs (array) |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Session Weather
Get Session Weather
curl "https://api.balldontlie.io/f1/v1/session_weather" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/session_weather",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/session_weather",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 907,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"air_temp": 25.8,
"track_temp": 29.1,
"humidity": 60,
"pressure": 1018,
"wind_speed": 1.2,
"wind_direction": 116,
"rainfall": 0
}
],
"meta": {
"per_page": 2
}
}
This endpoint retrieves weather data for sessions.
HTTP Request
GET https://api.balldontlie.io/f1/v1/session_weather
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | false | Filter by specific session IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Race Control Messages
Get Race Control Messages
curl "https://api.balldontlie.io/f1/v1/race_control_messages" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/race_control_messages",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/race_control_messages",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 57938,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"utc_time": "2024-12-08T17:07:38.000Z",
"lap": 1,
"category": "Other",
"flag": null,
"scope": null,
"sector": null,
"driver_number": null,
"message": "PINK HEAD PADDING MATERIAL MUST BE USED"
},
{
"id": 57939,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"utc_time": "2024-12-08T17:20:01.000Z",
"lap": 1,
"category": "Flag",
"flag": "GREEN",
"scope": "Track",
"sector": null,
"driver_number": null,
"message": "GREEN LIGHT - PIT EXIT OPEN"
}
],
"meta": {
"next_cursor": 57939,
"per_page": 2
}
}
This endpoint retrieves race control messages including flags, penalties, and other race incidents.
HTTP Request
GET https://api.balldontlie.io/f1/v1/race_control_messages
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | false | Filter by specific session IDs (array) |
| category | false | Filter by category (e.g., "Flag") |
| flag | false | Filter by flag type (e.g., "YELLOW") |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Position History
Get Position History
curl "https://api.balldontlie.io/f1/v1/position_history?session_ids[]=1" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/position_history?session_ids[]=1",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/position_history",
params={"session_ids[]": [1]},
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 617709,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21957,
"first_name": "Lando",
"last_name": "Norris",
"display_name": "Lando Norris",
"short_name": "L. Norris",
"country_code": "GBR",
"country_name": "Britain",
"racing_number": "4",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"lap_number": 1,
"position": 1
},
{
"id": 618644,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21959,
"first_name": "Oscar",
"last_name": "Piastri",
"display_name": "Oscar Piastri",
"short_name": "O. Piastri",
"country_code": "AUS",
"country_name": "Australia",
"racing_number": "81",
"team": {
"id": 805,
"name": "McLaren",
"display_name": "McLaren",
"color": "FF8700"
}
},
"lap_number": 1,
"position": 2
}
],
"meta": {
"next_cursor": 618644,
"per_page": 2
}
}
This endpoint retrieves position history showing each driver's position on each lap.
HTTP Request
GET https://api.balldontlie.io/f1/v1/position_history
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | true | Filter by specific session IDs (array) |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| lap_number | false | Filter by specific lap number |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Session Timing Stats
Get Session Timing Stats
curl "https://api.balldontlie.io/f1/v1/session_timing_stats" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch(
"https://api.balldontlie.io/f1/v1/session_timing_stats",
{
headers: {
Authorization: "YOUR_API_KEY",
},
}
);
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/session_timing_stats",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 22251,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21970,
"first_name": "Kevin",
"last_name": "Magnussen",
"display_name": "Kevin Magnussen",
"short_name": "K. Magnussen",
"country_code": "DEN",
"country_name": "Denmark",
"racing_number": "20",
"team": {
"id": 811,
"name": "Haas",
"display_name": "Haas",
"color": "5A5A5A"
}
},
"best_lap_time": "1:25.637",
"best_lap_time_ms": 85637,
"best_lap_number": 57,
"best_sector_1": 17.257,
"best_sector_2": 37.109,
"best_sector_3": 31.271,
"speed_i1": 296,
"speed_i2": 322,
"speed_fl": 222,
"speed_trap": 336
},
{
"id": 22258,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"driver": {
"id": 21962,
"first_name": "Lewis",
"last_name": "Hamilton",
"display_name": "Lewis Hamilton",
"short_name": "L. Hamilton",
"country_code": "GBR",
"country_name": "Britain",
"racing_number": "44",
"team": {
"id": 808,
"name": "Mercedes",
"display_name": "Mercedes",
"color": "00D2BE"
}
},
"best_lap_time": "1:27.278",
"best_lap_time_ms": 87278,
"best_lap_number": 44,
"best_sector_1": 17.375,
"best_sector_2": 37.588,
"best_sector_3": 31.809,
"speed_i1": 299,
"speed_i2": 326,
"speed_fl": 217,
"speed_trap": 337
}
],
"meta": {
"next_cursor": 22258,
"per_page": 2
}
}
This endpoint retrieves session timing statistics including best lap times, sector times, and speed trap data.
HTTP Request
GET https://api.balldontlie.io/f1/v1/session_timing_stats
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | false | Filter by specific session IDs (array) |
| driver_ids[] | false | Filter by specific driver IDs (array) |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |
Track Status
Get Track Status
curl "https://api.balldontlie.io/f1/v1/track_status" \
-H "Authorization: YOUR_API_KEY"
const response = await fetch("https://api.balldontlie.io/f1/v1/track_status", {
headers: {
Authorization: "YOUR_API_KEY",
},
});
const data = await response.json();
import requests
response = requests.get(
"https://api.balldontlie.io/f1/v1/track_status",
headers={"Authorization": "YOUR_API_KEY"}
)
data = response.json()
The above command returns JSON structured like this:
{
"data": [
{
"id": 3315,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"utc_time": "2024-12-08T12:04:14.414Z",
"status": "AllClear"
},
{
"id": 3316,
"session": {
"id": 1770,
"event": {
"id": 354,
"name": "Etihad Airways Abu Dhabi Grand Prix",
"short_name": "Etihad Airways Abu Dhabi GP",
"season": 2024,
"start_date": "2024-12-06T09:30:00.000Z",
"end_date": "2024-12-08T13:00:00.000Z",
"status": "final",
"circuit": {
"id": 330,
"name": "Yas Marina Circuit",
"short_name": "Yas Marina Circuit",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"location": "Yas Island",
"country_code": "UAE",
"country_name": "United Arab Emirates"
},
"type": "Race",
"name": "Race",
"date": "2024-12-08T13:00:00.000Z",
"status": "final"
},
"utc_time": "2024-12-08T13:04:25.388Z",
"status": "Yellow"
}
],
"meta": {
"next_cursor": 3316,
"per_page": 2
}
}
This endpoint retrieves track status history showing green flags, yellow flags, red flags, safety cars, etc.
HTTP Request
GET https://api.balldontlie.io/f1/v1/track_status
Query Parameters
| Parameter | Required | Description |
|---|---|---|
| session_ids[] | false | Filter by specific session IDs (array) |
| status | false | Filter by status (e.g., "AllClear", "Yellow", "Red", "SC") |
| cursor | false | The cursor for pagination |
| per_page | false | The number of results per page (max 100) |