Racing Reference Scraper - NASCAR, IndyCar & ARCA Race Results
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
Racing-Reference NASCAR / IndyCar Scraper
Extract race results and driver career statistics from Racing-Reference.info — the definitive historical database for NASCAR Cup, Xfinity, Truck, IndyCar, and ARCA racing data going back decades.
What It Does
Two operating modes in one actor:
Season mode — Fetches every race result for a given series and year. Produces one row per driver per race, including finishing position, laps led, points earned, sponsor, and car manufacturer. Each row also carries full race-level metadata (track, date, caution counts, lead changes, margin of victory).
Driver mode — Fetches a driver's career overview page and extracts per-series career totals: starts, wins, top-5s, top-10s, and poles. Useful for player lookups and comparative analysis.
Input Configuration
| Field | Type | Default | Description |
|---|---|---|---|
mode |
string | season |
season for race results, driver for career stats |
series |
string | W |
Series code: W (Cup), X (Xfinity), C (Trucks), I (IndyCar), A (ARCA) |
season |
integer | 2024 |
Year to scrape in season mode |
driverName |
string | — | Driver name for driver mode (e.g. William_Byron or William Byron). Required when mode is driver. |
maxItems |
integer | 15 |
Maximum number of records to return. 0 = unlimited. |
Output Fields
All records include a record_type field indicating which mode produced them.
Race Result Records (record_type: "race_result")
| Field | Type | Description |
|---|---|---|
record_type |
string | Always "race_result" |
series |
string | Series code (W/X/C/I/A) |
season |
number | Season year |
race_id |
string | Race identifier, e.g. 2024_Daytona_500 |
race_name |
string | Full race name, e.g. 2024 Daytona 500 |
race_date |
string | Date in ISO format (YYYY-MM-DD) |
race_number |
number | Race number within the season |
track_name |
string | Track name, e.g. Daytona International Speedway |
track_city |
string | City and state, e.g. Daytona Beach, FL |
laps_scheduled |
number | Total laps scheduled |
distance_miles |
number | Total race distance in miles |
average_speed_mph |
number | Average race speed in mph |
pole_speed_mph |
number | Pole qualifying speed in mph |
cautions_count |
number | Number of caution periods |
cautions_laps |
number | Total laps under caution |
lead_changes |
number | Number of lead changes |
margin_of_victory |
string | Margin of victory (time string or laps) |
finish_position |
number | Driver's finishing position |
start_position |
number | Driver's starting position |
car_number |
string | Car or truck number |
driver_name |
string | Driver full name |
driver_url |
string | URL to driver's profile on Racing-Reference |
sponsor |
string | Primary sponsor name |
owner |
string | Team owner name |
manufacturer |
string | Car manufacturer (Chevrolet, Ford, Toyota, etc.) |
laps_completed |
number | Laps completed by this driver |
race_status |
string | Finishing status (running, accident, engine, etc.) |
laps_led |
number | Laps led by this driver |
points |
number | Points earned |
playoff_points |
number | Playoff/bonus points earned |
Driver Profile Records (record_type: "driver_profile")
| Field | Type | Description |
|---|---|---|
record_type |
string | Always "driver_profile" |
driver_name |
string | Driver full name |
driver_born |
string | Driver date of birth |
driver_home |
string | Driver hometown |
career_series |
string | Series these career stats cover |
career_years |
number | Number of seasons raced |
career_starts |
number | Total race starts |
career_wins |
number | Total wins |
career_top5 |
number | Total top-5 finishes |
career_top10 |
number | Total top-10 finishes |
career_poles |
number | Total pole positions |
Example Outputs
Season mode — race result row:
{
"record_type": "race_result",
"series": "W",
"season": 2024,
"race_id": "2024_Daytona_500",
"race_name": "2024 Daytona 500",
"race_date": "2024-02-19",
"race_number": 1,
"track_name": "Daytona International Speedway",
"track_city": "Daytona Beach, FL",
"laps_scheduled": 200,
"distance_miles": 500.0,
"average_speed_mph": 153.7,
"cautions_count": 7,
"cautions_laps": 38,
"lead_changes": 23,
"margin_of_victory": "0.011 seconds",
"finish_position": 1,
"start_position": 9,
"car_number": "45",
"driver_name": "William Byron",
"manufacturer": "Chevrolet",
"laps_completed": 200,
"race_status": "running",
"laps_led": 19,
"points": 57
}
Driver mode — career profile row:
{
"record_type": "driver_profile",
"driver_name": "William Byron",
"driver_born": "November 29, 1997",
"driver_home": "Charlotte, NC",
"career_series": "NASCAR Cup Series",
"career_years": 7,
"career_starts": 228,
"career_wins": 18,
"career_top5": 58,
"career_top10": 103,
"career_poles": 12
}
Setup
None. Racing-Reference.info is Cloudflare-protected; the actor clears it automatically and ships ready to run.
Pricing
- $0.10 per actor start
- $0.002 per record
A full 2024 NASCAR Cup season (36 races x ~40 drivers = ~1,440 records) costs approximately $2.98.
Frequently Asked Questions
Which series are supported?
NASCAR Cup (W), NASCAR Xfinity (X), NASCAR Truck (C), IndyCar (I), and ARCA Menards (A).
How far back does data go? Racing-Reference has historical data going back to the 1940s for NASCAR. Coverage varies by series.
What does maxItems: 0 do?
Unlimited mode — the actor scrapes every driver row for every race in the season. A full season can return 1,000-2,000 rows depending on the series.
Why does the actor take longer than typical scrapers? The Cloudflare bypass requires solving a challenge before crawling begins. This adds roughly 15-30 seconds of startup overhead per run, after which scraping proceeds normally.
Can I scrape multiple seasons in one run?
Not directly — season is a single year. Run the actor once per season if you need multi-year data.
Driver name format for driver mode?
Use the driver's name as it appears in URLs — spaces replaced with underscores (e.g. William_Byron, Kyle_Larson). Spaces are also accepted and normalized automatically.