Jolpica F1 (Ergast) API
Free Formula 1 API with no key: race results, driver and constructor standings, qualifying, lap times and pit stops from 1950 onwards. Tested curl example.
Endpoint tested and returned HTTP 200 on 2026-08-19
What is the Jolpica F1 (Ergast) API?
The Jolpica F1 API is a free, key-free continuation of the Ergast API, providing Formula 1 data from 1950 to the present — race results, driver and constructor standings, qualifying, lap times, pit stops and circuit information.
Ergast was the reference F1 data API for over a decade before being retired; Jolpica maintains a drop-in compatible replacement at a new host, keeping the same URL structure and response format.
That compatibility matters because a great deal of existing F1 tooling and tutorials target the Ergast schema. The `MRData` envelope, the nested tables and the `.json` suffix all behave identically — only the hostname changed.
Quick facts
- Base URL
https://api.jolpi.ca/ergast/f1- Authentication
- No API key required.
- Rate limit
- Roughly 4 requests per second and 500 per hour for anonymous users.
- Pricing
- Free.
- CORS
- Not enabled — call it from your server
- Official docs
- Read the docs
How to use the Jolpica F1 (Ergast) API
Every request below was executed against the live API on 2026-08-19, and the response shown is the real body it returned — not an illustration.
1. List drivers for a season
GET https://api.jolpi.ca/ergast/f1/2024/drivers.json?limit=3
curl 'https://api.jolpi.ca/ergast/f1/2024/drivers.json?limit=3'const res = await fetch("https://api.jolpi.ca/ergast/f1/2024/drivers.json?limit=3");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.jolpi.ca/ergast/f1/2024/drivers.json?limit=3", timeout=20)
res.raise_for_status()
print(res.json()){
"MRData": {
"xmlns": "",
"series": "f1",
"url": "https://api.jolpi.ca/ergast/f1/2024/drivers.json",
"limit": "3",
"offset": "0",
"total": "25",
"DriverTable": {
"season": "2024",
"Drivers": [
{
"driverId": "albon",
"permanentNumber": "23",
"code": "ALB",
"url": "http://en.wikipedia.org/wiki/Alexander_Albon",
"givenName": "Alexander",
"familyName": "Albon",
"dateOfBirth": "1996-03-23",
"nationality": "Thai"
},
{
"driverId": "alonso",
"permanentNumber": "14",
"code": "ALO",
"url": "http://en.wikipedia.org/wiki/Fernando_Alonso",
"givenName": "Fernando",
"familyName": "Alonso",
"dateOfBirth": "1981-07-29",
"nationality": "Spanish"
},
{
"driverId": "antonelli",
"permanentNumber": "12",
"code": "ANT",
"url": "https://en.wikipedia.org/wiki/Andrea_Kimi_Antonelli",
"givenName": "Andrea Kimi",
"familyName": "Antonelli",
"dateOfBirth": "2006-08-25",
"nationality": "Italian"
}
]
}
}
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
<season> | path | Optional | Season year, or `current`. 2024 |
<round> | path | Optional | Race round number within the season. 1 |
limit | integer | Optional | Results per page, default 30. 3 |
offset | integer | Optional | Pagination offset. 30 |
<resource> | path | Optional | drivers, results, qualifying, driverStandings, constructorStandings, laps, pitstops. drivers |
Response fields
MRDataobject- Envelope wrapping every response — the payload is always nested inside it.
MRData.totalstring- Total records available, as a string.
MRData.DriverTable.Driversarray- Driver records with code, permanent number, name and nationality.
MRData.RaceTable.Racesarray- Race records with circuit, date and results on results endpoints.
MRData.StandingsTableobject- Championship standings on standings endpoints.
What you can build with the Jolpica F1 (Ergast) API
- Build an F1 results and standings dashboard
- Analyse historical race and qualifying data back to 1950
- Power a fantasy F1 league with official results
- Study lap time and pit stop strategy across seasons
Common errors and how to fix them
404
Wrong path structure or a season with no data.
Fix: Paths are hierarchical: /f1/<season>/<round>/<resource>.json — the .json suffix is required.
Only 30 results returned
Default page size is 30.
Fix: Pass `limit` up to 1000 and use `offset` to page through.
429
Rate limit exceeded.
Fix: Stay under roughly 4 requests per second; cache historical seasons indefinitely since they never change.
Jolpica F1 (Ergast) API — frequently asked questions
Is there a free Formula 1 API?
Yes. The Jolpica F1 API continues the retired Ergast API with the same URL structure and response format, free and with no API key.
What happened to the Ergast API?
It was retired, but Jolpica maintains a drop-in compatible replacement. Existing Ergast code works by changing only the hostname.
How far back does the data go?
To the 1950 season, covering the entire history of the Formula 1 World Championship.
Why is everything wrapped in MRData?
It is the Ergast envelope format, preserved for backwards compatibility. The actual payload is always nested inside MRData under a table object such as DriverTable or RaceTable.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
Unit Converter
Convert between units of length, weight, temperature, area, volume, speed, time and data storage instantly, with a swap button and common conversion tables.
Jolpica F1 (Ergast) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-19; always check the official documentation before relying on this API in production, as terms and limits can change.