Equibase Horse Racing Scraper - US Race Entries & Results avatar

Equibase Horse Racing Scraper - US Race Entries & Results

Pricing

Pay per event

Go to Apify Store
Equibase Horse Racing Scraper - US Race Entries & Results

Equibase Horse Racing Scraper - US Race Entries & Results

Scrape US Thoroughbred horse racing data from Equibase.com โ€” the official source for North American racing. Extract race entries (horses, jockeys, trainers, odds) and results (finish order, times, payouts) for any date and track. Ideal for handicappers and sports analytics.

Pricing

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

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

FieldTypeDefaultDescription
raceDateStringTodayDate to scrape โ€” MM/DD/YYYY format. Leave blank for today's card. Use a past date for completed results.
trackCodesArrayAll tracksOptional filter by track code (AQU, CD, SA, GP, PRX, etc.). Empty = all tracks running that day.
dataModeSelectbothentries = race cards only; results = finish order + payouts; both = full data. Results only available for past races.
maxItemsInteger10Maximum race records to return. Each race card is one record.
proxyConfigurationObjectResidentialProxy 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.

FieldTypeDescription
race_idStringUnique identifier: PRX-2026-05-11-R3
race_dateStringISO date: 2026-05-11
track_codeStringShort track code: PRX, AQU, CD
track_nameStringFull track name: Parx Racing, Aqueduct
race_numberNumberRace number on the card
race_nameStringRace name or grade if named (e.g. Kentucky Derby)
race_typeStringClassification: Maiden, Allowance, Stakes, Claiming
distanceStringDistance description: 6 Furlongs, 1 1/16 Miles
distance_furlongsNumberDistance in furlongs: 6, 8.5
surfaceStringDirt, Turf, Synthetic, All-Weather
track_conditionStringFast, Good, Sloppy, Muddy, Firm, Soft
purse_usdNumberTotal purse in USD
post_timeStringScheduled post time (local track time)
age_sex_restrictionStringEligible horses: 3yo+, F&M, A
entries_countNumberNumber of horses entered
entriesStringPipe-delimited entry list: post|horse|jockey|trainer|weight|ml_odds
results_availableBooleanWhether race results exist
winner_horseStringName of the winning horse
winner_jockeyStringName of the winning jockey
winner_trainerStringName of the winning trainer
winning_timeStringOfficial winning time: 1:23.45
finish_orderStringTop finishers: 1. Tulip (2), 2. Hedge Ratio (nk), 3. Boss Sully (hd)
win_payoutNumber$2 win payout for the winner
place_payoutNumber$2 place payout
show_payoutNumber$2 show payout
exotic_payoutsStringJSON string with exacta, trifecta, superfecta amounts
entry_urlStringDirect link to the Equibase entry page
result_urlStringDirect link to the Equibase result summary page
scraped_atStringISO 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