Racing Post APIracingpost.com ↗
Access Racing Post data via API: daily racecards, race results, horse profiles with form history, pedigree, and predictor scores across 7 endpoints.
What is the Racing Post API?
The Racing Post API covers 7 endpoints that expose horse racing data including daily meeting schedules, race-by-race results, and detailed horse profiles. The get_race_runners endpoint returns declared runners with draw, weight, official rating, forecast odds, and spotlight commentary per horse. Date-filtered endpoints let you pull racecards or results for any historical or upcoming date without scraping the site yourself.
No input parameters required.
curl -X GET 'https://api.parse.bot/scraper/8d53554b-4c94-45db-bf28-df52c83ad1d0/get_todays_racecards' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve today's racecards and meeting schedules. Returns all meetings scheduled for the current UTC date, including race details, going, weather, and betting returns for completed races. Each meeting contains a races array with individual race metadata (raceId, raceTitle, startScheduledDatetime, numberOfRunners, going, distance, bettingReturns). Pagination is not applicable; the entire day's schedule is returned in a single response.
No input parameters required.
{
"type": "object",
"fields": {
"meetings": "array of meeting objects, each containing venueName, venueUid, courseKey, races array, going, weather, meetingType, numberOfRaces, and other meeting metadata"
},
"sample": {
"data": {
"meetings": [
{
"going": "TURF: GOOD",
"races": [
{
"raceId": "922633",
"distance": {
"yards": 1980
},
"raceType": "Flat",
"raceTitle": "Chek Lap Kok Handicap (Class 5)",
"bettingReturns": null,
"numberOfRunners": 12,
"currentRaceStatus": "declared",
"startScheduledDatetime": {
"utc": "2026-06-10T11:40:00+01:00",
"local": "2026-06-10T18:40:00+08:00"
}
}
],
"weather": null,
"venueUid": 396,
"courseKey": "happy-valley",
"meetingId": null,
"venueName": "Happy Valley",
"meetingType": "flat",
"numberOfRaces": 9,
"rpMeetingOrder": 6,
"venueCountryCode": "HK"
}
]
},
"status": "success"
}
}About the Racing Post API
Racecards and Meeting Schedules
The get_todays_racecards and get_racecards_by_date endpoints return an array of meeting objects, each containing venueName, venueUid, courseKey, going, weather, meetingType, and a races array with individual race metadata. get_racecards_by_date accepts a single date parameter in YYYY-MM-DD format, making it straightforward to build historical lookups or pre-populate a scheduler. Both endpoints return betting returns for any races already completed at request time.
Race Detail and Runner Data
get_race_detail takes a race_id (sourced from the races[*].raceId field in any racecard response) and returns three objects: verdict with expert commentary and author attribution, tips listing newspaper selections and tipster names per horse, and predictor with a per-runner score array. Note this endpoint only functions for declared or upcoming races — results from past races are not available here. For full runner lists, get_race_runners returns draw, age, weight_carried_lbs, weight_stones, saddle_cloth_number, official_rating, forecast odds, breeding, and spotlight commentary for each declared runner, excluding non-runners.
Race Results
get_race_results_by_date accepts a past date and returns an enriched results array. Each result object includes race_id, venue_name, course_key, runner-level fields (horseName, finishingPosition, startingPrice, isFavourite, jockey, trainer), numberOfRunners, betting_returns, and derived each-way terms such as placesPaid and placeFraction calculated from tote dividends.
Horse Profiles and Australian Fields
get_horse_profile accepts a horse_id and horse_slug plus an optional tab parameter (form, stats, pedigree, or progeny). The form tab returns a form array of past race entries and a raceRecords object with lifetime records and surface splits. The progeny tab returns progenyHorsesData, progenyStatistics across three time windows (current year, 2000-to-date, 1988-to-date), and progenyCourseStats sorted by course. get_australian_fields isolates Australian thoroughbred meetings and accepts an optional date parameter, defaulting to today's UTC date.
The Racing Post API is a managed, monitored endpoint for racingpost.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when racingpost.com changes and a check fails, the API is automatically queued for repair and re-verified. It is built to keep working as the site underneath it changes.
This isn't an official racingpost.com API — it's an independent, maintained REST wrapper over public data. Where the source has no official API (or only a limited one), Parse gives you a stable contract over a source that never promised one, and keeps it current. Need a new endpoint or field? You can revise it yourself in plain English and the agent rebuilds it against the live site in minutes — contributing the change back to the shared API is free.
Will this API break when the source site changes?+
Is this an official API from the source site?+
Can I fix or extend this API myself if I need a new endpoint or field?+
What happens if I call an endpoint that has an issue?+
- Build a daily race briefing tool using
get_todays_racecardsto list all meetings with going and weather conditions. - Track a horse's form trend by pulling
get_horse_profilewith tab='form' to retrieve finishing positions, odds, and jockey per race. - Populate a betting model with
get_race_runnersdraw, weight, official rating, and forecast odds for each declared runner. - Aggregate historical win rates by trainer or jockey using
finishingPositionandstartingPricefromget_race_results_by_date. - Display pre-race newspaper consensus tips by calling
get_race_detailand reading thetips[*].tipsterNamesandnumberOfTipsfields. - Monitor Australian thoroughbred meetings on a given date using
get_australian_fieldswith the optionaldateparameter. - Analyse sire progeny performance across flat seasons using
progenyCourseStatsandprogenyStatisticsfrom theprogenytab ofget_horse_profile.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 200 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 100 req/min |
| Team | $300/mo | 20,000 | 300 req/min |
| Company | $1,000/mo | 100,000 | 500 req/min |
Each endpoint has a fixed posted price per successful call — most fall between 1 and 10 credits — shown on this API's page before you run it. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Racing Post have an official developer API?+
What does `get_race_detail` return, and when is it available?+
get_race_detail returns three objects for a given race_id: verdict (expert pick with commentary and author name), tips (newspaper tipster selections per horse with numberOfTips and tipsterNames), and predictor (a runners array each with a numeric score). It only returns data for races with declared or upcoming status — it does not cover results for past races that have already run.Does the API cover jump racing (National Hunt) as well as flat racing?+
meetingType is included in each meeting object so you can filter programmatically. The get_australian_fields endpoint is scoped specifically to Australian thoroughbred racing. Jump-racing-specific fields such as obstacle type or fence-by-fence sectionals are not currently exposed as distinct fields. You can fork the API on Parse and revise it to add an endpoint targeting that data.Is ante-post or futures market data available?+
startingPrice in results and forecast odds in runner data — relates to race-day declared fields. You can fork the API on Parse and revise it to add an endpoint covering ante-post prices if Racing Post surfaces that data on accessible pages.How current is the racecard and results data?+
get_todays_racecards and get_racecards_by_date reflect the current state of declared fields at the time of the request, so non-runners or late additions may not appear until they are reflected on Racing Post. get_race_results_by_date requires a past date — same-day in-progress results are not returned until races are completed and results are published on the source site.