Developer API Documentation
Query clean, structured JSON data directly in your applications without authentication. Hosted entirely on GitHub and served via jsDelivr CDN.
Base URL: https://cdn.jsdelivr.net/gh/vishwapramuditha/moto-db@main
Note: For production apps, replace @main with a specific commit hash or tag to prevent breaking changes if our schemas evolve.
Formula 1
- GET
/data/f1/drivers.json - GET
/data/f1/{year}/schedule.json+sessions[] - GET
/data/f1/{year}/results_{round}.json
MotoGP
- GET
/data/motogp/drivers.json - GET
/data/motogp/{year}/schedule.json+sessions[] - GET
/data/motogp/{year}/{short_name}/motogp_RAC.json
NASCAR
- GET
/data/nascar/drivers.json - GET
/data/nascar/{year}/schedule.json - GET
/data/nascar/{year}/{series}/results_{id}.json
IndyCar
- GET
/data/indycar/{year}/schedule.json+sessions[] - GET
/data/indycar/{year}/results_{id}.json
WEC
- GET
/data/wec/{year}/schedule.json - GET
/data/wec/{year}/results.json - GET
/data/wec/{year}/standings.json
Formula E
- GET
/data/formula_e/{year}/schedule.json+sessions[] - GET
/data/formula_e/{year}/results.json
WRC
- GET
/data/wrc/{year}/schedule.json+sessions[] - GET
/data/wrc/{year}/results.json
Developer Integration Guide
Best practices for consuming Moto-DB's Git-based API in web and backend applications.
Commit Pinning
Serving data via @main is great for development, but in production it is highly recommended to pin requests to a specific commit hash (e.g. @7a3f89e) or release tag. This acts as version locking, preventing schema updates from breaking your live application.
Full CORS Support
Because files are served by jsDelivr, all endpoints support Cross-Origin Resource Sharing (CORS) out of the box. You can call our API directly from client-side React, Vue, or vanilla JS web apps without encountering security warnings or requiring a proxy server.
No Limits & CDN Cache
jsDelivr uses a multi-CDN infrastructure (Cloudflare, Fastly, BunnyCDN) to cache all files globally. Responses are cached at the edge, offering response times of < 50ms worldwide and shielding Moto-DB from traffic spikes. Call it as much as you want.
Data Schema Reference
Understand the structure of JSON data returned by the Moto-DB API endpoints.
Race Schedule Schema (schedule.json)
Represents the full seasonal schedule of races for a motorsport series.
| Field | Type | Description | Example |
|---|---|---|---|
round |
number |
The sequence index of the event in the season. | 1 |
raceName |
string |
Official name of the Grand Prix or event. | "Bahrain Grand Prix" |
date |
string |
The calendar date of the main race (YYYY-MM-DD). | "2025-04-13" |
circuit |
object |
Metadata describing the venue hosting the race. | { "circuitId": "bahrain", "circuitName": "Bahrain International Circuit", ... } |
{
"season": "2026",
"total_rounds": 22,
"races": [
{
"round": "1",
"raceName": "Australian Grand Prix",
"date": "2026-03-08",
"circuit": {
"circuitId": "albert_park",
"circuitName": "Albert Park Grand Prix Circuit",
"locality": "Melbourne",
"country": "Australia"
},
"sessions": [
{ "type": "FP1", "name": "Free Practice 1", "date": "2026-03-06", "time": "01:30:00Z" },
{ "type": "FP2", "name": "Free Practice 2", "date": "2026-03-06", "time": "05:00:00Z" },
{ "type": "FP3", "name": "Free Practice 3", "date": "2026-03-07", "time": "01:30:00Z" },
{ "type": "Qualifying", "name": "Qualifying", "date": "2026-03-07", "time": "05:00:00Z" },
{ "type": "Race", "name": "Race", "date": "2026-03-08", "time": "04:00:00Z" }
]
}
]
}
Driver Profiles Schema (drivers.json)
Contains profiles of active or historical drivers for a given championship.
| Field | Type | Description | Example |
|---|---|---|---|
driverId |
string |
Unique identifier code for the competitor. | "hamilton" |
permanentNumber |
string |
The driver's registered racing/car number. | "44" |
givenName |
string |
The first/given name of the competitor. | "Lewis" |
nationality |
string |
The country of nationality of the driver. | "British" |
[
{
"driverId": "leclerc",
"permanentNumber": "16",
"code": "LEC",
"givenName": "Charles",
"familyName": "Leclerc",
"dateOfBirth": "1997-10-16",
"nationality": "Monegasque"
}
]
Race Results Schema (results.json)
Contains final standing classification, points awarded, and race completion metadata.
| Field | Type | Description | Example |
|---|---|---|---|
position |
number |
The final race finishing position (1 = Winner). | 1 |
points |
number |
Championship points gained from this position. | 25 |
grid |
number |
Starting grid position before lights out. | 3 |
status |
string |
Final driver state (e.g. Finished, +1 Lap, Accident, Engine). | "Finished" |
[
{
"position": 1,
"points": 25,
"grid": 1,
"laps": 57,
"status": "Finished",
"time": "1:31:44.742",
"driver": {
"driverId": "verstappen",
"familyName": "Verstappen"
},
"constructor": {
"constructorId": "red_bull",
"name": "Red Bull Racing"
}
}
]
Race Weekend Sessions Schema (sessions[] in schedule.json)
Every race/event in every sport's schedule.json now contains a sessions[] array listing all on-track events for the race weekend with UTC times.
| Field | Type | Description | Example |
|---|---|---|---|
type |
string |
Session type code. e.g. FP1, FP2, SQ, Sprint, Qualifying, Race, SPR, WUP, SS… | "FP1" |
name |
string |
Human-readable session name (includes class for MotoGP). | "Free Practice 1" / "Race (MotoGP)" |
datetime / date+time |
string |
Session start in UTC. F1 uses separate date + time fields; all others use a single ISO-8601 datetime field. |
"2026-03-06T01:30:00Z" |
category |
string |
MotoGP only. Racing class: motogp, moto2, or moto3. |
"motogp" |
status |
string |
MotoGP only. Session state from the API: FINISHED or NOT-STARTED. |
"FINISHED" |
Sport-specific weekend formats:
// F1 — Sprint Weekend
"sessions": [
{ "type": "FP1", "name": "Free Practice 1", "date": "2026-04-04", "time": "08:30:00Z" },
{ "type": "SQ", "name": "Sprint Qualifying", "date": "2026-04-04", "time": "12:30:00Z" },
{ "type": "Sprint", "name": "Sprint", "date": "2026-04-05", "time": "08:00:00Z" },
{ "type": "Qualifying", "name": "Qualifying", "date": "2026-04-05", "time": "12:00:00Z" },
{ "type": "Race", "name": "Race", "date": "2026-04-06", "time": "11:00:00Z" }
]
// MotoGP — All 3 classes (exact times from Pulse Live API)
"sessions": [
{ "type": "FP", "name": "Free Practice (Moto3)", "category": "moto3", "datetime": "2026-02-27T09:00:00Z", "status": "FINISHED" },
{ "type": "FP", "name": "Free Practice (MotoGP)", "category": "motogp", "datetime": "2026-02-27T10:45:00Z", "status": "FINISHED" },
{ "type": "SPR", "name": "Sprint Race (MotoGP)", "category": "motogp", "datetime": "2026-02-28T15:00:00Z", "status": "FINISHED" },
{ "type": "RAC", "name": "Race (MotoGP)", "category": "motogp", "datetime": "2026-03-01T15:00:00Z", "status": "FINISHED" }
]
// WRC — Stage days
"sessions": [
{ "type": "Shakedown", "name": "Shakedown", "day": "Thursday", "date": "2026-01-22" },
{ "type": "SS", "name": "Day 2 – Friday Stages", "day": "Friday", "date": "2026-01-23" },
{ "type": "SS", "name": "Day 4 – Power Stage (Sunday)","day": "Sunday", "date": "2026-01-25" }
]