At The Races APIattheraces.com ↗
Extract racecards, draw statistics, pace analysis, and FormScan collateral form data from attheraces.com via 6 structured JSON endpoints.
What is the At The Races API?
The At The Races API exposes 6 endpoints covering UK and Irish horse racing intelligence pulled directly from attheraces.com, including full racecards, draw bias statistics, per-runner pace ratings, and FormScan collateral form comparisons. The get_racecard endpoint alone returns over 15 fields per runner — draw, form string, jockey, trainer, official rating, star rating, and betting forecast — identified by course, date, and race time.
curl -X GET 'https://api.parse.bot/scraper/8d6569fa-c1a6-4496-b31e-5a7c6abc854b/get_racecard?date=23-August-2026&time=1420&course=Brighton' \ -H 'X-API-Key: $PARSE_API_KEY'
Retrieve the full racecard for a specific race including runner details, form, jockey/trainer, age/weight, official rating, expert view commentary, star ratings, and betting forecast.
| Param | Type | Description |
|---|---|---|
| daterequired | string | Race date in D-Month-YYYY format (e.g. 23-June-2026). |
| timerequired | string | Race time in HHMM format without colon (e.g. 1420 for 2:20 PM). |
| courserequired | string | Course name as it appears in the URL path, hyphenated for multi-word names (e.g. Ffos-Las, Newton-Abbot, Nottingham). |
{
"type": "object",
"fields": {
"url": "string",
"date": "string",
"time": "string",
"going": "string",
"prize": "string",
"course": "string",
"race_id": "string",
"runners": "array of runner objects with draw, number, rating, star_rating, form, horse_name, horse_id, age_weight, official_rating, jockey, trainer, expert_view, headgear, silk_url, silk_description",
"distance": "string",
"forecast": "string",
"race_name": "string",
"race_class": "string",
"venue_name": "string",
"description": "string",
"draw_advantage": "string",
"number_of_runners": "integer"
},
"sample": {
"data": {
"url": "https://www.attheraces.com/racecard/Nottingham/3-August-2026/1440",
"date": "3-August-2026",
"time": "1440",
"going": "Good to Firm (Good in places)",
"prize": "Winner £5,400",
"course": "Nottingham",
"race_id": "1603165",
"runners": [
{
"draw": "6",
"form": "3-3",
"jockey": "S M Levey",
"number": "1",
"rating": "101",
"trainer": "R Hannon",
"horse_id": "3807019",
"age_weight": "3 9-2",
"horse_name": "Aura Champagne (IRE)",
"expert_view": "Improved for debut experience...",
"star_rating": "4",
"official_rating": "-"
}
],
"distance": "1m 75y",
"forecast": "Forecast: 9/4 Yimmna...",
"race_name": "Nottingham - 03/08/26 - 14:40 - Class 4 horse race, 1m 0f 75y",
"race_class": "GBB Race | Class 4 | 3YO plus",
"venue_name": "Nottingham Racecourse",
"description": "At The Races Presents - Nottingham",
"draw_advantage": "High",
"number_of_runners": 5
},
"status": "success"
}
}About the At The Races API
Racecard and Runner Data
The get_racecard endpoint accepts three required parameters — course (hyphenated, matching the URL path), date (D-Month-YYYY format, e.g. 23-June-2026), and time (HHMM, e.g. 1430) — and returns a full race object. Runner-level fields include horse_name, horse_id, draw, number, age_weight, official_rating, rating, star_rating, form, jockey, trainer, a forecast for the race, and an expert_view commentary string. Race-level fields cover going, prize, distance, and a race_id used across endpoints.
Draw and Pace Analysis
get_draw_data returns, for each stall position, the expected_wins, actual_wins, and a draw_bias_result flag — useful for flat races on tracks where draw position has a measurable historical effect. get_pace_data returns each runner's pace_rating, pace_description (one of Leader, Prominent, Midfield, Hold Up), and pace_position_pct — the percentage of a typical race the horse spends in that position. For meetings where you need pace data across every race at once, get_pace_data_by_meeting accepts just course and date and returns a races array keyed by race_time, along with total_races and races_with_pace_data counts.
FormScan and Daily Tips
get_formscan returns the ATR FormScan collateral form data: a ranked list of runners with an index_rating and a comparisons array of text strings describing previous head-to-head encounters between horses in the field. get_tips differs from the race-specific endpoints — it takes only a course name and returns the full card of ATR expert tips for the day, one object per race, each including top_tip_horse, top_tip_rating, watch_out_horse, watch_out_rating, and a commentary string.
The At The Races API is a managed, monitored endpoint for attheraces.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when attheraces.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 attheraces.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 draw bias dashboard by collecting
actual_winsvsexpected_winsper stall across multiple flat meetings. - Automate a daily briefing that pulls
get_tipsfor each course and surfaces thetop_tip_horseandcommentarybefore racing begins. - Map each runner's
pace_descriptionto identify race setups with multiple Leaders or no hold-up horses. - Combine
official_ratingandstar_ratingfromget_racecardto filter handicaps where top-rated horses also carry a high expert rating. - Use FormScan
index_ratingandcomparisonsto find runners with strong collateral form versus the field before a race. - Feed
pace_position_pctinto a model to predict race-pace scenarios based on the relative positions of prominent runners. - Aggregate
get_pace_data_by_meetingresults for a full card to build a meeting-level pace map in a single API call.
| 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 At The Races have an official public developer API?+
What does `get_formscan` return and how does it differ from the standard racecard form string?+
get_racecard shows a runner's sequential finishing positions in recent races. get_formscan returns FormScan collateral form: ATR's own system that links horses in today's race via previous shared meetings, producing an index_rating per runner and a comparisons array of text descriptions explaining those links. The two data sources complement each other rather than duplicate.Are historical racecards or results available, or is the API limited to upcoming races?+
Does the API cover Irish, French, or international courses, or only UK tracks?+
course parameter accepts any course name that appears in the attheraces.com URL path, which includes Irish courses and some international fixtures alongside UK tracks. Coverage depends on whether attheraces.com publishes a racecard for that meeting. Comprehensive international coverage beyond ATR's published cards is not guaranteed.Does `get_draw_data` return data for jump races as well as flat races?+
get_draw_data will return whatever draw data ATR publishes for the race, but entries for National Hunt fixtures may be absent or sparse. The API currently does not filter by race type before returning draw statistics. You can fork it on Parse and revise to add a race-type filter.