NAV
shell javascript python

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:

  1. Copy this URL: https://www.balldontlie.io/openapi.yml
  2. Share it with your preferred AI assistant (ChatGPT, Claude, Gemini, etc.)
  3. Tell the AI what you want to build (e.g., "Create a dashboard showing the current F1 driver standings")
  4. The AI will read the OpenAPI spec and write the code for you

Example prompts to try:

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_KEY with 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)