Racing Post Racecards Scraper
Pricing
from $6.34 / 1,000 results
Racing Post Racecards Scraper
Scrape Racing Post racecards: one row per runner with silks, horse, jockey, trainer, form, ratings, going and forecast odds. Export to CSV, Excel, JSON or XML.
Pricing
from $6.34 / 1,000 results
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 days ago
Last modified
Categories
Share

π Racing Post Racecards Scraper
π Export every runner on today's racecards in seconds. One row per horse, 58 columns: silks image, course, off time, race name, class, distance, going, prize money, then the horse with its number, draw, age, weight, jockey, trainer, owner, form figures, Official Rating, RPR, Topspeed and the Racing Post betting forecast price. A typical British and Irish day carries 6 to 9 meetings, 37 to 56 races and 370 to 940 runners, and the whole card is collected over plain HTTP on 1 GB of memory.
Racing Post is the reference publication for British and Irish horse racing. Its racecards are the version of the card that the industry actually reads: the declared field, the weights, the draw, the six most recent form figures, the Official Rating, the Racing Post Rating, the Topspeed figure and the paper's own betting forecast. This Actor reads the same JSON the racingpost.com page renders for an anonymous visitor, so the numbers match the page, and nothing is inferred from screen scraping a table.
Coverage follows the racing calendar. Cards are published for today and the days ahead, the field is declared about 48 hours before the off, and international meetings appear alongside the domestic ones: at verification time the index carried meetings in Great Britain, Ireland, France, the United States, Australia, Hong Kong and Peru.
| π― Target Audience | π‘ Primary Use Cases |
|---|---|
| Form analysts and racing modellers | Build a daily runner table with ratings, form figures and forecast prices |
| Tipping sites and racing media | Publish full cards with silks, jockeys, trainers and going without manual entry |
| Betting and trading desks | Feed a pricing model the declared field, weights, draw and going every morning |
| Bloodstock and syndicate managers | Track your horses, sires and trainers across every card in Britain and Ireland |
π What the Racing Post Racecards Scraper does
π‘ Why it matters: a British and Irish race day spreads 400 to 900 runners across six to nine meetings and dozens of separate pages, and the card changes as horses are withdrawn. Rebuilding that into a spreadsheet by hand is a morning's work every morning. This Actor returns it as one flat table in a single run, and never bills for a row it did not deliver.
- ποΈ A whole day in one input: leave the defaults and you get every runner declared for today. Set
raceDatetotomorrowor aYYYY-MM-DDdate for any future card. - π Any racecard URL: a day index (
/racecards/2026-09-10/), a meeting (/racecards/15/doncaster/2026-09-10/) or a single race (/racecards/15/doncaster/2026-09-10/926640). A race URL returns only that race. - ποΈ The race, carried on every row: course, country, off time in ISO 8601, race name, class, age restriction, rating band, distance in furlongs and in yards, going, going detail with GoingStick and rail movements, surface, weather, winner prize, total prize money, declared runner count and the TV channel.
- π The runner: saddlecloth number, draw, age, weight in stones and pounds and in pounds, jockey with claim, trainer, owner, and links to each of their Racing Post profiles.
- π The form that analysts use: the recent form figure string, the Official Rating for the day, the Racing Post Rating, the Topspeed figure, days since last run, headgear with a first-time flag and trainer recent form percentage.
- π― Betting forecast: the Racing Post forecast price as the printed fraction (
5/2) and as a decimal multiplier, ready for a model. - 𧬠Breeding: colour and sex, country of origin, sire, dam and damsire.
- π½ Silks: the runner's silks image URL, first column, so a card renders straight out of the dataset.
- π Clean data: one runner per row, de-duplicated across sources, the same 58 columns on every row,
Not DisclosedorN/Ainstead of blank cells, and non-runners excluded unless you ask for them.
π¬ Full Demo (π§ Coming soon)
A short walkthrough video is in production.
π Output
Each row is one declared runner in one race. Fields, in dataset order:
| Field | Description |
|---|---|
imageUrl | Jockey silks image for this runner (SVG on rp-assets.com) |
horseName | Horse name as printed on the card |
horseUrl | Racing Post horse profile and form page |
raceUrl | Racing Post racecard page for this race |
raceId | Racing Post race identifier |
course | Course name, for example Doncaster |
countryCode | Country code of the meeting, for example GB, IRE, FR |
country | Country name |
raceDateTime | Scheduled off time, ISO 8601 UTC |
raceDate | Race date, YYYY-MM-DD |
raceTimeLocal | Off time in the meeting's local clock, for example 13:15 |
raceName | Full race title including sponsor |
raceClass | Race class, N/A outside Britain where classes are not used |
raceType | Flat, Hurdle, Chase or NH Flat |
ageRestriction | Ages allowed, for example 2yo, 4yo+ |
ratingBand | Official rating band for handicaps, for example 0-100 |
distance | Race distance as printed, for example 6Β½f, 2m7f |
distanceYards | Race distance in yards |
going | Going description, for example Good To Soft |
goingDetails | Full going statement with GoingStick and rail movements |
surface | Turf, Polytrack, Tapeta, Beach or All-Weather |
weather | Weather reported at the meeting |
winnerPrize | Prize to the winner, formatted with its currency symbol |
totalPrizeMoney | Sum of all advertised places, as a number |
currency | Currency of the prize figures, GBP or EUR |
runnerCount | Runners declared in this race |
liveOn | Broadcaster showing the race, for example ITV, RTV, SKY |
saddleClothNumber | Saddlecloth number |
draw | Stall number, N/A in jumps races |
age | Horse age in years |
weight | Weight carried in stones and pounds, for example 8-11 |
weightLbs | Weight carried in pounds |
jockey | Booked jockey |
jockeyUrl | Racing Post jockey profile |
jockeyClaimLbs | Weight allowance the jockey claims, 0 when none |
trainer | Trainer |
trainerUrl | Racing Post trainer profile |
trainerFormPercent | Trainer runners to form percentage over the last 14 days |
owner | Registered owner |
ownerUrl | Racing Post owner profile |
form | Recent form figure string, most recent run last, for example 3213 |
officialRating | Official Rating carried today |
rpr | Racing Post Rating |
topSpeed | Racing Post Topspeed figure |
forecastOdds | Racing Post betting forecast price as a fraction, for example 5/2 |
forecastOddsDecimal | The same forecast price as a decimal multiplier |
headGear | Headgear codes, for example t tongue tie, v visor, b blinkers |
firstTimeHeadGear | Yes when the headgear is worn for the first time |
daysSinceLastRun | Days since the horse last raced |
countryOfOrigin | Country the horse was bred in |
colourAndSex | Colour and sex code, for example b f, gr g |
sire | Sire |
dam | Dam |
damSire | Damsire |
comment | Racing Post race-reader comment on this runner |
isNonRunner | Yes when the horse has been withdrawn |
scrapedAt | When the row was collected, ISO 8601 |
error | null on data rows; error rows carry a message and are never charged |
Three real records from a verification run:
[{"imageUrl": "https://www.rp-assets.com/svg/8/9/5/147598.svg","horseName": "Speed Of Sound","horseUrl": "https://www.racingpost.com/profile/horse/8688617/speed-of-sound/form","raceUrl": "https://www.racingpost.com/racecards/15/doncaster/2026-09-10/926640","raceId": "926640","course": "Doncaster","countryCode": "GB","country": "United Kingdom","raceDateTime": "2026-09-10T12:15:00.000Z","raceDate": "2026-09-10","raceTimeLocal": "13:15","raceName": "British Stallion Studs 'Carrie Red' EBF Fillies' Nursery Handicap","raceClass": "2","raceType": "Flat","ageRestriction": "2yo","ratingBand": "N/A","distance": "6Β½f","distanceYards": 1431,"going": "Good To Soft","goingDetails": "GOOD TO SOFT, Good in places (GoingStick: 6.1) (Rail Movements: 2.25 & 5.20 +19yds and 3.00 +9yds)","surface": "Turf","weather": "Light rain","winnerPrize": "Β£28,347","totalPrizeMoney": 54104,"currency": "GBP","runnerCount": 12,"liveOn": "ITV","saddleClothNumber": 4,"draw": 5,"age": 2,"weight": "8-11","weightLbs": 123,"jockey": "Saffie Osborne","jockeyUrl": "https://www.racingpost.com/profile/jockey/100350/saffie-osborne/","jockeyClaimLbs": 0,"trainer": "Richard Spencer","trainerUrl": "https://www.racingpost.com/profile/trainer/30665/richard-spencer/","trainerFormPercent": 69,"owner": "Phil Cunningham","ownerUrl": "https://www.racingpost.com/profile/owner/147598/phil-cunningham/","form": "3213","officialRating": 81,"rpr": 95,"topSpeed": 91,"forecastOdds": "5/2","forecastOddsDecimal": 2.5,"headGear": "N/A","firstTimeHeadGear": "No","daysSinceLastRun": 21,"countryOfOrigin": "IRE","colourAndSex": "b f","sire": "Sioux Nation","dam": "All Speed","damSire": "Camacho","comment": "Form of Yarmouth win lifted since; good 3rd in York sales race latest (6f, good to soft)","isNonRunner": "No","scrapedAt": "2026-09-09T18:53:43.868Z","error": null},{"imageUrl": "https://www.rp-assets.com/svg/3/5/4/231453.svg","horseName": "Art Of Life","horseUrl": "https://www.racingpost.com/profile/horse/9472243/art-of-life/form","raceUrl": "https://www.racingpost.com/racecards/15/doncaster/2026-09-10/926640","raceId": "926640","course": "Doncaster","countryCode": "GB","country": "United Kingdom","raceDateTime": "2026-09-10T12:15:00.000Z","raceDate": "2026-09-10","raceTimeLocal": "13:15","raceName": "British Stallion Studs 'Carrie Red' EBF Fillies' Nursery Handicap","raceClass": "2","raceType": "Flat","ageRestriction": "2yo","ratingBand": "N/A","distance": "6Β½f","distanceYards": 1431,"going": "Good To Soft","goingDetails": "GOOD TO SOFT, Good in places (GoingStick: 6.1) (Rail Movements: 2.25 & 5.20 +19yds and 3.00 +9yds)","surface": "Turf","weather": "Light rain","winnerPrize": "Β£28,347","totalPrizeMoney": 54104,"currency": "GBP","runnerCount": 12,"liveOn": "ITV","saddleClothNumber": 2,"draw": 9,"age": 2,"weight": "8-12","weightLbs": 124,"jockey": "Rossa Ryan","jockeyUrl": "https://www.racingpost.com/profile/jockey/95744/rossa-ryan/","jockeyClaimLbs": 0,"trainer": "Clive Cox","trainerUrl": "https://www.racingpost.com/profile/trainer/5863/clive-cox/","trainerFormPercent": 38,"owner": "Isa Salman Al Khalifa","ownerUrl": "https://www.racingpost.com/profile/owner/231453/isa-salman-al-khalifa/","form": "622","officialRating": 82,"rpr": 87,"topSpeed": 73,"forecastOdds": "4/1","forecastOddsDecimal": 4,"headGear": "N/A","firstTimeHeadGear": "No","daysSinceLastRun": 27,"countryOfOrigin": "GB","colourAndSex": "b f","sire": "Palace Pier","dam": "Musical Art","damSire": "Dutch Art","comment": "All races on good to firm; pulled hard but kept tabs on winner over 7f latest; improve","isNonRunner": "No","scrapedAt": "2026-09-09T18:53:43.878Z","error": null},{"imageUrl": "https://www.rp-assets.com/svg/b/0/7/267270b.svg","horseName": "Wondervision","horseUrl": "https://www.racingpost.com/profile/horse/8881440/wondervision/form","raceUrl": "https://www.racingpost.com/racecards/15/doncaster/2026-09-10/926640","raceId": "926640","course": "Doncaster","countryCode": "GB","country": "United Kingdom","raceDateTime": "2026-09-10T12:15:00.000Z","raceDate": "2026-09-10","raceTimeLocal": "13:15","raceName": "British Stallion Studs 'Carrie Red' EBF Fillies' Nursery Handicap","raceClass": "2","raceType": "Flat","ageRestriction": "2yo","ratingBand": "N/A","distance": "6Β½f","distanceYards": 1431,"going": "Good To Soft","goingDetails": "GOOD TO SOFT, Good in places (GoingStick: 6.1) (Rail Movements: 2.25 & 5.20 +19yds and 3.00 +9yds)","surface": "Turf","weather": "Light rain","winnerPrize": "Β£28,347","totalPrizeMoney": 54104,"currency": "GBP","runnerCount": 12,"liveOn": "ITV","saddleClothNumber": 11,"draw": 2,"age": 2,"weight": "8-2","weightLbs": 114,"jockey": "Nicola Currie","jockeyUrl": "https://www.racingpost.com/profile/jockey/92938/nicola-currie/","jockeyClaimLbs": 0,"trainer": "Jack Channon","trainerUrl": "https://www.racingpost.com/profile/trainer/40161/jack-channon/","trainerFormPercent": 41,"owner": "Bramble Syndicate","ownerUrl": "https://www.racingpost.com/profile/owner/267270/bramble-syndicate/","form": "331","officialRating": 72,"rpr": 95,"topSpeed": 86,"forecastOdds": "11/2","forecastOddsDecimal": 5.5,"headGear": "N/A","firstTimeHeadGear": "No","daysSinceLastRun": 24,"countryOfOrigin": "IRE","colourAndSex": "b f","sire": "Minzaal","dam": "Wonderworld","damSire": "Sea The Moon","comment": "Overcame some trouble in running to win handicap debut over 6f on AW; can progress","isNonRunner": "No","scrapedAt": "2026-09-09T18:53:43.880Z","error": null}]
β¨ Why choose this Actor
| What you get | |
|---|---|
| Racing Post's own numbers | Official Rating, RPR, Topspeed, form figures, weights and the betting forecast come from the JSON the page renders, not from parsing a rendered table. |
| The grain form analysis needs | One row per runner, with the race repeated on every row, so a CSV opens straight into a pivot table or a model. |
| Silks in the first column | Every row carries the runner's silks image URL, so you can render a card without a second lookup. |
| The going, in full | Not just Good To Soft but the whole going statement with GoingStick reading and rail movements, which is what actually moves a time. |
| Fractions and decimals | The forecast price is given both as the printed fraction and as a decimal multiplier, so no parsing on your side. |
| 58 columns, one shape | Every row has the same keys in the same order, so CSV imports, joins and Excel filters behave. |
| No blanks, no nulls | A value Racing Post withholds is Not Disclosed; a value that does not apply, such as a draw in a chase, is N/A. Never an empty cell. |
| Fast and cheap | HTTP only, 1 GB of memory, no proxy needed, no browser to warm up. One request per meeting returns the whole card. |
π How it compares to alternatives
| Feature | This Actor | Typical racecard scrapers | By hand |
|---|---|---|---|
| Fields per runner | 58 | 10 to 20 | Whatever you copy |
| Official Rating, RPR and Topspeed | All three | Usually the Official Rating only | Three columns to transcribe |
| Betting forecast price | Fraction and decimal | Sometimes | Yes |
| Full going statement with GoingStick | Yes | Rarely | Yes |
| Silks image URL | Yes | Rarely | No |
| Pedigree (sire, dam, damsire) | Yes | Rarely | Behind a click |
| International meetings | GB, IRE, FR, USA, AUS, HK and more | Usually GB and IRE only | Page by page |
| Requests per meeting | 1 | 1 per race | 1 per race |
| Memory and speed | 1 GB, no proxy, no browser | 2 to 4 GB with a browser | Hours |
| Subscriber-only Spotlight, Postdata and Verdict | Not included, and said so plainly | Sometimes promised, rarely delivered | Needs a subscription |
π How to use
- Create a free Apify account with $5 in credit.
- Open the Racing Post Racecards Scraper.
- Keep the defaults for today's full card, or set a date, paste a meeting or race URL, add filters, choose Max Items and click Start.
- Download the dataset as CSV, Excel, JSON or XML from the Storage tab, or read it through the API.
Every runner on tomorrow's cards:
{"raceDate": "tomorrow","maxItems": 1000}
British and Irish jumps runners only, for a named day:
{"raceDate": "2026-09-11","maxItems": 5000,"countryCodes": ["GB", "IRE"],"raceType": "jumps"}
A single race, including any withdrawn horses:
{"startUrls": [{ "url": "https://www.racingpost.com/racecards/15/doncaster/2026-09-10/926640" }],"maxItems": 50,"includeNonRunners": true}
Free-plan runs return up to 10 runners as a preview. Upgrade your Apify plan to collect up to 1,000,000 rows per run.
πΌ Business use cases
π Daily form table. A modeller runs the Actor every morning for today and tomorrow, joins officialRating, rpr, topSpeed, form and weightLbs onto a horse key, and refits a speed model before the first race.
π― Price your own book. A trading desk compares forecastOddsDecimal against its own model line for every runner on the card, and flags the races where the two disagree most.
π° Publish full cards. A racing site renders every meeting from one dataset: silks, saddlecloth number, draw, jockey, trainer, weights and the race-reader comment, with the going and the prize money in the header.
π΄ Track a stable or a sire. A bloodstock analyst filters rows by trainer, owner or sire across every card in Britain and Ireland, and gets an alert the day a horse is declared.
π± Going and draw research. An analyst collects goingDetails, surface, draw and distanceYards over a season to measure how much the draw is worth at each course on each going.
π Automating Racing Post Racecards Scraper
Racecards change every day, so schedule the run rather than starting it by hand.
- Schedule: set a daily schedule for 07:00 with
raceDateleft attoday, and a second one the evening before withtomorrowif you want the field as soon as it is declared. - Webhooks: fire a webhook on
ACTOR.RUN.SUCCEEDEDto push the dataset into your warehouse or into a Google Sheet. - API: call
run-sync-get-dataset-itemsfor a one-shot pull straight into a script. - Integrations: the dataset is available to Make, Zapier, Airbyte, n8n and LangChain from the Actor page.
π Beyond business use cases
π Syndicate mornings. A syndicate manager sends members a table of the day's runners, silks and all, the moment the field is declared.
π Teaching form reading. A tutor uses form, officialRating and comment side by side to show what each figure is actually telling you.
π² Friendly office sweepstakes. A sweepstake organiser pulls the runners for a big race, complete with silks and forecast prices, and prints the slips.
π Learning data science. A student uses a season of racecards as a clean, well-shaped tabular dataset with real categorical and numeric features.
π€ Ask an AI assistant about this scraper
Paste this into ChatGPT, Claude or any assistant that can browse:
I want to collect British and Irish horse racing racecards as structured data. Explain how the Apify Actor
parseforge/racing-post-racecards-scraperworks, what each of its 58 output fields means, and write me a Python script that calls it through the Apify API for tomorrow's cards and loads the result into a pandas DataFrame.
β Frequently Asked Questions
ποΈ Which dates can I scrape?
Today and any future date that Racing Post has published. Past dates return no racecards, because a finished race moves to the results section of the site.
β±οΈ How far ahead are runners available?
Racing Post lists the meetings and race titles weeks ahead, but the field is declared roughly 48 hours before the off. Ask for a date further out and you will see the meetings listed with no runners yet.
π Which Racing Post URLs can I paste?
A day index such as /racecards/2026-09-10/, a meeting such as /racecards/15/doncaster/2026-09-10/, or a single race such as /racecards/15/doncaster/2026-09-10/926640. A race URL returns only the runners in that race.
π― Are these live bookmaker odds?
No. forecastOdds is the Racing Post betting forecast, the paper's own prediction of the starting price, and it is what the racecard publishes. Live bookmaker prices arrive on the site over a websocket feed and are not part of this dataset.
π Does this include Spotlight, Postdata, Verdict or the tips?
No. Those are Racing Post Members' Club content and are empty for an anonymous visitor, so the Actor does not include them. The shorter race-reader comment in the comment field is public and is included, as are the Official Rating, RPR and Topspeed figures.
π Does it return results, finishing positions or starting prices?
No. This Actor covers racecards, meaning the runners declared before a race. Results live on a separate part of the site with a different shape.
πͺ Why is draw sometimes N/A?
Jumps races have no starting stalls, so there is no draw. The field is N/A there rather than 0, which would look like a real stall number.
β οΈ What is the difference between Not Disclosed and N/A?
Not Disclosed means Racing Post withholds a value it would normally publish. N/A means the field does not apply to that runner or race, such as a draw in a chase or a race class outside Britain.
π Which countries are covered?
Whatever Racing Post lists that day. Britain and Ireland always, and at verification time also France, the United States, Australia, Hong Kong and Peru. Use the country filter to narrow it, or leave it empty for everything.
π« Are withdrawn horses included?
Not by default, so every row is a horse still expected to run. Switch on Include non-runners and withdrawn horses come back with isNonRunner set to Yes.
π‘οΈ Do I need a proxy?
No. Racing Post answers plain HTTP from Apify's datacenter egress and the proxy input is off by default. If you run very large volumes you can switch Apify Proxy on from the input.
π Do I need an API key or a Racing Post account?
No. Only public pages are read, exactly as an anonymous visitor sees them.
π¦ How many runners can I collect?
Free-plan runs return 10 rows as a preview. Paid plans go up to 1,000,000 rows per run, which is far more than a single day of racing carries.
β° Can I run this on a schedule?
Yes. A daily schedule at 07:00 with raceDate set to today keeps a warehouse current, and an evening run with tomorrow catches the field as soon as it is declared.
π What output formats are supported?
CSV, Excel, JSON, XML, JSONL and RSS, from the Storage tab or through the API.
β What happens when a request fails?
The Actor retries up to five times with a backoff. If a source still does not answer, it writes one error row naming the source and continues; error rows are never charged.
π Integrate with any app
The dataset is available through the Apify API the moment the run finishes. Use the run-sync-get-dataset-items endpoint for one-shot calls, webhooks to trigger downstream jobs, or the Make, Zapier, Airbyte and LangChain integrations listed on the Actor page.
π Recommended Actors
π‘ Pro Tip: browse the complete ParseForge collection.
π Need Help? Open our contact form with your run ID, your input and what you expected.
β οΈ Disclaimer: This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Racing Post or Racing Post Ltd. It collects only publicly available data. You are responsible for using the data in compliance with Racing Post's terms of use and applicable data-protection laws.