Racing Post Horse Racing Scraper — Racecards, Odds & Runners avatar

Racing Post Horse Racing Scraper — Racecards, Odds & Runners

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Racing Post Horse Racing Scraper — Racecards, Odds & Runners

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

Ahmed Jasarevic

Maintained by Community

Actor 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

FieldTypeRequiredDefaultNotes
datesarray of stringsNotodayDates to scrape in YYYY-MM-DD
meetingFilterstringNoemptyComma-separated meetings, e.g. Ripon,Epsom
maxRacesintegerNo50Max races per run (0 = unlimited)
includeResultsbooleanNofalseAlso attempt results pages for completed races
useApifyProxybooleanNotrueRoute requests through the Apify proxy

Output

Each dataset item is one runner in one race. Key fields (full schema on the actor page):

FieldDescription
meetingName / meetingCountryRacecourse and country
raceTitle / raceTime / raceClassRace identity and class
going / distanceFurlongs / surfaceTypeTrack condition and distance
totalPrizeMoneyGBP / firstPrizeGBPPrize money
horseName / horseIdHorse identity
draw / age / sexDraw, age, sex
jockeyName / trainerName / ownerNameConnections
formFigures / officialRatingForm and rating
rpTopspeed / rpPostmarkRacing Post speed ratings
forecastOddsStarting-price odds
weightCarriedLbsWeight carried
sireName / damName / damsireNameBreeding

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.

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:

  • dates is the primary input — empty means today.
  • maxRaces: 0 means unlimited; default is 50 — cap it to control cost.
  • includeResults: false by default because results pages are more protected; enable only if needed.

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.