OrbTop

Racing Reference Scraper - NASCAR, IndyCar & ARCA Race Results

SPORTSOTHER

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.