Racing Post Horse Racing Scraper — Racecards, Odds & Runners
Pricing
from $5.00 / 1,000 results
Racing Post Horse Racing Scraper — Racecards, Odds & Runners
Scrapes UK and international horse racing results, form, runners, odds and racecards from Racing Post. Extracts meeting, horse, jockey, trainer, finishing position, SP odds, form, weight, distance, going, prize money, draw, rating, age, sex and pedigree.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Ahmed Jasarevic
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
3 days ago
Last modified
Categories
Share
Racing Post Horse Racing Scraper — Racecards, Runners, Form & Odds
Scrape UK & international horse racing data from Racing Post — racecards, runners, form figures, jockey/trainer, starting-price odds, ratings, breeding and prize money — for betting models, racing analytics and handicapping research. One flat row per runner covers GB, IRE, USA, France, Australia and Hong Kong in a single run.
Main Use Cases
- Horse racing analytics — build statistical models from runner-level data
- Racecards data for betting research — capture runners, form, odds and ratings daily
- Sports data feeds — structured UK/international racing data for apps and websites
- Handicapping — compare form, official rating, topspeed and odds across runners
- Historical racing data backfill — scrape racecards for any date range
- AI/ML prediction research — feed pre-race features into prediction models
How It Works
Give the actor one or more dates. It fetches racecards from Racing Post's internal Next.js JSON API (/_next/data/...) — the same structured data the site's own frontend uses — so it needs no browser, parses quickly with CheerioCrawler, and emits one flat JSON row per runner with the full race context. Fully proxy-routed to avoid IP bans.
Build a Horse Racing Dataset Without a Manual Official API
Racing Post has no public bulk API for racecards. This actor turns any date's UK and international meetings into a clean, queryable dataset of runners, form, odds, ratings and breeding — for betting-model building, handicapping and racing research — at ~10x lower cost than browser scrapers.
Input
| Field | Type | Required | Default | Notes |
|---|---|---|---|---|
dates | array of strings | No | today | Dates to scrape in YYYY-MM-DD |
meetingFilter | string | No | empty | Comma-separated meetings, e.g. Ripon,Epsom |
maxRaces | integer | No | 50 | Max races per run (0 = unlimited) |
includeResults | boolean | No | false | Also attempt results pages for completed races |
useApifyProxy | boolean | No | true | Route requests through the Apify proxy |
Output
Each dataset item is one runner in one race. Key fields (full schema on the actor page):
| Field | Description |
|---|---|
meetingName / meetingCountry | Racecourse and country |
raceTitle / raceTime / raceClass | Race identity and class |
going / distanceFurlongs / surfaceType | Track condition and distance |
totalPrizeMoneyGBP / firstPrizeGBP | Prize money |
horseName / horseId | Horse identity |
draw / age / sex | Draw, age, sex |
jockeyName / trainerName / ownerName | Connections |
formFigures / officialRating | Form and rating |
rpTopspeed / rpPostmark | Racing Post speed ratings |
forecastOdds | Starting-price odds |
weightCarriedLbs | Weight carried |
sireName / damName / damsireName | Breeding |
Example Input
{"dates": ["2026-08-31"],"meetingFilter": "Ripon,Epsom","maxRaces": 50,"includeResults": false}
Example Output
{"scrapeDate": "2026-08-31","meetingName": "RIPON","meetingCountry": "GB","raceTitle": "Squadron Flyer At Aldwark Manor Estate EBF Restricted Maiden Stakes","raceTime": "2026-08-31T13:55:00+01:00","raceClass": "4","distanceFurlongs": 6,"surfaceType": "Turf","totalPrizeMoneyGBP": 10820.7,"horseName": "Arenite","horseId": 9254368,"draw": 6,"age": 2,"sex": "b f","jockeyName": "Connor Beasley","trainerName": "Michael Dods","formFigures": "22","officialRating": 69,"rpTopspeed": 75,"forecastOdds": 1.5,"weightCarriedLbs": 125,"sireName": "Kameko","raceUrl": "https://www.racingpost.com/racecards/49/ripon/2026-08-31/925805"}
Integrations & Automation
Results are available via the Apify API and export as JSON/CSV/Excel. Schedule daily runs in Apify Console to keep a rolling racecard dataset, and enable includeResults for completed races where reliable.
Related Actors
Verified related actors on Apify that pair well with this one. All links point to real, publicly available actors.
FAQ
Why use this actor instead of an official Racing Post API?
Racing Post does not expose a public bulk API for racecards. This actor reads the same structured JSON (/_next/data/...) that the Racing Post website itself uses, producing clean data without browser-scraping overhead.
Is scraping Racing Post legal?
Scraping publicly available data for personal or research use is generally acceptable, but you should review Racing Post's Terms of Service before large-scale or commercial use. This actor is provided as-is for legitimate data collection.
Can I backfill historical racecards?
Yes. Pass a list of dates to the dates field to scrape multiple meetings across several days in one run.
Do results (finishing positions) work?
Racecards (runners, form, odds, ratings, breeding) work reliably. Results pages are more aggressively protected and need the Apify proxy (includeResults may fail from some IPs).
SEO Keywords
racing post scraper, horse racing racecards api, uk horse racing data, horse racing runner data, racing post odds scraper, horse betting data model, form figures data, racing analytics api, international racecards, horse racing datasets, racing post json api, handicap racing data, horse breeding data, prize money racing data, racing ai prediction data
For AI Agents & LLM Apps
Purpose: Return structured Racing Post racecard data — one flat row per runner with race context, form, odds, ratings and breeding.
Minimal working input:
{"dates": ["2026-08-31"],"maxRaces": 10}
Output fields: meetingName, raceTitle, raceTime, horseName, jockeyName, trainerName, formFigures, officialRating, forecastOdds, weightCarriedLbs, sireName, damName, raceUrl (full schema on the actor page).
Behaviors an agent should know:
datesis the primary input — empty means today.maxRaces: 0means unlimited; default is 50 — cap it to control cost.includeResults: falseby default because results pages are more protected; enable only if needed.
Legal & Compliance Disclaimer
This actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Racing Post (Racing Post Ltd). It accesses publicly available racecard pages via the site's public JSON endpoints (no login bypass, no CAPTCHA solving). You are responsible for compliance with Racing Post's Terms of Use and applicable law. This actor provides factual racing data and no betting advice.