Motorsport media and data desks
Results, standings and career aggregates for race-weekend coverage and the record book behind it.
SPORTS
PLATFORM
Historical CoverageLive NetworkSports NetworkDevelopersAPI ReferenceDocsPricingEnterpriseNEW API PRODUCTS
Formula 1 APIAustralian NBL APIEuroLeague APIAPI explorerYour API accountACCOUNT
Manage subscription Get API Key →NEW API PRODUCT
Formula 1 championship history since 1950 — seasons, circuits, drivers, constructors, Grand Prix weekends, sessions, classified results and standings — with PropBetEdge Driver, Constructor and Circuit DNA, Circuit Fit and driver Matchups.
Test-mode acceptance — not yet on sale
01 Release status
The Formula 1 API is in test-mode acceptance. Test-mode keys call every route on the production gateway while we verify the contract; the product is not on sale, no checkout sells it, and existing PropSports plans do not include it yet. Availability and pricing will be published here before launch.
Formula 1 is a separate PropSports product: it is not part of the core-sport catalog or its route counts. Keyless discovery (openapi.json) works today.
02 Overview
Formula 1 seasons since 1950, circuits, drivers, constructors, events, sessions, classified results, standings, and PropBetEdge Driver/Constructor/Circuit DNA, Circuit Fit and driver Matchups. Route availability depends on plan: core (all plans), DNA (All Sports and above), Fit and Matchups (Pro and above).
Results, standings and career aggregates for race-weekend coverage and the record book behind it.
Session classifications, standings progression and driver profiles on one key.
Driver and constructor performance across eras, circuit characteristics and head-to-head battles.
Season calendars, sessions and results in one structured contract with stable slugs.
03 Historical coverage
Exact spans, including known gaps.
04 Analytics
Model output lives in its own routes, apart from observed facts. DNA routes need the All Sports class or above; Circuit Fit and Matchups need the Pro class or above.
Percentile profile of qualifying, racecraft, consistency and teammate battles.
/v1/f1/dna/driver/{id} All Sports class and above
Constructor profile by season.
/v1/f1/dna/constructor/{id} All Sports class and above
What a track rewards, with its winners.
/v1/f1/dna/circuit/{id} All Sports class and above
How each driver profile suits an upcoming event.
/v1/f1/fit/{event} Pro class and above
Head-to-head between two drivers: qualifying and race battles, recent meetings.
/v1/f1/matchups/{a}/{b} Pro class and above
05 Route catalog
Generated from the published OpenAPI 3.1 document. Every route is GET on https://propsports.proptechusa.ai.
/v1/f1Every Formula 1 planRoute catalogue with per-plan availability for this key.
Try in the explorer/v1/f1/openapi.jsonNo keyThis OpenAPI document (keyless).
Try in the explorer/v1/f1/seasonsEvery F1 planEvery championship season since 1950 with round counts.
Try in the explorer/v1/f1/circuitsEvery F1 planEvery circuit with location, layout and race history counts.
Try in the explorer/v1/f1/circuits/{id}Every F1 planOne circuit.
| Parameter | In | Required | Description |
|---|---|---|---|
id | path | Yes | Circuit id, ends in -circuit. |
/v1/f1/driversEvery F1 planDrivers with career aggregates.
| Parameter | In | Required | Description |
|---|---|---|---|
season | query | No | Season year. |
active | query | No | 1 = current grid only, 0 = all. |
/v1/f1/drivers/{id}Every F1 planOne driver with career aggregates.
| Parameter | In | Required | Description |
|---|---|---|---|
id | path | Yes | Driver slug, e.g. george-russell. |
/v1/f1/constructorsEvery F1 planConstructors with history.
Try in the explorer/v1/f1/constructors/{id}Every F1 planOne constructor.
| Parameter | In | Required | Description |
|---|---|---|---|
id | path | Yes | Constructor slug. |
/v1/f1/eventsEvery F1 planGrand Prix weekends of a season with their sessions.
| Parameter | In | Required | Description |
|---|---|---|---|
season | query | No | Season year. |
/v1/f1/events/{id}Every F1 planOne event with sessions and classified results.
| Parameter | In | Required | Description |
|---|---|---|---|
id | path | Yes | Event id yyyy-slug. |
/v1/f1/sessionsEvery F1 planSessions (practice, sprint, qualifying, race) for an event or season.
| Parameter | In | Required | Description |
|---|---|---|---|
event | query | No | Event id. |
season | query | No | Season year. |
/v1/f1/sessions/{id}Every F1 planOne session with its classification.
| Parameter | In | Required | Description |
|---|---|---|---|
id | path | Yes | Session id. |
/v1/f1/standings/driversEvery F1 planDrivers' championship table, optionally with round-by-round progression.
| Parameter | In | Required | Description |
|---|---|---|---|
season | query | No | Season year. |
progression | query | No | 1 = include round-by-round progression. |
/v1/f1/standings/constructorsEvery F1 planConstructors' championship table, optionally with progression.
| Parameter | In | Required | Description |
|---|---|---|---|
season | query | No | Season year. |
progression | query | No | 1 = include round-by-round progression. |
/v1/f1/resultsEvery F1 planClassified results per event and session type.
| Parameter | In | Required | Description |
|---|---|---|---|
season | query | No | Season year. |
event | query | No | Event id. |
session_type | query | No | race, sprint, qualifying, … |
/v1/f1/dna/driver/{id}All Sports class and aboveDriver DNA: percentile profile of qualifying, racecraft, consistency and teammate battles.
| Parameter | In | Required | Description |
|---|---|---|---|
id | path | Yes | Driver slug. |
/v1/f1/dna/constructor/{id}All Sports class and aboveConstructor DNA by season.
| Parameter | In | Required | Description |
|---|---|---|---|
id | path | Yes | Constructor slug. |
season | query | No | Season year. |
/v1/f1/dna/circuit/{id}All Sports class and aboveCircuit DNA: what the track rewards, with winners.
| Parameter | In | Required | Description |
|---|---|---|---|
id | path | Yes | Circuit id. |
/v1/f1/fit/{event}Pro class and aboveCircuit Fit: how each driver profile suits an upcoming event.
| Parameter | In | Required | Description |
|---|---|---|---|
event | path | Yes | Event id yyyy-slug. |
/v1/f1/matchups/{a}/{b}Pro class and aboveHead-to-head between two drivers: qualifying and race battles, recent meetings.
| Parameter | In | Required | Description |
|---|---|---|---|
a | path | Yes | Driver slug. |
b | path | Yes | Driver slug. |
/v1/accountAny PropSports keyKey status, plan, product entitlements and today's quota.
Try in the explorer/v1/account/usageAny PropSports keyDaily request totals and today's per-endpoint breakdown.
| Parameter | In | Required | Description |
|---|---|---|---|
days integer | query | No | Days of history, 1–31 (default 14). |
06 Authentication
Send your PropSports key on every data request.
X-API-Key: <your key>. Authorization: Bearer <key> and ?key= are also accepted; prefer the header so keys stay out of logs.403 plan_not_entitled or 403 plan_upgrade_required./v1/f1/openapi.json needs no key. On this host, /v1/f1 requests without a key are served by the public PropBetEdge Formula 1 data plane, so send your key on every commercial call, including the catalogue.GET /v1/account, or on the account page, where you can also rotate or revoke the key.07 Quickstart
Export your key as PROPSPORTS_KEY, then call /v1/f1/standings/drivers.
curl -s "https://propsports.proptechusa.ai/v1/f1/standings/drivers?season=2025" \
-H "X-API-Key: $PROPSPORTS_KEY" \
-D - -o response.json # -D prints the X-RateLimit-* headersconst res = await fetch(
"https://propsports.proptechusa.ai/v1/f1/standings/drivers?season=2025",
{ headers: { "X-API-Key": process.env.PROPSPORTS_KEY } }
);
const body = await res.json();
if (!body.ok) throw new Error(`${body.error.code}: ${body.error.message}`);
console.log(res.headers.get("X-RateLimit-Remaining"), body.meta.as_of, body.data);import os, requests
r = requests.get(
"https://propsports.proptechusa.ai/v1/f1/standings/drivers",
params={"season": "2025"},
headers={"X-API-Key": os.environ["PROPSPORTS_KEY"]},
timeout=30,
)
body = r.json()
if not body["ok"]:
raise RuntimeError(f'{body["error"]["code"]}: {body["error"]["message"]}')
print(r.headers["X-RateLimit-Remaining"], body["meta"].get("as_of"), body["data"])08 Filtering
season active event progression session_type. Each route lists the parameters it accepts; an unknown parameter returns 400 unknown_parameter and a malformed value 400 invalid_parameter.{ok, data, meta}; when a route returns a pagination block (total, limit, offset, returned, next_offset), read it rather than counting rows.george-russell); events use yyyy-slug; circuit ids end in -circuit.09 Rate limits and quotas
429 rate_limited with Retry-After: 60.429 daily_quota_exceeded. The counter resets at midnight America/New_York.X-RateLimit-Limit (daily quota), X-RateLimit-Remaining and X-RateLimit-Reset (ISO time of the next reset) on every metered response, plus X-Request-Id for support./v1/account do not count against the quota. /v1/account/usage?days=14 returns your daily totals.10 Data freshness
CURRENT. Treat any other value as a signal to check /v1/f1/seasons before relying on the numbers.11 Errors
Every error is {"ok": false, "error": {"status", "code", "message", "hint"}, "meta": {"request_id", …}}. Branch on error.code; quote meta.request_id when you contact support.
| Status | Meaning | error.code |
|---|---|---|
| 400 | Invalid or unknown parameter. | invalid_parameter unknown_parameter invalid_query repeated_parameter invalid_request |
| 401 | Missing or invalid API key. | api_key_required invalid_api_key |
| 402 | Subscription inactive, expired or key revoked. | subscription_expired subscription_inactive api_key_revoked |
| 403 | Plan does not include this product or route. | plan_not_entitled plan_upgrade_required |
| 404 | Unknown route or entity. | route_not_found not_found not_available |
| 429 | Per-minute burst limit or daily quota (daily_quota_exceeded) reached. | rate_limited |
| 451 | Data class withheld for legal reasons. | unavailable_for_legal_reasons |
| 503 | Product not released or data service unavailable. | product_unavailable upstream_unavailable |
12 Real responses
Captured 2026-11-01 from the Formula 1 commercial core over the live production data. Arrays are trimmed to three rows.
/v1/f1/events?season=2025200 · 64 ms{
"data_source": "PropSports",
"ok": true,
"data": [
{
"id": "2025-australian-grand-prix",
"season": 2025,
"round": 1,
"name": "Australian Grand Prix",
"circuit_id": "albert-park",
"start_utc": "2025-03-14T01:30Z",
"end_utc": "2025-03-16T04:00Z",
"status": "completed",
"format": "conventional",
"sprint": false,
"sessions": [
{
"id": "2025-australian-grand-prix-fp1",
"event_id": "2025-australian-grand-prix",
"type": "fp1",
"label": "Practice 1",
"start_utc": "2025-03-14T01:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-australian-grand-prix-fp2",
"event_id": "2025-australian-grand-prix",
"type": "fp2",
"label": "Practice 2",
"start_utc": "2025-03-14T05:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-australian-grand-prix-fp3",
"event_id": "2025-australian-grand-prix",
"type": "fp3",
"label": "Practice 3",
"start_utc": "2025-03-15T01:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
}
]
},
{
"id": "2025-chinese-grand-prix",
"season": 2025,
"round": 2,
"name": "Chinese Grand Prix",
"circuit_id": "shanghai-international-circuit",
"start_utc": "2025-03-21T03:30Z",
"end_utc": "2025-03-23T07:00Z",
"status": "completed",
"format": "sprint",
"sprint": true,
"sessions": [
{
"id": "2025-chinese-grand-prix-fp1",
"event_id": "2025-chinese-grand-prix",
"type": "fp1",
"label": "Practice 1",
"start_utc": "2025-03-21T03:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-chinese-grand-prix-sprint-qualifying",
"event_id": "2025-chinese-grand-prix",
"type": "sprint_qualifying",
"label": "Sprint Qualifying",
"start_utc": "2025-03-21T07:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-chinese-grand-prix-sprint",
"event_id": "2025-chinese-grand-prix",
"type": "sprint",
"label": "Sprint",
"start_utc": "2025-03-22T03:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
}
]
},
{
"id": "2025-japanese-grand-prix",
"season": 2025,
"round": 3,
"name": "Japanese Grand Prix",
"circuit_id": "suzuka-circuit",
"start_utc": "2025-04-04T02:30Z",
"end_utc": "2025-04-06T05:00Z",
"status": "completed",
"format": "conventional",
"sprint": false,
"sessions": [
{
"id": "2025-japanese-grand-prix-fp1",
"event_id": "2025-japanese-grand-prix",
"type": "fp1",
"label": "Practice 1",
"start_utc": "2025-04-04T02:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-japanese-grand-prix-fp2",
"event_id": "2025-japanese-grand-prix",
"type": "fp2",
"label": "Practice 2",
"start_utc": "2025-04-04T06:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-japanese-grand-prix-fp3",
"event_id": "2025-japanese-grand-prix",
"type": "fp3",
"label": "Practice 3",
"start_utc": "2025-04-05T02:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
}
]
}
],
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "events",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_1f6ba41e1f73af8705",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"season": 2025,
"served_ms": 16,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/drivers?active=1200 · 12 ms{
"data_source": "PropSports",
"ok": true,
"data": [
{
"id": "fernando-alonso",
"name": "Fernando Alonso",
"first_name": "Fernando",
"last_name": "Alonso",
"code": "ALO",
"nationality": "Spain",
"date_of_birth": "1981-07-29",
"number": "14",
"team_id": "aston-martin",
"team_season": 2026,
"career": {
"starts": 443,
"wins": 32,
"podiums": 106,
"poles": 22,
"fastest_laps": 26,
"points": 2400,
"championships": [
2005,
2006
],
"first_season": 2001,
"last_season": 2026,
"best_finish": 1
}
},
{
"id": "nico-hulkenberg",
"name": "Nico Hülkenberg",
"first_name": "Nico",
"last_name": "Hülkenberg",
"code": "HUL",
"nationality": "Germany",
"date_of_birth": "1987-08-19",
"number": "27",
"team_id": "audi",
"team_season": 2026,
"career": {
"starts": 272,
"wins": 0,
"podiums": 1,
"poles": 1,
"fastest_laps": 2,
"points": 635,
"championships": [],
"first_season": 2010,
"last_season": 2026,
"best_finish": 3
}
},
{
"id": "sergio-perez",
"name": "Sergio Pérez",
"first_name": "Sergio",
"last_name": "Pérez",
"code": "PER",
"nationality": "Mexico",
"date_of_birth": "1989-12-26",
"number": "11",
"team_id": "cadillac",
"team_season": 2026,
"career": {
"starts": 300,
"wins": 6,
"podiums": 38,
"poles": 3,
"fastest_laps": 12,
"points": 1638,
"championships": [],
"first_season": 2011,
"last_season": 2026,
"best_finish": 1
}
}
],
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "drivers",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_1b61e6e2fcaacabd80",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"count": 23,
"served_ms": 6,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/constructors200 · 8 ms{
"data_source": "PropSports",
"ok": true,
"data": [
{
"id": "a-t-s",
"name": "A.T.S.",
"lineage_id": "a-t-s",
"first_season": 1963,
"last_season": 1963
},
{
"id": "adams",
"name": "Adams",
"lineage_id": "adams",
"first_season": 1950,
"last_season": 1950
},
{
"id": "afm",
"name": "AFM",
"lineage_id": "afm",
"first_season": 1952,
"last_season": 1953
}
],
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "constructors",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_03f74f2bf5abc696b2",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 3,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/circuits200 · 9 ms{
"data_source": "PropSports",
"ok": true,
"data": [
{
"id": "hungaroring",
"name": "Hungaroring",
"locality": "Budapest",
"country": "Hungary",
"lat": 47.582222222,
"lon": 19.251111111,
"latest_layout": {
"length_km": 4.381,
"turns": 14,
"layout_type": "Track"
},
"opened": 1985
},
{
"id": "suzuka-circuit",
"name": "Suzuka Circuit",
"locality": "Suzuka",
"country": "Japan",
"lat": 34.841666666,
"lon": 136.538888888,
"latest_layout": {
"length_km": 5.807,
"turns": 18,
"layout_type": "Track"
},
"opened": 1962
},
{
"id": "circuit-de-catalunya",
"name": "Circuit de Catalunya",
"locality": "Barcelona",
"country": "Spain",
"lat": 41.57,
"lon": 2.261111111,
"latest_layout": {
"length_km": 4.655,
"turns": 16,
"layout_type": "Track"
},
"opened": 1989
}
],
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "circuits",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_0775391e6450893dee",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 5,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1200 · 4 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"current_season": 2026,
"counts": {
"seasons": 77,
"events": 1176,
"drivers": 906,
"constructors": 183,
"circuits": 77
},
"features": [
{
"key": "f1_core",
"min_plan": "developer",
"label": "F1 core: seasons, drivers, constructors, circuits, events, sessions, standings, results",
"available": true
},
{
"key": "f1_dna",
"min_plan": "pro",
"label": "F1 Driver, Constructor and Circuit DNA (PropBetEdge-derived)",
"available": true
},
{
"key": "f1_intelligence",
"min_plan": "ultra",
"label": "F1 Circuit Fit and driver Matchups (PropBetEdge-derived)",
"available": true
}
],
"routes": [
{
"key": "seasons",
"path": "/v1/f1/seasons",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "drivers",
"path": "/v1/f1/drivers",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "driver",
"path": "/v1/f1/drivers/{id}",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "constructors",
"path": "/v1/f1/constructors",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "constructor",
"path": "/v1/f1/constructors/{id}",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "circuits",
"path": "/v1/f1/circuits",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "circuit",
"path": "/v1/f1/circuits/{id}",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "events",
"path": "/v1/f1/events",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "event",
"path": "/v1/f1/events/{event_id}",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "sessions",
"path": "/v1/f1/sessions",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "session",
"path": "/v1/f1/sessions/{event_id}",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "standings_drivers",
"path": "/v1/f1/standings/drivers",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "standings_constructors",
"path": "/v1/f1/standings/constructors",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "results",
"path": "/v1/f1/results",
"feature": "f1_core",
"min_plan": "developer",
"available": true
},
{
"key": "driver_dna",
"path": "/v1/f1/dna/driver/{id}",
"feature": "f1_dna",
"min_plan": "pro",
"available": true
},
{
"key": "constructor_dna",
"path": "/v1/f1/dna/constructor/{id}",
"feature": "f1_dna",
"min_plan": "pro",
"available": true
},
{
"key": "circuit_dna",
"path": "/v1/f1/dna/circuit/{id}",
"feature": "f1_dna",
"min_plan": "pro",
"available": true
},
{
"key": "circuit_fit",
"path": "/v1/f1/fit/{event_id}",
"feature": "f1_intelligence",
"min_plan": "ultra",
"available": true
},
{
"key": "matchup",
"path": "/v1/f1/matchups/{id}/{id}",
"feature": "f1_intelligence",
"min_plan": "ultra",
"available": true
}
]
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "index",
"feature": null,
"plan": "enterprise",
"request_id": "req_312bc74be6db7d1bb1",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 0,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/seasons200 · 9 ms{
"data_source": "PropSports",
"ok": true,
"data": [
{
"year": 1950,
"rounds": 7,
"canceled": 0,
"completed": 7,
"regulations_era": "Early championship (1950–1960)"
},
{
"year": 1951,
"rounds": 8,
"canceled": 0,
"completed": 8,
"regulations_era": "Early championship (1950–1960)"
},
{
"year": 1952,
"rounds": 8,
"canceled": 0,
"completed": 8,
"regulations_era": "Early championship (1950–1960)"
}
],
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "seasons",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_05cbf174be7e80fb9a",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 5,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/circuits/hungaroring200 · 3 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"id": "hungaroring",
"name": "Hungaroring",
"locality": "Budapest",
"country": "Hungary",
"lat": 47.582222222,
"lon": 19.251111111,
"latest_layout": {
"length_km": 4.381,
"turns": 14,
"layout_type": "Track"
},
"opened": 1985
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "circuit",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_c141fa9eccaf7fc568",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 0,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/drivers/fernando-alonso200 · 3 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"id": "fernando-alonso",
"name": "Fernando Alonso",
"first_name": "Fernando",
"last_name": "Alonso",
"code": "ALO",
"nationality": "Spain",
"date_of_birth": "1981-07-29",
"number": "14",
"team_id": "aston-martin",
"team_season": 2026,
"career": {
"starts": 443,
"wins": 32,
"podiums": 106,
"poles": 22,
"fastest_laps": 26,
"points": 2400,
"championships": [
2005,
2006
],
"first_season": 2001,
"last_season": 2026,
"best_finish": 1
}
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "driver",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_bdc4183627269e1a96",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 0,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/events/2025-australian-grand-prix200 · 6 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"id": "2025-australian-grand-prix",
"season": 2025,
"round": 1,
"name": "Australian Grand Prix",
"circuit_id": "albert-park",
"start_utc": "2025-03-14T01:30Z",
"end_utc": "2025-03-16T04:00Z",
"status": "completed",
"format": "conventional",
"sprint": false,
"sessions": [
{
"id": "2025-australian-grand-prix-fp1",
"event_id": "2025-australian-grand-prix",
"type": "fp1",
"label": "Practice 1",
"start_utc": "2025-03-14T01:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null,
"results": [
{
"position": 1,
"driver_id": "lando-norris",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "4",
"grid": null,
"status": "classified",
"laps": 21,
"time": null,
"time_ms": null,
"gap": null,
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
},
{
"position": 2,
"driver_id": "carlos-sainz",
"constructor_id": "williams",
"constructor_inferred": false,
"car_number": "55",
"grid": null,
"status": "classified",
"laps": 25,
"time": null,
"time_ms": null,
"gap": "+0.149",
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
},
{
"position": 3,
"driver_id": "charles-leclerc",
"constructor_id": "ferrari",
"constructor_inferred": false,
"car_number": "16",
"grid": null,
"status": "classified",
"laps": 21,
"time": null,
"time_ms": null,
"gap": "+0.209",
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
}
]
},
{
"id": "2025-australian-grand-prix-fp2",
"event_id": "2025-australian-grand-prix",
"type": "fp2",
"label": "Practice 2",
"start_utc": "2025-03-14T05:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null,
"results": [
{
"position": 1,
"driver_id": "charles-leclerc",
"constructor_id": "ferrari",
"constructor_inferred": false,
"car_number": "16",
"grid": null,
"status": "classified",
"laps": 32,
"time": null,
"time_ms": null,
"gap": null,
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
},
{
"position": 2,
"driver_id": "oscar-piastri",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "81",
"grid": null,
"status": "classified",
"laps": 30,
"time": null,
"time_ms": null,
"gap": "+0.124",
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
},
{
"position": 3,
"driver_id": "lando-norris",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "4",
"grid": null,
"status": "classified",
"laps": 30,
"time": null,
"time_ms": null,
"gap": "+0.141",
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
}
]
},
{
"id": "2025-australian-grand-prix-fp3",
"event_id": "2025-australian-grand-prix",
"type": "fp3",
"label": "Practice 3",
"start_utc": "2025-03-15T01:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null,
"results": [
{
"position": 1,
"driver_id": "oscar-piastri",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "81",
"grid": null,
"status": "classified",
"laps": 16,
"time": null,
"time_ms": null,
"gap": null,
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
},
{
"position": 2,
"driver_id": "george-russell",
"constructor_id": "mercedes",
"constructor_inferred": false,
"car_number": "63",
"grid": null,
"status": "classified",
"laps": 17,
"time": null,
"time_ms": null,
"gap": "+0.039",
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
},
{
"position": 3,
"driver_id": "max-verstappen",
"constructor_id": "red-bull",
"constructor_inferred": false,
"car_number": "1",
"grid": null,
"status": "classified",
"laps": 18,
"time": null,
"time_ms": null,
"gap": "+0.081",
"behind_laps": null,
"points": null,
"points_scope": null,
"laps_led": null,
"pit_stops": null
}
]
}
]
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "event",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_6ca33432e1be739a99",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 2,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/sessions?event=2025-australian-grand-prix200 · 6 ms{
"data_source": "PropSports",
"ok": true,
"data": [
{
"id": "2025-australian-grand-prix-fp1",
"event_id": "2025-australian-grand-prix",
"type": "fp1",
"label": "Practice 1",
"start_utc": "2025-03-14T01:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-australian-grand-prix-fp2",
"event_id": "2025-australian-grand-prix",
"type": "fp2",
"label": "Practice 2",
"start_utc": "2025-03-14T05:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-australian-grand-prix-fp3",
"event_id": "2025-australian-grand-prix",
"type": "fp3",
"label": "Practice 3",
"start_utc": "2025-03-15T01:30Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-australian-grand-prix-qualifying",
"event_id": "2025-australian-grand-prix",
"type": "qualifying",
"label": "Qualifying",
"start_utc": "2025-03-15T05:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": null,
"distance_km": null
},
{
"id": "2025-australian-grand-prix-race",
"event_id": "2025-australian-grand-prix",
"type": "race",
"label": "Grand Prix",
"start_utc": "2025-03-16T04:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": 57,
"distance_km": 307
}
],
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "sessions",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_3bf9de8cab2125c343",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"season": 2025,
"served_ms": 0,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/sessions/2025-australian-grand-prix-race200 · 4 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"id": "2025-australian-grand-prix-race",
"event_id": "2025-australian-grand-prix",
"type": "race",
"label": "Grand Prix",
"start_utc": "2025-03-16T04:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": 57,
"distance_km": 307,
"results": [
{
"position": 1,
"driver_id": "lando-norris",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "4",
"grid": 1,
"status": "classified",
"laps": 57,
"time": "1:42:06.304",
"time_ms": 6126304,
"gap": null,
"behind_laps": null,
"points": 25,
"points_scope": "race",
"laps_led": 1,
"pit_stops": 5
},
{
"position": 2,
"driver_id": "max-verstappen",
"constructor_id": "red-bull",
"constructor_inferred": false,
"car_number": "1",
"grid": 3,
"status": "classified",
"laps": 57,
"time": "1:42:07.199",
"time_ms": 6127199,
"gap": "+0.895",
"behind_laps": null,
"points": 18,
"points_scope": "race",
"laps_led": 2,
"pit_stops": 5
},
{
"position": 3,
"driver_id": "george-russell",
"constructor_id": "mercedes",
"constructor_inferred": false,
"car_number": "63",
"grid": 4,
"status": "classified",
"laps": 57,
"time": "1:42:14.785",
"time_ms": 6134785,
"gap": "+8.481",
"behind_laps": null,
"points": 15,
"points_scope": "race",
"laps_led": null,
"pit_stops": 5
}
]
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "session",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_c83dc5ba4c7017f155",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 1,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/standings/drivers?season=2025&progression=1200 · 17 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"season": 2025,
"standings": [
{
"position": 1,
"driver_id": "lando-norris",
"points": 423,
"wins": 7,
"poles": 7
},
{
"position": 2,
"driver_id": "max-verstappen",
"points": 421,
"wins": 8,
"poles": 8
},
{
"position": 3,
"driver_id": "oscar-piastri",
"points": 410,
"wins": 7,
"poles": 6
}
],
"progression": [
{
"event_id": "2025-australian-grand-prix",
"round": 1,
"totals": {
"lando-norris": {
"p": 25,
"pos": 1
},
"max-verstappen": {
"p": 18,
"pos": 2
},
"george-russell": {
"p": 15,
"pos": 3
},
"kimi-antonelli": {
"p": 12,
"pos": 4
},
"alexander-albon": {
"p": 10,
"pos": 5
},
"lance-stroll": {
"p": 8,
"pos": 6
},
"nico-hulkenberg": {
"p": 6,
"pos": 7
},
"charles-leclerc": {
"p": 4,
"pos": 8
},
"oscar-piastri": {
"p": 2,
"pos": 9
},
"lewis-hamilton": {
"p": 1,
"pos": 10
},
"pierre-gasly": {
"p": 0,
"pos": 11
},
"yuki-tsunoda": {
"p": 0,
"pos": 12
},
"esteban-ocon": {
"p": 0,
"pos": 13
},
"oliver-bearman": {
"p": 0,
"pos": 14
},
"fernando-alonso": {
"p": 0,
"pos": 15
},
"carlos-sainz": {
"p": 0,
"pos": 16
},
"liam-lawson": {
"p": 0,
"pos": 17
},
"jack-doohan": {
"p": 0,
"pos": 18
},
"isack-hadjar": {
"p": 0,
"pos": 19
},
"gabriel-bortoleto": {
"p": 0,
"pos": 20
}
}
},
{
"event_id": "2025-chinese-grand-prix",
"round": 2,
"totals": {
"lando-norris": {
"p": 44,
"pos": 1
},
"max-verstappen": {
"p": 36,
"pos": 2
},
"george-russell": {
"p": 35,
"pos": 3
},
"oscar-piastri": {
"p": 34,
"pos": 4
},
"kimi-antonelli": {
"p": 22,
"pos": 5
},
"alexander-albon": {
"p": 16,
"pos": 6
},
"esteban-ocon": {
"p": 10,
"pos": 7
},
"lance-stroll": {
"p": 10,
"pos": 8
},
"lewis-hamilton": {
"p": 9,
"pos": 9
},
"charles-leclerc": {
"p": 8,
"pos": 10
},
"nico-hulkenberg": {
"p": 6,
"pos": 11
},
"oliver-bearman": {
"p": 4,
"pos": 12
},
"yuki-tsunoda": {
"p": 3,
"pos": 13
},
"carlos-sainz": {
"p": 1,
"pos": 14
},
"pierre-gasly": {
"p": 0,
"pos": 15
},
"isack-hadjar": {
"p": 0,
"pos": 16
},
"liam-lawson": {
"p": 0,
"pos": 17
},
"jack-doohan": {
"p": 0,
"pos": 18
},
"gabriel-bortoleto": {
"p": 0,
"pos": 19
},
"fernando-alonso": {
"p": 0,
"pos": 20
}
}
},
{
"event_id": "2025-japanese-grand-prix",
"round": 3,
"totals": {
"lando-norris": {
"p": 62,
"pos": 1
},
"max-verstappen": {
"p": 61,
"pos": 2
},
"oscar-piastri": {
"p": 49,
"pos": 3
},
"george-russell": {
"p": 45,
"pos": 4
},
"kimi-antonelli": {
"p": 30,
"pos": 5
},
"charles-leclerc": {
"p": 20,
"pos": 6
},
"alexander-albon": {
"p": 18,
"pos": 7
},
"lewis-hamilton": {
"p": 15,
"pos": 8
},
"esteban-ocon": {
"p": 10,
"pos": 9
},
"lance-stroll": {
"p": 10,
"pos": 10
},
"nico-hulkenberg": {
"p": 6,
"pos": 11
},
"oliver-bearman": {
"p": 5,
"pos": 12
},
"isack-hadjar": {
"p": 4,
"pos": 13
},
"yuki-tsunoda": {
"p": 3,
"pos": 14
},
"carlos-sainz": {
"p": 1,
"pos": 15
},
"pierre-gasly": {
"p": 0,
"pos": 16
},
"fernando-alonso": {
"p": 0,
"pos": 17
},
"liam-lawson": {
"p": 0,
"pos": 18
},
"jack-doohan": {
"p": 0,
"pos": 19
},
"gabriel-bortoleto": {
"p": 0,
"pos": 20
}
}
}
],
"note": null
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "standings_drivers",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_7098aa6cf2b59ec2ec",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 10,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/standings/constructors?season=2025200 · 4 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"season": 2025,
"standings": [
{
"position": 1,
"constructor_id": "mclaren",
"points": 833,
"wins": 14,
"poles": 13
},
{
"position": 2,
"constructor_id": "mercedes",
"points": 469,
"wins": 2,
"poles": 2
},
{
"position": 3,
"constructor_id": "red-bull",
"points": 451,
"wins": 8,
"poles": 8
},
{
"position": 4,
"constructor_id": "ferrari",
"points": 398,
"wins": 0,
"poles": 1
},
{
"position": 5,
"constructor_id": "williams",
"points": 137,
"wins": 0,
"poles": 0
},
{
"position": 6,
"constructor_id": "racing-bulls",
"points": 92,
"wins": 0,
"poles": 0
},
{
"position": 7,
"constructor_id": "aston-martin",
"points": 89,
"wins": 0,
"poles": 0
},
{
"position": 8,
"constructor_id": "haas",
"points": 79,
"wins": 0,
"poles": 0
},
{
"position": 9,
"constructor_id": "kick-sauber",
"points": 70,
"wins": 0,
"poles": 0
},
{
"position": 10,
"constructor_id": "alpine",
"points": 22,
"wins": 0,
"poles": 0
}
],
"note": null
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "standings_constructors",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_a0cf5cffb4cd6da7fc",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"served_ms": 1,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/results?season=2025200 · 12 ms{
"data_source": "PropSports",
"ok": true,
"data": [
{
"event_id": "2025-australian-grand-prix",
"round": 1,
"name": "Australian Grand Prix",
"session": {
"id": "2025-australian-grand-prix-race",
"event_id": "2025-australian-grand-prix",
"type": "race",
"label": "Grand Prix",
"start_utc": "2025-03-16T04:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": 57,
"distance_km": 307,
"results": [
{
"position": 1,
"driver_id": "lando-norris",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "4",
"grid": 1,
"status": "classified",
"laps": 57,
"time": "1:42:06.304",
"time_ms": 6126304,
"gap": null,
"behind_laps": null,
"points": 25,
"points_scope": "race",
"laps_led": 1,
"pit_stops": 5
},
{
"position": 2,
"driver_id": "max-verstappen",
"constructor_id": "red-bull",
"constructor_inferred": false,
"car_number": "1",
"grid": 3,
"status": "classified",
"laps": 57,
"time": "1:42:07.199",
"time_ms": 6127199,
"gap": "+0.895",
"behind_laps": null,
"points": 18,
"points_scope": "race",
"laps_led": 2,
"pit_stops": 5
},
{
"position": 3,
"driver_id": "george-russell",
"constructor_id": "mercedes",
"constructor_inferred": false,
"car_number": "63",
"grid": 4,
"status": "classified",
"laps": 57,
"time": "1:42:14.785",
"time_ms": 6134785,
"gap": "+8.481",
"behind_laps": null,
"points": 15,
"points_scope": "race",
"laps_led": null,
"pit_stops": 5
}
]
}
},
{
"event_id": "2025-chinese-grand-prix",
"round": 2,
"name": "Chinese Grand Prix",
"session": {
"id": "2025-chinese-grand-prix-race",
"event_id": "2025-chinese-grand-prix",
"type": "race",
"label": "Grand Prix",
"start_utc": "2025-03-23T07:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": 56,
"distance_km": 305,
"results": [
{
"position": 1,
"driver_id": "oscar-piastri",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "81",
"grid": 1,
"status": "classified",
"laps": 56,
"time": "1:30:55.026",
"time_ms": 5455026,
"gap": null,
"behind_laps": null,
"points": 32,
"points_scope": "weekend_incl_sprint",
"laps_led": 1,
"pit_stops": 1
},
{
"position": 2,
"driver_id": "lando-norris",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "4",
"grid": 3,
"status": "classified",
"laps": 56,
"time": "1:31:04.774",
"time_ms": 5464774,
"gap": "+9.748",
"behind_laps": null,
"points": 19,
"points_scope": "weekend_incl_sprint",
"laps_led": 1,
"pit_stops": 1
},
{
"position": 3,
"driver_id": "george-russell",
"constructor_id": "mercedes",
"constructor_inferred": false,
"car_number": "63",
"grid": 2,
"status": "classified",
"laps": 56,
"time": "1:31:06.123",
"time_ms": 5466123,
"gap": "+11.097",
"behind_laps": null,
"points": 20,
"points_scope": "weekend_incl_sprint",
"laps_led": null,
"pit_stops": 1
}
]
}
},
{
"event_id": "2025-japanese-grand-prix",
"round": 3,
"name": "Japanese Grand Prix",
"session": {
"id": "2025-japanese-grand-prix-race",
"event_id": "2025-japanese-grand-prix",
"type": "race",
"label": "Grand Prix",
"start_utc": "2025-04-06T05:00Z",
"time_confirmed": true,
"state": "completed",
"laps_scheduled": 53,
"distance_km": 307,
"results": [
{
"position": 1,
"driver_id": "max-verstappen",
"constructor_id": "red-bull",
"constructor_inferred": false,
"car_number": "1",
"grid": 1,
"status": "classified",
"laps": 53,
"time": "1:22:06.983",
"time_ms": 4926983,
"gap": null,
"behind_laps": null,
"points": 25,
"points_scope": "race",
"laps_led": 2,
"pit_stops": 1
},
{
"position": 2,
"driver_id": "lando-norris",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "4",
"grid": 2,
"status": "classified",
"laps": 53,
"time": "1:22:08.406",
"time_ms": 4928406,
"gap": "+1.423",
"behind_laps": null,
"points": 18,
"points_scope": "race",
"laps_led": null,
"pit_stops": 1
},
{
"position": 3,
"driver_id": "oscar-piastri",
"constructor_id": "mclaren",
"constructor_inferred": false,
"car_number": "81",
"grid": 3,
"status": "classified",
"laps": 53,
"time": "1:22:09.112",
"time_ms": 4929112,
"gap": "+2.129",
"behind_laps": null,
"points": 15,
"points_scope": "race",
"laps_led": null,
"pit_stops": 1
}
]
}
}
],
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "results",
"feature": "f1_core",
"plan": "enterprise",
"request_id": "req_7402ef191ae9ba9dcc",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": false,
"season": 2025,
"session_type": "race",
"served_ms": 3,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/dna/driver/fernando-alonso200 · 43 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"driver_id": "fernando-alonso",
"current": {
"driver_id": "fernando-alonso",
"window": "2025–2026",
"dimensions": {
"qualifying": {
"label": "Qualifying Pace",
"percentile": 90,
"sample_size": 38,
"min_sample": 6,
"confidence": "high",
"population": "24 drivers (2025–2026)",
"population_size": 24,
"basis": "median teammate qualifying gap (%), sign inverted",
"raw": {
"teammate_gap_pct_median": -0.359,
"teammate_gap_samples": 38,
"teammate_h2h": "39-2",
"q3_rate": 0.31,
"pole_rate": 0,
"front_row_rate": 0
}
},
"race_result": {
"label": "Race Result vs Teammate",
"percentile": 90,
"sample_size": 36,
"min_sample": 6,
"confidence": "high",
"population": "24 drivers (2025–2026)",
"population_size": 24,
"basis": "share of races finishing ahead of teammate (one-car retirements count for the finisher)",
"raw": {
"teammate_race_h2h": "25-11",
"avg_finish_delta_when_both_classified": 2.619
}
},
"positions_gained": {
"label": "Positions Gained",
"percentile": 33,
"sample_size": 31,
"min_sample": 6,
"confidence": "high",
"population": "23 drivers (2025–2026)",
"population_size": 23,
"basis": "mean grid-to-finish gain above the expectation for that grid slot (classified finishes)",
"raw": {
"mean_positions_gained": 1.194,
"expectation_adjusted": -0.895
}
},
"finishing": {
"label": "Finishing",
"percentile": 85,
"sample_size": 42,
"min_sample": 8,
"confidence": "high",
"population": "23 drivers (2025–2026)",
"population_size": 23,
"basis": "classification rate minus teammate classification rate (same car); any retirement cause counts",
"raw": {
"classification_rate": 0.738,
"teammate_classification_rate": 0.659,
"retirements": 11
}
},
"consistency": {
"label": "Consistency",
"percentile": 80,
"sample_size": 38,
"min_sample": 8,
"confidence": "high",
"population": "23 drivers (2025–2026)",
"population_size": 23,
"basis": "spread (std dev) of teammate qualifying gaps; lower spread ranks higher",
"raw": {
"teammate_gap_std_pct": 0.381,
"finish_position_std": 4.239
}
},
"scoring": {
"label": "Team Points Share",
"percentile": 83,
"sample_size": 17,
"min_sample": 6,
"confidence": "medium",
"population": "21 drivers (2025–2026)",
"population_size": 21,
"basis": "share of the team's points in events where the team scored",
"raw": {
"points": 63,
"team_points": 96,
"points_per_start": 1.5
}
},
"street": {
"label": "Street Circuits",
"percentile": 93,
"sample_size": 7,
"min_sample": 3,
"confidence": "low",
"population": "23 drivers (2025–2026)",
"population_size": 23,
"basis": "teammate qualifying gap on street layouts relative to the driver's overall gap (positive = relatively stronger)",
"raw": {
"teammate_gap_pct_median": -0.761,
"overall_gap_pct_median": -0.359
}
},
"high_speed": {
"label": "High-Speed Circuits",
"percentile": 7,
"sample_size": 13,
"min_sample": 3,
"confidence": "medium",
"population": "23 drivers (2025–2026)",
"population_size": 23,
"basis": "teammate qualifying gap on high pole-lap-speed circuits relative to the driver's overall gap (positive = relatively stronger)",
"raw": {
"teammate_gap_pct_median": -0.202,
"overall_gap_pct_median": -0.359
}
},
"low_speed": {
"label": "Low-Speed Circuits",
"percentile": 93,
"sample_size": 15,
"min_sample": 3,
"confidence": "medium",
"population": "23 drivers (2025–2026)",
"population_size": 23,
"basis": "teammate qualifying gap on low pole-lap-speed circuits relative to the driver's overall gap (positive = relatively stronger)",
"raw": {
"teammate_gap_pct_median": -0.661,
"overall_gap_pct_median": -0.359
}
}
},
"populated_dimensions": 9,
"qualifies": true,
"unavailable": {
"starts": "Needs lap-1 positions; no licensed lap-by-lap source.",
"defense": "Needs lap-by-lap position changes; not available.",
"tyre_management": "Needs stint and compound data; not available.",
"wet_weather": "Needs session weather observations; not available historically.",
"late_race": "Needs lap times or lap positions; not available.",
"race_pace": "Needs lap times; race classification is used for Race Result vs Teammate instead."
},
"version": "f1-dna-1.0.0",
"as_of": "2026-11-01T12:30:52.377Z"
},
"career": {
"driver_id": "fernando-alonso",
"window": "career, all eras",
"dimensions": {
"qualifying": {
"label": "Qualifying Pace",
"percentile": 89,
"sample_size": 291,
"min_sample": 6,
"confidence": "high",
"population": "582 drivers (career, all eras)",
"population_size": 582,
"basis": "median teammate qualifying gap (%), sign inverted",
"raw": {
"teammate_gap_pct_median": -0.332,
"teammate_gap_samples": 291,
"teammate_h2h": "334-109",
"q3_rate": 0.093,
"pole_rate": 0.049,
"front_row_rate": 0.09
}
},
"race_result": {
"label": "Race Result vs Teammate",
"percentile": 93,
"sample_size": 412,
"min_sample": 6,
"confidence": "high",
"population": "539 drivers (career, all eras)",
"population_size": 539,
"basis": "share of races finishing ahead of teammate (one-car retirements count for the finisher)",
"raw": {
"teammate_race_h2h": "285-127",
"avg_finish_delta_when_both_classified": 2.338
}
},
"positions_gained": {
"label": "Positions Gained",
"percentile": 75,
"sample_size": 359,
"min_sample": 6,
"confidence": "high",
"population": "321 drivers (career, all eras)",
"population_size": 321,
"basis": "mean grid-to-finish gain above the expectation for that grid slot (classified finishes)",
"raw": {
"mean_positions_gained": 1.721,
"expectation_adjusted": 0.784
}
},
"finishing": {
"label": "Finishing",
"percentile": 60,
"sample_size": 443,
"min_sample": 8,
"confidence": "high",
"population": "375 drivers (career, all eras)",
"population_size": 375,
"basis": "classification rate minus teammate classification rate (same car); any retirement cause counts",
"raw": {
"classification_rate": 0.81,
"teammate_classification_rate": 0.795,
"retirements": 84
}
},
"consistency": {
"label": "Consistency",
"percentile": 68,
"sample_size": 291,
"min_sample": 8,
"confidence": "high",
"population": "79 drivers (career, all eras)",
"population_size": 79,
"basis": "spread (std dev) of teammate qualifying gaps; lower spread ranks higher",
"raw": {
"teammate_gap_std_pct": 0.785,
"finish_position_std": 4.464
}
},
"scoring": {
"label": "Team Points Share",
"percentile": 97,
"sample_size": 320,
"min_sample": 6,
"confidence": "high",
"population": "290 drivers (career, all eras)",
"population_size": 290,
"basis": "share of the team's points in events where the team scored",
"raw": {
"points": 2400,
"team_points": 3647,
"points_per_start": 5.418
}
},
"street": {
"label": "Street Circuits",
"percentile": 76,
"sample_size": 49,
"min_sample": 3,
"confidence": "high",
"population": "72 drivers (career, all eras)",
"population_size": 72,
"basis": "teammate qualifying gap on street layouts relative to the driver's overall gap (positive = relatively stronger)",
"raw": {
"teammate_gap_pct_median": -0.45,
"overall_gap_pct_median": -0.332
}
},
"high_speed": {
"label": "High-Speed Circuits",
"percentile": 37,
"sample_size": 91,
"min_sample": 3,
"confidence": "high",
"population": "78 drivers (career, all eras)",
"population_size": 78,
"basis": "teammate qualifying gap on high pole-lap-speed circuits relative to the driver's overall gap (positive = relatively stronger)",
"raw": {
"teammate_gap_pct_median": -0.326,
"overall_gap_pct_median": -0.332
}
},
"low_speed": {
"label": "Low-Speed Circuits",
"percentile": 63,
"sample_size": 99,
"min_sample": 3,
"confidence": "high",
"population": "80 drivers (career, all eras)",
"population_size": 80,
"basis": "teammate qualifying gap on low pole-lap-speed circuits relative to the driver's overall gap (positive = relatively stronger)",
"raw": {
"teammate_gap_pct_median": -0.352,
"overall_gap_pct_median": -0.332
}
}
},
"populated_dimensions": 9,
"qualifies": true,
"unavailable": {
"starts": "Needs lap-1 positions; no licensed lap-by-lap source.",
"defense": "Needs lap-by-lap position changes; not available.",
"tyre_management": "Needs stint and compound data; not available.",
"wet_weather": "Needs session weather observations; not available historically.",
"late_race": "Needs lap times or lap positions; not available.",
"race_pace": "Needs lap times; race classification is used for Race Result vs Teammate instead."
},
"version": "f1-dna-1.0.0",
"as_of": "2026-11-01T12:30:52.377Z"
}
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "driver_dna",
"feature": "f1_dna",
"plan": "enterprise",
"request_id": "req_fc6c09a6e8282b786a",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": true,
"dna_version": "f1-dna-1.0.0",
"derived_by": "PropBetEdge",
"served_ms": 38,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/dna/constructor/alfa-romeo-sauber?season=2025200 · 6 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"constructor_id": "alfa-romeo-sauber",
"seasons": {
"2025": null
}
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "constructor_dna",
"feature": "f1_dna",
"plan": "enterprise",
"request_id": "req_5656298b00bf9b2967",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": true,
"dna_version": "f1-dna-1.0.0",
"derived_by": "PropBetEdge",
"served_ms": 0,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/dna/circuit/hungaroring200 · 6 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"circuit_id": "hungaroring",
"races_held": 41,
"first_season": 1986,
"last_season": 2026,
"recent_races": 11,
"race_laps": 70,
"race_distance_km": 306,
"lat": null,
"lon": null,
"opened": null,
"pole_lap_speed_kmh": 207.496,
"speed_class": "low",
"pole_win_rate": 0.364,
"front_row_win_rate": 0.636,
"grid_finish_rho": 0.85,
"mean_abs_position_change": 2.529,
"attrition_rate": 0.05,
"stops_per_car": 2,
"sample": {
"pole_races": 11,
"rho_races": 11,
"attrition_races": 11,
"stop_races": 11
},
"winners": [
{
"season": 2026,
"event_id": "2026-hungarian-grand-prix",
"driver_id": "lando-norris",
"constructor_id": "mclaren",
"grid": 1
},
{
"season": 2025,
"event_id": "2025-hungarian-grand-prix",
"driver_id": "lando-norris",
"constructor_id": "mclaren",
"grid": 3
},
{
"season": 2024,
"event_id": "2024-hungarian-grand-prix",
"driver_id": "oscar-piastri",
"constructor_id": "mclaren",
"grid": 2
},
{
"season": 2023,
"event_id": "2023-hungarian-grand-prix",
"driver_id": "max-verstappen",
"constructor_id": "red-bull",
"grid": 2
},
{
"season": 2022,
"event_id": "2022-hungarian-grand-prix",
"driver_id": "max-verstappen",
"constructor_id": "red-bull",
"grid": 10
},
{
"season": 2021,
"event_id": "2021-hungarian-grand-prix",
"driver_id": "esteban-ocon",
"constructor_id": "alpine",
"grid": 8
},
{
"season": 2020,
"event_id": "2020-hungarian-grand-prix",
"driver_id": "lewis-hamilton",
"constructor_id": "mercedes",
"grid": 1
},
{
"season": 2019,
"event_id": "2019-hungarian-grand-prix",
"driver_id": "lewis-hamilton",
"constructor_id": "mercedes",
"grid": 3
},
{
"season": 2018,
"event_id": "2018-hungarian-grand-prix",
"driver_id": "lewis-hamilton",
"constructor_id": "mercedes",
"grid": 1
},
{
"season": 2017,
"event_id": "2017-hungarian-grand-prix",
"driver_id": "sebastian-vettel",
"constructor_id": "ferrari",
"grid": 1
}
],
"top_drivers": [
{
"id": "lewis-hamilton",
"wins": 8
},
{
"id": "michael-schumacher",
"wins": 4
},
{
"id": "ayrton-senna",
"wins": 3
}
],
"top_constructors": [
{
"id": "mclaren",
"wins": 14
},
{
"id": "williams",
"wins": 7
},
{
"id": "ferrari",
"wins": 7
}
],
"dimensions": {
"track_position": {
"label": "Track Position Importance",
"percentile": 27,
"value": 0.607,
"sample_size": 11,
"confidence": "high",
"population": "31 circuits with ≥2 races in the last 10 seasons",
"basis": "mean of grid→finish rank correlation and pole conversion (last 10 seasons)"
},
"overtaking": {
"label": "Overtaking / Position Change",
"percentile": 27,
"value": 2.529,
"sample_size": 11,
"confidence": "high",
"population": "31 circuits with ≥2 races in the last 10 seasons",
"basis": "median mean absolute grid-to-finish change of classified cars"
},
"high_speed_demand": {
"label": "High-Speed Demand",
"percentile": 16,
"value": 207.496,
"sample_size": 11,
"confidence": "high",
"population": "29 circuits with ≥2 races in the last 10 seasons",
"basis": "pole-lap average speed (lap length ÷ fastest qualifying lap)"
},
"low_speed_demand": {
"label": "Low-Speed Demand",
"percentile": 84,
"value": -207.496,
"sample_size": 11,
"confidence": "high",
"population": "29 circuits with ≥2 races in the last 10 seasons",
"basis": "inverse of pole-lap average speed"
},
"attrition": {
"label": "Attrition",
"percentile": 3,
"value": 0.05,
"sample_size": 11,
"confidence": "high",
"population": "31 circuits with ≥2 races in the last 10 seasons",
"basis": "median share of starters not classified (any cause; safety-car data unavailable)"
},
"pit_load": {
"label": "Observed Pit Stops",
"percentile": 66,
"value": 2,
"sample_size": 11,
"confidence": "high",
"population": "31 circuits with ≥2 races in the last 10 seasons",
"basis": "median pit stops per classified car (2014+; observed counts, not a tyre model)"
}
},
"unavailable": {
"straight_line_demand": "Needs speed-trap or full-throttle data.",
"braking_demand": "Needs braking telemetry.",
"medium_speed_demand": "Needs corner-speed telemetry.",
"tyre_stress": "Needs Pirelli/tyre data; observed pit stops shown instead.",
"safety_car_volatility": "Needs race-control (safety car) events; attrition shown instead.",
"weather_volatility": "Needs historical weather observations.",
"drs_zones": "No licensed source for DRS zone definitions.",
"elevation_change": "Not sourced.",
"direction": "Not sourced."
},
"version": "f1-dna-1.0.0",
"as_of": "2026-11-01T12:30:52.377Z",
"street": false
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "circuit_dna",
"feature": "f1_dna",
"plan": "enterprise",
"request_id": "req_9476cd0c9ba58ae6ed",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": true,
"dna_version": "f1-dna-1.0.0",
"derived_by": "PropBetEdge",
"served_ms": 3,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/fit/2026-united-states-grand-prix200 · 4 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"event_id": "2026-united-states-grand-prix",
"circuit_id": "circuit-of-the-americas",
"version": "f1-dna-1.0.0",
"as_of": "2026-11-01T12:30:52.377Z",
"disclaimer": "Descriptive fit of current Driver/Constructor DNA to this circuit’s profile. Not a prediction or betting signal.",
"drivers": [
{
"driver_id": "max-verstappen",
"constructor_id": "red-bull",
"fit_score": 82,
"components": [
{
"key": "qualifying_x_track_position",
"label": "Qualifying × track position",
"percentile": 98,
"weight": 0.97,
"why": "Track position importance 47th pct",
"confidence": "high"
},
{
"key": "gains_x_overtaking",
"label": "Race gains × overtaking",
"percentile": 98,
"weight": 0.75,
"why": "Position-change circuit 45th pct",
"confidence": "high"
},
{
"key": "driver_low_speed",
"label": "Driver at low-speed circuits",
"percentile": 63,
"weight": 0.8,
"why": "Low pole-lap speed",
"confidence": "medium"
}
],
"strongest": [
"qualifying_x_track_position",
"gains_x_overtaking"
],
"weakest": [
"driver_low_speed",
"car_qualifying"
],
"confidence": "high",
"circuit_history": {
"starts": 11,
"best_finish": 1,
"avg_finish_vs_teammate": 3.429
}
},
{
"driver_id": "charles-leclerc",
"constructor_id": "ferrari",
"fit_score": 65,
"components": [
{
"key": "qualifying_x_track_position",
"label": "Qualifying × track position",
"percentile": 73,
"weight": 0.97,
"why": "Track position importance 47th pct",
"confidence": "high"
},
{
"key": "gains_x_overtaking",
"label": "Race gains × overtaking",
"percentile": 85,
"weight": 0.75,
"why": "Position-change circuit 45th pct",
"confidence": "high"
},
{
"key": "driver_low_speed",
"label": "Driver at low-speed circuits",
"percentile": 37,
"weight": 0.8,
"why": "Low pole-lap speed",
"confidence": "medium"
}
],
"strongest": [
"car_qualifying",
"gains_x_overtaking"
],
"weakest": [
"driver_low_speed",
"car_low_speed"
],
"confidence": "high",
"circuit_history": {
"starts": 8,
"best_finish": 1,
"avg_finish_vs_teammate": 1.333
}
},
{
"driver_id": "lewis-hamilton",
"constructor_id": "ferrari",
"fit_score": 65,
"components": [
{
"key": "qualifying_x_track_position",
"label": "Qualifying × track position",
"percentile": 35,
"weight": 0.97,
"why": "Track position importance 47th pct",
"confidence": "high"
},
{
"key": "gains_x_overtaking",
"label": "Race gains × overtaking",
"percentile": 89,
"weight": 0.75,
"why": "Position-change circuit 45th pct",
"confidence": "high"
},
{
"key": "driver_low_speed",
"label": "Driver at low-speed circuits",
"percentile": 76,
"weight": 0.8,
"why": "Low pole-lap speed",
"confidence": "medium"
}
],
"strongest": [
"gains_x_overtaking",
"car_qualifying"
],
"weakest": [
"qualifying_x_track_position",
"car_low_speed"
],
"confidence": "high",
"circuit_history": {
"starts": 14,
"best_finish": 1,
"avg_finish_vs_teammate": 1.545
}
}
]
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "circuit_fit",
"feature": "f1_intelligence",
"plan": "enterprise",
"request_id": "req_55578085e504d39fe3",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": true,
"dna_version": "f1-dna-1.0.0",
"derived_by": "PropBetEdge",
"served_ms": 1,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}/v1/f1/matchups/fernando-alonso/nico-hulkenberg200 · 33 ms{
"data_source": "PropSports",
"ok": true,
"data": {
"a": "fernando-alonso",
"b": "nico-hulkenberg",
"shared_events": 245,
"same_team_events": 0,
"race_comparable_events": 159,
"race_excluded_events": 86,
"race_ahead": [
108,
51
],
"quali_comparable_events": 245,
"quali_ahead": [
129,
116
],
"grid_fallback_events": 0,
"grid_ahead": [
0,
0
],
"quali_unavailable_events": 0,
"points": [
1406,
582
],
"wins": [
10,
0
],
"podiums": [
42,
1
],
"dnfs": [
49,
47
],
"first_season": 2010,
"last_season": 2026,
"by_season": {
"2010": {
"events": 19,
"same_team": 0,
"race_ahead": [
12,
2
],
"race_comparable": 14,
"quali_ahead": [
15,
4
],
"quali_comparable": 19,
"points": [
252,
22
]
},
"2012": {
"events": 20,
"same_team": 0,
"race_ahead": [
16,
0
],
"race_comparable": 16,
"quali_ahead": [
16,
4
],
"quali_comparable": 20,
"points": [
278,
63
]
},
"2013": {
"events": 19,
"same_team": 0,
"race_ahead": [
15,
1
],
"race_comparable": 16,
"quali_ahead": [
14,
5
],
"quali_comparable": 19,
"points": [
242,
51
]
},
"2014": {
"events": 19,
"same_team": 0,
"race_ahead": [
12,
3
],
"race_comparable": 15,
"quali_ahead": [
18,
1
],
"quali_comparable": 19,
"points": [
161,
96
]
},
"2015": {
"events": 18,
"same_team": 0,
"race_ahead": [
1,
4
],
"race_comparable": 5,
"quali_ahead": [
1,
17
],
"quali_comparable": 18,
"points": [
11,
52
]
},
"2016": {
"events": 20,
"same_team": 0,
"race_ahead": [
4,
9
],
"race_comparable": 13,
"quali_ahead": [
2,
18
],
"quali_comparable": 20,
"points": [
54,
72
]
},
"2017": {
"events": 19,
"same_team": 0,
"race_ahead": [
2,
3
],
"race_comparable": 5,
"quali_ahead": [
4,
15
],
"quali_comparable": 19,
"points": [
17,
43
]
},
"2018": {
"events": 21,
"same_team": 0,
"race_ahead": [
3,
6
],
"race_comparable": 9,
"quali_ahead": [
4,
17
],
"quali_comparable": 21,
"points": [
50,
69
]
},
"2022": {
"events": 2,
"same_team": 0,
"race_ahead": [
1,
0
],
"race_comparable": 1,
"quali_ahead": [
2,
0
],
"quali_comparable": 2,
"points": [
2,
0
]
},
"2023": {
"events": 22,
"same_team": 0,
"race_ahead": [
17,
1
],
"race_comparable": 18,
"quali_ahead": [
18,
4
],
"quali_comparable": 22,
"points": [
206,
9
]
},
"2024": {
"events": 24,
"same_team": 0,
"race_ahead": [
13,
7
],
"race_comparable": 20,
"quali_ahead": [
15,
9
],
"quali_comparable": 24,
"points": [
70,
41
]
},
"2025": {
"events": 24,
"same_team": 0,
"race_ahead": [
10,
7
],
"race_comparable": 17,
"quali_ahead": [
19,
5
],
"quali_comparable": 24,
"points": [
56,
51
]
},
"2026": {
"events": 18,
"same_team": 0,
"race_ahead": [
2,
8
],
"race_comparable": 10,
"quali_ahead": [
1,
17
],
"quali_comparable": 18,
"points": [
7,
13
]
}
},
"recent": [
{
"event_id": "2026-united-states-grand-prix",
"a": {
"constructor_id": "aston-martin",
"quali": 15,
"grid": 12,
"finish": 16,
"status": "classified",
"classified": true,
"points": 0
},
"b": {
"constructor_id": "audi",
"quali": 12,
"grid": 11,
"finish": 11,
"status": "classified",
"classified": true,
"points": 0
},
"same_team": false,
"ahead": "b"
},
{
"event_id": "2026-singapore-grand-prix",
"a": {
"constructor_id": "aston-martin",
"quali": 17,
"grid": 20,
"finish": 16,
"status": "classified",
"classified": true,
"points": 0
},
"b": {
"constructor_id": "audi",
"quali": 11,
"grid": 10,
"finish": 8,
"status": "classified",
"classified": true,
"points": 6
},
"same_team": false,
"ahead": "b"
},
{
"event_id": "2026-bahrain-grand-prix-in-malaysia",
"a": {
"constructor_id": "aston-martin",
"quali": 12,
"grid": 12,
"finish": 8,
"status": "classified",
"classified": true,
"points": 4
},
"b": {
"constructor_id": "audi",
"quali": 17,
"grid": 15,
"finish": 11,
"status": "classified",
"classified": true,
"points": 0
},
"same_team": false,
"ahead": "a"
}
],
"teammates": null
},
"meta": {
"sport": "f1",
"contract": "f1-commercial-1.0.0",
"data_source": "PropSports",
"route": "matchup",
"feature": "f1_intelligence",
"plan": "enterprise",
"request_id": "req_be246ebfd7687356d9",
"projection_version": "16e2314bd13e32d2",
"generated_at": "2026-11-01T12:30:55.974Z",
"activated_at": "2026-11-01T12:32:24.389Z",
"as_of": "2026-11-01T12:30:52.377Z",
"current_season": 2026,
"history_from": 1950,
"derived": true,
"dna_version": "f1-dna-1.0.0",
"derived_by": "PropBetEdge",
"served_ms": 27,
"api_version": "2026-11-01",
"product": "propsports-f1",
"release": "test"
}
}13 Changelog
f1-commercial-1.0.0 (API version 2026-11-01): 19 data routes, keyless discovery, structured errors, X-RateLimit headers, the shared daily quota and a 600-per-minute burst limit.Test-mode acceptance · not yet on sale. Explore the contract now; the store lists Formula 1 once it is on sale.
New API products