RacingHub API
Free F1 data API with no key: driver, constructor and race records back to 1950, with career totals precomputed. Open source and OpenAPI-documented. Tested example included.
Endpoint tested and returned HTTP 200 on 21 Aug 2026
What is the RacingHub API?
RacingHub is a free, key-free REST API serving Formula 1 historical data from 1950 onward. Driver records arrive with career totals already aggregated — wins, podiums, points, poles, fastest laps and championships — alongside biographical detail.
With Ergast retired, the F1 data ecosystem fragmented into several successors. RacingHub is one of them, built on the open-source F1DB dataset and published with a proper OpenAPI specification at `/api/v1/openapi.json` — which means you can generate a typed client rather than reverse-engineering the shapes by hand.
Its distinguishing feature is precomputation. Rather than making you aggregate results to answer "how many races has this driver won", every driver record ships with `total_race_wins`, `total_podiums`, `total_pole_positions`, `total_grand_slams` and the rest already summed. For a leaderboard or a career-summary card that removes the entire aggregation step. Two things to watch: point totals come back as strings such as `"0.00"` because F1 has awarded half points, and the default page size is 100, so paging matters on the driver list.
Quick facts
- Base URL
https://racinghub.net/api/v1- Authentication
- No API key and no account. The project is open source and independent of Formula 1.
- Rate limit
- No published limit. Historical data is static — cache it rather than re-fetching.
- Pricing
- Free, MIT licensed.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the RacingHub API
Every request below was executed against the live API on 21 Aug 2026, and the response shown is the real body it returned — not an illustration.
1. List Formula 1 drivers with career totals
GET https://racinghub.net/api/v1/drivers?limit=2
curl 'https://racinghub.net/api/v1/drivers?limit=2'const res = await fetch("https://racinghub.net/api/v1/drivers?limit=2");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://racinghub.net/api/v1/drivers?limit=2", timeout=20)
res.raise_for_status()
print(res.json()){
"data": [
{
"id": "adderly-fong",
"name": "Adderly Fong",
"first_name": "Adderly",
"last_name": "Fong",
"full_name": "Adderly Fong Cheun-yue",
"abbreviation": "FON",
"gender": "MALE",
"date_of_birth": "1990-03-02",
"place_of_birth": "Vancouver",
"nationality_country_id": "hong-kong",
"country_of_birth_country_id": "canada",
"second_nationality_country_id": null,
"permanent_number": null,
"date_of_death": null,
"total_championship_wins": 0,
"total_race_entries": 0,
"total_race_starts": 0,
"total_race_wins": 0,
"total_race_laps": 0,
"total_podiums": 0,
"total_points": "0.00",
"total_championship_points": "0.00",
"total_pole_positions": 0,
"total_fastest_laps": 0,
"total_driver_of_the_day": 0,
"total_grand_slams": 0,
"best_championship_position": null,
"best_starting_grid_position": null,
"best_race_result": null
},
{
"id": "adolf-brudes",
"name": "Adolf Brudes",
"first_name": "Adolf",
"last_name": "Brudes",
"full_name": "Adolf Brudes von Breslau",
"abbreviation": "BRU",
"gender": "MALE",
"date_of_birth": "1899-10-15",
"place_of_birth": "Groß Kottulin",
"nationality_country_id": "germany",
"country_of_birth_country_id": "germany",
"second_nationality_country_id": null,
"permanent_number": null,
"date_of_death": "1986-11-05",
"total_championship_wins": 0,
"total_race_entries": 1,
"total_raceParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
limit | query | Optional | Items per page, 1 to 100. Defaults to 100. 2 |
page | query | Optional | 1-based page number. 1 |
sort | query | Optional | Sort field — name, number or code. name |
/constructors | path | Optional | Constructor records with the same style of precomputed totals. |
/seasons/{year}/races | path | Optional | Race calendar and results for a season. |
Response fields
data[].idstring- Slug identifier such as `adderly-fong`, used in the detail paths.
data[].name / first_name / last_name / full_namestring- Display name, its components, and the full formal name including any additional given names.
data[].abbreviationstring- Three-letter broadcast code, for example `FON`.
data[].date_of_birth / date_of_deathstring- ISO dates. `date_of_death` is null for living drivers.
data[].place_of_birthstring- City of birth.
data[].nationality_country_id / country_of_birth_country_id / second_nationality_country_idstring- Country slugs, which can differ — nationality raced under is not always country of birth.
data[].permanent_numberinteger- Career number where the driver has one. Null for the great majority.
data[].total_race_entries / total_race_startsinteger- Entries and actual starts. They differ when a driver failed to qualify or withdrew.
data[].total_race_wins / total_podiums / total_pole_positions / total_fastest_lapsinteger- Precomputed career totals — no aggregation needed.
data[].total_points / total_championship_pointsstring- Points as decimal strings, because half points have been awarded in shortened races. Parse before arithmetic.
data[].total_championship_wins / total_grand_slams / total_driver_of_the_dayinteger- Titles, grand slams and modern fan-award counts.
What you can build with the RacingHub API
- Build an F1 statistics site without aggregating results yourself
- Generate driver career summary cards
- Compare constructors across eras using precomputed totals
- Produce a typed API client straight from the published OpenAPI spec
Common errors and how to fix them
Point arithmetic produces string concatenation
`total_points` is a string like `"0.00"`.
Fix: Parse to a float first. The decimal form exists because half points are real in F1.
Only 100 drivers returned
That is the default and maximum page size.
Fix: Page with `limit` and `page`. The full driver list runs to several hundred entries.
Zero totals on a real driver
Entries with no starts genuinely have zero career statistics.
Fix: Check `total_race_entries` against `total_race_starts` before treating a driver as having competed.
Unfamiliar response shape
The API is versioned and evolving.
Fix: Fetch `/api/v1/openapi.json` and generate a client from it rather than hand-coding field access.
RacingHub API — frequently asked questions
Is the RacingHub API free?
Yes, free with no key and no account. It is MIT-licensed open source, independent of and not endorsed by Formula 1.
How far back does the data go?
To 1950, the first world championship season. It is built on the open-source F1DB dataset.
Do I have to calculate career totals myself?
No, and that is the main draw. Wins, podiums, poles, fastest laps, grand slams and championships all arrive precomputed on each driver record.
Why are points returned as strings?
Because F1 has awarded half points in shortened races, so totals are decimal values. They are serialised as strings like `"0.00"` and need parsing before arithmetic.
Tools that pair with this API
CSV Column Statistics Calculator
Profile a CSV column by column: type, blanks, distinct values, min, max, mean, median, standard deviation and percentiles, plus top values — all in-browser.
Percentage Calculator
Calculate what X% of a number is, what percent one number is of another, and percentage increase or decrease between two values — instantly and free.
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.
Alternatives to RacingHub API
If RacingHub does not fit, these sports & fitness apis cover similar ground. Every one was called before publishing, and each links to its own reference page with a working curl command and the response it returned.
| API | What it does | Auth | CORS | Last verified |
|---|---|---|---|---|
| TheSportsDB | Free sports database API with a public test key: teams, players, leagues, fixtures and results across football, basketball, cricket and more, with images. Tested. | No key | Yes | 19 Aug 2026 |
| NHL Web API | Free NHL API with no key: live scores, standings, team rosters, player statistics and schedules from the official NHL data service. Tested curl example. | No key | No | 19 Aug 2026 |
| OpenLigaDB | Free OpenLigaDB API with no key: Bundesliga fixtures, results, tables and goalscorers, plus other leagues. Community-maintained open data. Tested example. | No key | No | 19 Aug 2026 |
| wger Workout Manager | Free wger fitness API with no key for public data: exercise database with muscles worked, equipment, categories, images and nutrition information. Tested. | No key | Yes | 19 Aug 2026 |
| Squiggle (AFL) | Free Australian Football League API with no key: teams, fixtures, results, ladder standings and computer model predictions. Community-run. Tested example. | No key | No | 21 Aug 2026 |
| Sumo API | Free sumo API with no key: rikishi profiles with ranks, stables, birthplaces and physical stats, plus tournament and bout results. Tested example included. | No key | Yes | 21 Aug 2026 |
RacingHub is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 21 Aug 2026; always check the official documentation before relying on this API in production, as terms and limits can change.