F1API.dev API
Free Formula 1 API with no key: current season calendar, race results, driver and constructor standings, circuits and historical champions. Tested example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the F1API.dev API?
F1API.dev is a free, key-free Formula 1 REST API covering the current and historical seasons. It returns the race calendar with dates and circuits, race and qualifying results, driver and constructor standings, team and driver profiles, and past champions.
This API fills the gap left by Ergast, which was the community standard for Formula 1 data for over a decade before being retired. Where OpenF1 focuses on telemetry and timing at sub-second resolution, F1API.dev covers the classic structured layer: who raced where, who finished where, and what the standings look like — the data most fan sites and fantasy-league tools actually need.
The `/current` endpoint is the natural entry point because it self-updates: it returns the championship in progress with every round, circuit, date and time, so an application built on it survives the turn of the season without a code change. Responses carry `limit`, `offset` and `total` alongside the payload, and each race record includes the circuit's own metadata rather than just an id, which saves a second lookup.
Quick facts
- Base URL
https://f1api.dev/api- Authentication
- No API key or account. Community-run project with open documentation.
- Rate limit
- No published hard limit. Season data changes at most weekly, so cache it.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the F1API.dev API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Fetch the current Formula 1 season calendar
GET https://f1api.dev/api/current
curl 'https://f1api.dev/api/current'const res = await fetch("https://f1api.dev/api/current");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://f1api.dev/api/current", timeout=20)
res.raise_for_status()
print(res.json()){
"api": "https://f1api.dev",
"url": "https://f1api.dev/api/current",
"limit": 30,
"offset": 0,
"total": 22,
"season": 2026,
"championship": {
"championshipId": "f1_2026",
"championshipName": "2026 Formula 1 World Championship",
"url": "https://en.wikipedia.org/wiki/2026_Formula_One_World_Championship",
"year": 2026
},
"races": [
{
"raceId": "australian_2026",
"championshipId": "f1_2026",
"raceName": "Formula 1 Qatar Airways Australian Grand Prix",
"schedule": {
"race": {
"date": "2026-03-08",
"time": "04:00:00Z"
},
"qualy": {
"date": "2026-03-07",
"time": "05:00:00Z"
},
"fp1": {
"date": "2026-03-06",
"time": "01:30:00Z"
},
"fp2": {
"date": "2026-03-06",
"time": "05:00:00Z"
},
"fp3": {
"date": "2026-03-07",
"time": "01:30:00Z"
},
"sprintQualy": {
"date": null,
"time": null
},
"sprintRace": {
"date": null,
"time": null
}
},
"laps": 58,
"round": 1,
"url": "https://en.wikipedia.org/wiki/2026_Australian_Grand_Prix",
"fast_lap": {
"fast_lap": "1:22.091",
"fast_lap_driver_id": "max_verstappen",
"fast_lap_team_id": "red_bull"
},
"circuit": {
"circuitId": "albert_park",
"circuitName": "Albert Park Circuit",
"country": "Australia",
"city": "Melbourne",
"circuitLength": "Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
(current) | path segment | Optional | Returns the championship in progress. Self-updating, so it needs no yearly maintenance. |
year | path segment | Optional | A specific season, for historical queries. 2023 |
round | path segment | Optional | A specific round within a season, appended after the year. 1 |
limit | query | Optional | Page size. Defaults to 30. 10 |
offset | query | Optional | Pagination offset, used with `limit` and the `total` field. 0 |
Response fields
season / championshipobject- The championship this response describes, with id, name, year and a Wikipedia link.
totalinteger- How many records exist in total — the number of rounds, for the calendar.
limit / offsetinteger- Pagination state, echoed back so you know where you are.
races[].raceIdstring- Stable identifier such as `australian_2026`, readable and usable as a route slug.
races[].raceNamestring- Official grand prix name.
races[].circuitobject- Circuit details embedded in the race record rather than referenced by id, which saves a lookup.
races[].scheduleobject- Session times across the weekend — practice, qualifying, sprint and race.
What you can build with the F1API.dev API
- Show the upcoming race calendar with countdowns on a fan site
- Build a Formula 1 fantasy league scoring system from real results
- Display live driver and constructor standings
- Look up historical champions and season results
Common errors and how to fix them
404
Unknown season or round.
Fix: Historical coverage does not reach every year of the sport. Check `/seasons` for what is available before requesting an old year.
Empty races array
The season exists but its calendar is not yet published.
Fix: Very early in a year the next season may be listed with no rounds. Fall back to the previous season.
Stale standings
Standings update after each race, not live during one.
Fix: For in-session data use OpenF1. This API is the structured results layer, not a live timing feed.
F1API.dev API — frequently asked questions
Is the F1 API free?
Yes, free with no API key or account. It is a community-run project with open documentation.
How is this different from OpenF1?
OpenF1 provides timing and car telemetry at sub-second resolution — throttle traces, radio, pit stops. F1API.dev provides the structured layer: calendars, results, standings, drivers and circuits. Most fan sites need this one; analysis tools need OpenF1.
What replaced the Ergast API?
Ergast was retired after more than a decade as the community standard. F1API.dev is one of the successors covering the same structured data, and the Jolpica mirror is another — both are documented in this directory.
Does the current endpoint need updating each season?
No, and that is the point of it. `/current` resolves to whichever championship is in progress, so an application built on it rolls over to the new season without a code change.
Tools that pair with this API
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
Time Zone Converter
Convert any date and time between world time zones. See UTC offsets, daylight saving handled automatically, and compare multiple zones at once.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
F1API.dev is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.