// formula 1 data api

F1 data,
engineered
for developers.

Formula 1 lap times. Sector splits. Pit strategy. Tire compounds.
Championship standings. Independently verified.
One API. Sub-200ms latency.

GET /v1/sessions/:id/laps
$ curl -s "https://pitstopdata.p.rapidapi.com/v1/sessions/1234/laps?driver=VER" \ -H "x-rapidapi-key: <your-api-key>" { "data": [{ "lap": 15, "time_ms": 78432, "sector_1_ms": 25100, "sector_2_ms": 28900, "sector_3_ms": 24432, "tire_compound": "SOFT", "is_personal_best": true }] }
<200ms
Avg Latency
99.9%
Uptime SLA
20+
Endpoints
Multi
Source Verified

// data coverage

The data your competitors don't have.

Granular Formula 1 data across every session and every lap — compiled from independent community-driven sources and cross-verified.

Lap Times & Sectors

Per-lap timing with S1/S2/S3 splits, personal best flags, deleted lap markers, and tire compound per lap.

Pit Stop Strategy

Stop duration, pit lane time, tire compound in vs out, stop sequence number — structured for strategy analysis.

Session Results

Race, qualifying, sprint, and practice results cross-verified across independent community-driven sources with conflict resolution.

Championship Standings

Driver and constructor points snapshot after every round — full historical arc for any season.

Career History

Driver career team history season-by-season, car number assignments, and team season details.

// quick start

Ship in minutes, not weeks.

Any language that speaks HTTP. JSON responses. Copy, paste, run.

import requests headers = { "x-rapidapi-key": "<your-api-key>", "x-rapidapi-host": "pitstopdata.p.rapidapi.com" } # Get Verstappen's lap times with sector splits response = requests.get( "https://pitstopdata.p.rapidapi.com/v1/sessions/1234/laps", params={"driver": "VER"}, headers=headers ) laps = response.json()["data"] fastest = min(laps, key=lambda l: l["time_ms"]) print(f"Fastest: {fastest['time_ms']}ms on {fastest['tire_compound']}")
const response = await fetch( "https://pitstopdata.p.rapidapi.com/v1/sessions/1234/laps?driver=VER", { headers: { "x-rapidapi-key": "<your-api-key>", "x-rapidapi-host": "pitstopdata.p.rapidapi.com" }} ); const { data: laps } = await response.json(); const fastest = laps.reduce((a, b) => a.time_ms < b.time_ms ? a : b); console.log(`Fastest: ${fastest.time_ms}ms on ${fastest.tire_compound}`);
curl -s "https://pitstopdata.p.rapidapi.com/v1/sessions/1234/laps?driver=VER" \ -H "x-rapidapi-key: <your-api-key>" \ -H "x-rapidapi-host: pitstopdata.p.rapidapi.com" \ | jq '.data[0]'
req, _ := http.NewRequest("GET", "https://pitstopdata.p.rapidapi.com/v1/sessions/1234/laps?driver=VER", nil) req.Header.Add("x-rapidapi-key", "<your-api-key>") req.Header.Add("x-rapidapi-host", "pitstopdata.p.rapidapi.com") resp, _ := http.DefaultClient.Do(req) defer resp.Body.Close() var result struct{ Data []Lap `json:"data"` } json.NewDecoder(resp.Body).Decode(&result) fmt.Printf("Fastest: %dms\n", result.Data[0].TimeMs)

// pricing

Transparent pricing. Start free.

No credit card required for the free tier. Upgrade when you need more.

Basic
$0/mo
15 / day · 50 / month
  • Drivers & teams
  • Circuits & tracks
  • Seasons
Start Free
Pro
$4.99/mo
500 / day · 3,000 / month
  • Everything in Basic
  • Events & schedule
  • Session results
  • Championship standings
Get Started
Mega
$49.99/mo
10,000 / day · 100,000 / month
  • Everything in Ultra
  • Driver career history
  • Car numbers by season
  • Team season history
Get Started

All plans: JSON responses · Sub-200ms avg latency · 99.9% uptime · Hard limits (no surprise overage charges)

// coverage

Verified data, by season.

Current coverage by season. We're starting from 2000; older seasons will land as our archive grows. Bars are scaled against today's coverage window (2000 → 2026, 27 seasons).

Race Calendar & Sessions
Events · session schedules · classified results
2000 → 2026
27 seasons
Qualifying Results
Q1 / Q2 / Q3 times and grid positions
2000 → 2026
27 seasons
Championship Standings
Driver & constructor points by season
2001 → 2026
26 seasons
Sprint Sessions
Sprint format results (introduced 2021)
2021 → 2026
6 seasons
Driver & Team History
Per-season team assignments and seat changes
2000 → 2026
27 seasons
Driver Car Numbers
Per-round number assignment per driver
2018 → 2026
9 seasons
Lap Times & Sectors
Per-lap totals with S1 / S2 / S3 splits
2024 → 2026
3 seasons · backfill rolling out
Pit Stops
Stop lap, duration, sequence per driver
2024 → 2026
3 seasons · backfill rolling out
Populated in database
Partial — backfill in progress

Lap times and pit stops cover 2024 onward today; backfill to 2018+ is rolling out. Earlier seasons (1950+) will populate as our archive grows. Pre-2011 pit stop data isn't reliably available anywhere.

// faq

Questions

Formula 1 race results, qualifying, sprint sessions, practice data, lap times with sector splits, pit stop strategy including tire compounds, championship standings, circuit metadata, and driver/team career history.

Yes. The Basic plan gives you 15 requests/day and 50/month with access to reference data — drivers, teams, circuits, and seasons. No credit card required.

Session results, lap times, and standings are typically available within minutes of a session ending. Reference data updates as changes are announced.

Any language that can make HTTP requests. The API returns JSON. We provide code examples in Python, JavaScript, Go, and cURL.

Yes. All paid tiers include commercial usage rights. Build apps, dashboards, betting tools, fantasy platforms — the data is yours to use within our terms of service.

We compile data from independent community-driven sources, cross-check every field, and resolve conflicts using automated rules and manual curation.

You'll receive a 429 response. No overage charges — you simply wait for your quota to reset or upgrade your plan.

No. PitStop Data is an independent project and is not associated with Formula 1 companies or the FIA in any way.