OrbTop

Equibase Horse Racing Scraper - US Race Entries & Results

SPORTSBUSINESS

Equibase Horse Racing Scraper - US Race Entries & Results

Scrapes race entries and results from Equibase.com — the official statistics provider for North American Thoroughbred racing. Returns structured race card data: horses, jockeys, trainers, morning-line odds, finish order, times, and pari-mutuel payouts.

What It Extracts

  • Race entries: post position, horse name, jockey, trainer, owner, weight, morning-line odds
  • Race results: finish order, winning time, margins, win/place/show payouts
  • Exotic payouts: exacta, trifecta, superfecta, pick 3/4/5/6
  • Race conditions: type (Maiden/Allowance/Stakes/Claiming), distance, surface, purse, track condition
  • Coverage: any US Thoroughbred track on any date with public results

How It Works

  1. You provide a race date and optional track code filter
  2. The scraper navigates Equibase's entry and result pages using a real browser session
  3. Race card data is parsed and returned as one record per race
  4. Results (finish order, payouts) are attached when available for past races

Equibase protects its data pages with Imperva bot detection. The scraper uses residential proxy rotation and browser-based rendering to pass that check. Residential proxies are required — datacenter IPs get the "Pardon Our Interruption" page every time.

Input Configuration

Field Type Default Description
raceDate String Today Date to scrape — MM/DD/YYYY format. Leave blank for today's card. Use a past date for completed results.
trackCodes Array All tracks Optional filter by track code (AQU, CD, SA, GP, PRX, etc.). Empty = all tracks running that day.
dataMode Select both entries = race cards only; results = finish order + payouts; both = full data. Results only available for past races.
maxItems Integer 10 Maximum race records to return. Each race card is one record.
proxyConfiguration Object Residential Proxy settings. Residential proxy required — datacenter IPs are blocked.

Example: Today's entries at Parx Racing

{
  "sp_intended_usage": "Handicapping research",
  "raceDate": "",
  "trackCodes": ["PRX"],
  "dataMode": "entries",
  "maxItems": 10
}

Example: Yesterday's results at Aqueduct and Churchill Downs

{
  "sp_intended_usage": "Historical results database",
  "raceDate": "05/10/2026",
  "trackCodes": ["AQU", "CD"],
  "dataMode": "results",
  "maxItems": 20
}

Example: Full card data for all tracks on a given date

{
  "sp_intended_usage": "Daily racing analytics",
  "raceDate": "05/09/2026",
  "trackCodes": [],
  "dataMode": "both",
  "maxItems": 50
}

Output Schema

One record per race. Fields vary by data mode.

Field Type Description
race_id String Unique identifier: PRX-2026-05-11-R3
race_date String ISO date: 2026-05-11
track_code String Short track code: PRX, AQU, CD
track_name String Full track name: Parx Racing, Aqueduct
race_number Number Race number on the card
race_name String Race name or grade if named (e.g. Kentucky Derby)
race_type String Classification: Maiden, Allowance, Stakes, Claiming
distance String Distance description: 6 Furlongs, 1 1/16 Miles
distance_furlongs Number Distance in furlongs: 6, 8.5
surface String Dirt, Turf, Synthetic, All-Weather
track_condition String Fast, Good, Sloppy, Muddy, Firm, Soft
purse_usd Number Total purse in USD
post_time String Scheduled post time (local track time)
age_sex_restriction String Eligible horses: 3yo+, F&M, A
entries_count Number Number of horses entered
entries String Pipe-delimited entry list: post|horse|jockey|trainer|weight|ml_odds
results_available Boolean Whether race results exist
winner_horse String Name of the winning horse
winner_jockey String Name of the winning jockey
winner_trainer String Name of the winning trainer
winning_time String Official winning time: 1:23.45
finish_order String Top finishers: 1. Tulip (2), 2. Hedge Ratio (nk), 3. Boss Sully (hd)
win_payout Number $2 win payout for the winner
place_payout Number $2 place payout
show_payout Number $2 show payout
exotic_payouts String JSON string with exacta, trifecta, superfecta amounts
entry_url String Direct link to the Equibase entry page
result_url String Direct link to the Equibase result summary page
scraped_at String ISO timestamp of when this record was scraped

Sample output (entries mode)

{
  "race_id": "PRX-2026-05-11-R3",
  "race_date": "2026-05-11",
  "track_code": "PRX",
  "track_name": "Parx Racing",
  "race_number": 3,
  "race_name": null,
  "race_type": "Maiden Claiming",
  "distance": "6 Furlongs",
  "distance_furlongs": 6,
  "surface": "Dirt",
  "track_condition": "Fast",
  "purse_usd": 16000,
  "post_time": "1:15 PM",
  "age_sex_restriction": "3yo+",
  "entries_count": 9,
  "entries": "1|Winning Time|J. Rocco Jr.|K. Magee|122|5/2 | 2|Gordian Knot|C. DeCarlo|J. Servis|120|3/1 | ...",
  "results_available": false,
  "winner_horse": null,
  "winning_time": null,
  "finish_order": null,
  "win_payout": null,
  "exotic_payouts": null,
  "entry_url": "https://www.equibase.com/static/entry/PRX051126USA-EQB.html",
  "result_url": "https://www.equibase.com/static/chart/summary/PRX051126USA-EQB.html",
  "scraped_at": "2026-05-11T10:28:00.000Z"
}

Pricing

$0.10 per run + $0.001 per race record. A single-track card of 9 races costs about $0.11. A full day across 8 tracks (roughly 72 races) runs about $0.17.

🔍 FAQ

How do I scrape Equibase horse racing data? Equibase Horse Racing Scraper handles it. Set a date, optionally filter by track code, choose whether you want entries, results, or both, and run it. The output is structured JSON — one record per race.

What track codes does Equibase use? Equibase Horse Racing Scraper accepts standard track abbreviations: AQU (Aqueduct), CD (Churchill Downs), SA (Santa Anita), GP (Gulfstream Park), KEE (Keeneland), PRX (Parx Racing), BEL (Belmont Park), and dozens more. Leave trackCodes empty to scrape all active tracks on a given day.

How much does Equibase Horse Racing Scraper cost to run? Equibase Horse Racing Scraper costs $0.10 per run plus $0.001 per race record. A single day at one track with 9 races costs $0.11. An all-tracks sweep on a busy Saturday might cover 80+ races for around $0.18.

Can I get past performance data or PDF charts? Equibase Horse Racing Scraper does not access PDF chart files or historical past-performance detail — those are Equibase's paid products and are not available on the public pages. The scraper returns entry and result data from the free public HTML pages: post positions, odds, finish order, times, and payouts.

Does Equibase Horse Racing Scraper need proxies? Yes. Equibase uses Imperva bot protection on all data pages. Residential proxies are required — datacenter IPs receive an interstitial block page instead of race data. The default proxy configuration uses Apify residential proxies, which work correctly.

Need More Features?

Need custom fields, additional track coverage, or integration with a handicapping database? File an issue or get in touch.

Why Use Equibase Horse Racing Scraper?

  • First US horse racing actor on Apify — covers the largest Thoroughbred racing market in the world, which handles roughly $11B in annual wagering and was completely unserved before this
  • Clean output — returns structured JSON with consistent field names across all tracks and dates, not the raw HTML mess that comes with DIY scraping
  • Flexible data modes — entries-only for pre-race handicapping, results-only for historical analysis, or both for a complete race-day record