Racing Reference Scraper - NASCAR, IndyCar & ARCA Race Results
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. |
proxyConfiguration |
object | Apify RESIDENTIAL US | Proxy settings. Residential proxies are required — Racing-Reference is behind Cloudflare WAF. |
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
}
Proxy Requirements
Racing-Reference.info is protected by Cloudflare WAF. The actor uses a Cloudflare bypass technique (CapSolver + residential proxy session) — Apify Residential proxies are required and are enabled by default. Datacenter proxies will be blocked.
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.