iRacing Data Driver Stats Scraper
iRacing Data Driver Stats Scraper
Extract iRacing driver profiles, iRating and Safety Rating history, race results, and season standings — no iRacing account required.
Data is sourced from the iracingdata.com public API (iracing6-backend.herokuapp.com), an open community aggregator that mirrors iRacing session and leaderboard data. The actor supports four scrape modes to cover the most common use cases.
What you get
Each record includes a record_type field indicating which mode produced it:
record_type |
Description |
|---|---|
recent_race |
Summary of the most recently completed races across all series |
leaderboard_entry |
Top-N drivers by iRating within a category |
race_result |
Per-driver result row for a specific race session |
driver_profile |
Career stats for a specific driver (by cust_id) |
Key fields
- cust_id — iRacing customer ID (stable primary key)
- display_name — driver display name
- irating / irating_after / irating_delta — iRating before and after a race
- license_class — Rookie / D / C / B / A / Pro (derived from license_level)
- safety_rating / safety_rating_after — SR as a 0-4.99 float
- cpi — corners-per-incident score
- finish_position, laps_complete, incidents, champ_points — race result metrics
- track_name, car_name, season_name — session context
- event_strength_of_field — average iRating of all participants in the session
Input
Mode: recent (default)
Returns the most recently completed race sessions across all series.
{
"mode": "recent",
"maxItems": 15
}
maxItems caps the number of session summaries returned (max 200).
Mode: leaderboard
Returns the top-N drivers by iRating for a category.
{
"mode": "leaderboard",
"leaderboardCategory": "oval",
"maxItems": 15
}
Valid categories: oval, road, dirt_oval, dirt_road, sports_car, formula_car, combined.
Each run returns up to 100 entries (the full top-100 for that category).
Mode: by_session
Fetches all per-driver results for a specific iRacing subsession ID. Returns one record per driver per session type (Practice, Qualifying, Race).
{
"mode": "by_session",
"subsessionId": 85685577,
"maxItems": 50
}
Find subsession IDs from the recent mode output or from iRacing session URLs.
Mode: by_driver
Look up career stats for specific drivers by their iRacing customer ID.
{
"mode": "by_driver",
"custIds": ["33988", "374558"],
"maxItems": 10
}
Note: The iracingdata.com backend indexes drivers on-demand. If a driver isn't in their database yet, they are queued and no record is returned for that run. Run again later.
Output format
Output is a flat dataset (one JSON object per record). Arrays are not used — all data is scalar.
Example leaderboard_entry record:
{
"record_type": "leaderboard_entry",
"rank": 1,
"cust_id": 33988,
"display_name": "Justin Brooks",
"irating": 11205,
"leaderboard_category": "oval",
"scraped_at": "2026-05-12T11:27:31.000Z"
}
Example race_result record:
{
"record_type": "race_result",
"cust_id": 818442,
"display_name": "Joosep Laiksoo",
"irating": 3084,
"irating_after": 3131,
"irating_delta": 47,
"license_class": "B",
"safety_rating": 4.57,
"finish_position": 0,
"laps_complete": 6,
"incidents": 0,
"track_name": "Sonoma Raceway",
"car_name": "FIA Cross Car",
"season_name": "FIA Cross Car Championship - 2026 Season 2",
"start_time_utc": "2026-05-12T10:45:00Z"
}
Use cases
- League management — pull weekly standings and results for championship tracking
- Sim coaching — track driver iRating and SR progression over sessions
- Content creation — weekly stats packages for YouTube / Twitch streams
- DFS / esports modelling — historical iRating trajectories and race result data
- Discord bots / leaderboards — live top-N iRating feeds by category
Pricing
Pay-per-event: $0.10 per run start + $0.001 per record scraped. A leaderboard pull of 100 drivers costs ~$0.20. A full race session with 30 drivers across Practice/Qualifying/Race costs ~$0.19.
Data source
Data comes from the iracingdata.com community aggregator (iracing6-backend.herokuapp.com), not directly from iRacing's servers. No iRacing account or credentials are required. The backend updates leaderboards approximately every 2 hours and ingests race results continuously.