Discover/attheraces.com API
live

attheraces.com APIwww.attheraces.com

Access At The Races racecard data, draw bias statistics, pace analysis, and FormScan collateral form via 4 structured API endpoints.

Endpoint health
verified 2h ago
get_racecard
get_draw_data
get_formscan
get_pace_data
4/4 passing latest checkself-healing
Endpoints
4
Updated
4h ago
Try it
Race date in DD-Month-YYYY format (e.g. 23-June-2026).
Race time in HHMM format without colon (e.g. 1430 for 2:30 PM).
Course name as it appears in the URL path, hyphenated for multi-word names (e.g. Ffos-Las, Newton-Abbot, Newbury).
api.parse.bot/scraper/8d6569fa-c1a6-4496-b31e-5a7c6abc854b/<endpoint>
Ready to send
Fill in the parameters and hit sign in to send to see live response data here.
Call it over HTTPgrab a free API key at signup
curl -X GET 'https://api.parse.bot/scraper/8d6569fa-c1a6-4496-b31e-5a7c6abc854b/get_racecard?date=23-June-2026&time=1430&course=Ffos-Las' \
  -H 'X-API-Key: $PARSE_API_KEY'
Python SDK · recommended

Typed, relational, agent-ready

A generated client with real types, enums, and the links between objects — the structure a flat JSON response can't carry. Autocompletes in your editor and reads cleanly to coding agents.

  • Fully typed · autocompletes
  • Objects link to objects
  • Typed errors & pagination

Typed Python client. Set up the SDK in your uv project, then pull this API’s typed client:

uv add parse-sdk
uv run parse init
uv run parse add --marketplace attheraces-com-api

uv run parse add --marketplace pulls a pinned snapshot of this canonical API — it won’t change underneath you. To customize it, subscribe and swap to your own copy.

"""Walkthrough: At The Races racecard SDK — fetch race data and analysis."""
from parse_apis.At_The_Races_Racecard_API import AtTheRaces, RaceNotFound

client = AtTheRaces()

# Fetch the full racecard for a specific race
racecard = client.racecards.get(course="Ffos-Las", date="23-June-2026", time="1430")
print(f"Race: {racecard.race_name} at {racecard.venue_name}")
print(f"Going: {racecard.going}, Distance: {racecard.distance}, Runners: {racecard.number_of_runners}")

# Inspect individual runners with expert views
for runner in racecard.runners[:3]:
    print(f"  #{runner.number} {runner.horse_name} (Draw {runner.draw}) - Jockey: {runner.jockey}")
    print(f"    Rating: {runner.rating}, Stars: {runner.star_rating}, Form: {runner.form}")
    if runner.expert_view:
        print(f"    Expert: {runner.expert_view[:80]}...")

# Get draw bias analysis for the same race
draw = client.draw_analyses.get(course="Ffos-Las", date="23-June-2026", time="1430")
for entry in draw.draw_data[:3]:
    print(f"  Draw {entry.draw} ({entry.horse_name}): bias {entry.draw_bias_result}")

# Get pace analysis
pace = client.pace_analyses.get(course="Ffos-Las", date="23-June-2026", time="1430")
for entry in pace.pace_data[:3]:
    print(f"  Horse {entry.horse_id}: pace {entry.pace_rating}, position {entry.pace_position_pct}")

# Handle a non-existent race gracefully
try:
    missing = client.racecards.get(course="NonExistent", date="01-January-2020", time="0000")
except RaceNotFound as e:
    print(f"Race not found: {e}")

print("Exercised: racecards.get / draw_analyses.get / pace_analyses.get / RaceNotFound error handling")
All endpoints · 4 totalmissing one? ·

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.

Input
ParamTypeDescription
daterequiredstringRace date in DD-Month-YYYY format (e.g. 23-June-2026).
timerequiredstringRace time in HHMM format without colon (e.g. 1430 for 2:30 PM).
courserequiredstringCourse name as it appears in the URL path, hyphenated for multi-word names (e.g. Ffos-Las, Newton-Abbot, Newbury).
Response
{
  "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/Ffos-Las/23-June-2026/1430",
      "date": "23-June-2026",
      "time": "1430",
      "going": "Good",
      "prize": "Winner £4,187",
      "course": "Ffos-Las",
      "race_id": "1590891",
      "runners": [
        {
          "draw": "7",
          "form": "22218-1",
          "jockey": "Billy Loughnane",
          "number": "1",
          "rating": "79",
          "trainer": "C Mason",
          "headgear": "v",
          "horse_id": "3227627",
          "age_weight": "8 10-1 v",
          "horse_name": "On Edge",
          "expert_view": "Ran to best, hit the line well landing a handicap by a neck off a 2lb lower mark at Chepstow last time; trainer in form; effective 5/6f, acts on any; in very good form, respected after small rise.",
          "star_rating": "4",
          "official_rating": "75"
        }
      ],
      "distance": "6f",
      "forecast": "Forecast: 11/4 Lohoobb , 7/2 On Edge , 4/1 Punchbowl Flyer",
      "race_name": "Ffos Las - 23/06/26 - 14:30 - Class 5 horse race, 0m 6f 0y",
      "race_class": "Class 5 | 3YO plus",
      "venue_name": "Ffos Las Racecourse",
      "draw_advantage": "None",
      "number_of_runners": 7
    },
    "status": "success"
  }
}

About the attheraces.com API

The At The Races API exposes 4 endpoints covering horse racing racecard data, draw bias statistics, pace analysis, and FormScan collateral form from attheraces.com. The get_racecard endpoint returns full runner fields including form string, official rating, star rating, jockey, trainer, age/weight, expert view commentary, and betting forecast for any race identified by course, date, and time.

Racecard and Runner Data

The get_racecard endpoint accepts three required parameters — course (hyphenated, e.g. Ffos-Las), date (e.g. 23-June-2026), and time (e.g. 1430) — and returns a race-level object containing going, prize, distance, forecast, and a runners array. Each runner object includes draw, number, horse_name, horse_id, form, age_weight, official_rating, star_rating, jockey, trainer, and expert view commentary. This makes it straightforward to reconstruct a full racecard programmatically.

Draw Bias and Pace Analysis

The get_draw_data endpoint returns an array of draw entries, each with draw, expected_wins, actual_wins, and a draw_bias_result field that summarises whether a stall position is statistically favourable or unfavourable at the course. The get_pace_data endpoint returns pace_rating, pace_position_pct, and pace_description per runner, giving a numeric and textual view of where each horse typically races — useful for identifying front-runner-heavy or hold-up fields.

FormScan Collateral Form

The get_formscan endpoint returns ranked entries from the At The Races FormScan tool. Each entry carries an index_rating, a rank, and a comparisons array of text strings describing previous head-to-head form links between runners in the field. This collateral form data lets you reason about relative ability based on shared race history rather than isolated performance figures alone.

Inputs and Identifiers

All four endpoints share the same three-parameter signature: course, date, and time. The race_id field returned in every response can be used to cross-reference results across endpoints for the same race. Course names must match the URL path format used on attheraces.com, with spaces replaced by hyphens (e.g. Newton-Abbot, Newbury).

Reliability & maintenanceVerified

The attheraces.com API is a managed, monitored endpoint for www.attheraces.com — not a raw scraper you maintain. Every endpoint is automatically health-checked on a schedule, and when www.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 www.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.

Last verified
2h ago
Latest check
4/4 endpoints passing
Maintenance
Monitored & self-healing
Will this API break when the source site changes?+
It's built not to. Every endpoint is health-checked on a schedule with automated test probes. When the source site changes and a check fails, the API is automatically queued for repair and re-verified — that's the self-healing layer. Each API page shows when its endpoints were last verified. And because marketplace APIs are shared, any fix reaches everyone using it.
Is this an official API from the source site?+
No — Parse APIs are independent, managed REST wrappers over publicly available data. That is the point: where a site has no official API (or only a limited one), Parse gives you a maintained, monitored endpoint for that data and keeps it working as the site changes — so you get a stable contract over a source that never promised one.
Can I fix or extend this API myself if I need a new endpoint or field?+
Yes — and you don't have to wait on us. This API was generated by the Parse agent, which stays attached. Describe the change in plain English ("add an endpoint that returns reviews", "fix the price field") in the revise box on the API page or via the revise_api MCP tool, and the agent rebuilds it against the live site in minutes. Contributing the change back to the public API is free.
What happens if I call an endpoint that has an issue?+
Errors are machine-readable: a bad call returns a clean status with the list of available endpoints and a repair hint, so an agent (or you) can recover or trigger a fix instead of failing silently. Confirmed failures feed the automatic repair queue.
Common use cases
  • Building a draw bias alert tool that flags statistically favourable stall positions using actual_wins vs expected_wins.
  • Aggregating official ratings and star ratings from get_racecard to power a race comparison dashboard.
  • Feeding pace_description and pace_position_pct data into a pace-scenario modeller for flat race analysis.
  • Extracting FormScan index_rating and comparisons data to surface form links between runners meeting for the first time.
  • Archiving historical racecard data including going, prize, distance, and forecast for model training.
  • Populating a betting research tool with expert view commentary and star_rating fields for each runner.
  • Cross-referencing draw bias data with pace positions to identify horses likely to be disadvantaged by both factors.
Pricing & limitsSee full pricing →
TierPriceCredits/monthRate limit
Free$0/mo1005 req/min
Hobby$30/mo1,00020 req/min
Developer$100/mo5,000250 req/min

One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.

Frequently asked questions
Does At The Races have an official public developer API?+
At The Races does not publish a public developer API or document one for third-party use. This Parse API provides structured access to the racecard and analytical data available on attheraces.com.
What does `get_formscan` return and how is it different from the racecard form string?+
The get_formscan endpoint returns collateral form data — each entry includes an index_rating, a rank, and a comparisons array of text strings showing direct or indirect form links between runners. This is distinct from the raw form string in get_racecard, which is a horse's sequential result sequence rather than a cross-runner comparison.
Does the API cover historical races or only upcoming racecards?+
The endpoints are designed around the racecard URL structure on attheraces.com and work for any race you can identify by course, date, and time. Coverage depends on what attheraces.com makes available for the requested date; very old historical dates may not return data. The API does not expose a browse or search endpoint to enumerate available races. You can fork it on Parse and revise to add a race-listing endpoint if needed.
Is results data (finishing positions, winning times) available through this API?+
Not currently. The four endpoints cover racecard runners, draw bias, pace analysis, and FormScan form — all pre-race analytical data. Post-race results, finishing positions, and winning times are not included. You can fork this API on Parse and revise it to add a results endpoint targeting the relevant race result pages.
What is the `draw_bias_result` field and how should it be interpreted?+
The draw_bias_result field in get_draw_data is a categorical summary produced from the comparison of actual_wins to expected_wins for a given stall position at the course. A stall that has won significantly more often than expected will carry a positive bias result; one that underperforms its expected share will carry a negative result. It reflects historical draw patterns at the specific course, not a prediction for any individual race.
Page content last updated . Spec covers 4 endpoints from www.attheraces.com.
Related APIs in SportsSee all →
transfermarkt.com API
Search Transfermarkt for football players and retrieve detailed player profiles, transfer histories, market value timelines, performance stats, and club squad/club information.
opendota.com API
Access detailed Dota 2 match statistics, player performance metrics, hero win rates, and professional tournament data to analyze gameplay trends and competitive performance. Search for specific players, explore custom data queries through SQL, and retrieve comprehensive match histories to improve your understanding of the game.
nhl.com API
Access data from nhl.com.
fifa.com API
Track FIFA world rankings for men's and women's teams, browse tournament schedules and standings, access detailed match information with live timelines, and explore comprehensive player statistics and profiles. Stay updated with the latest football news and easily search across teams, players, and matches all in one place.
livescore.com API
Track live scores and detailed statistics across football, hockey, basketball, tennis, and cricket with the ability to filter by date, sport, and league. Access match summaries, team overviews, standings, fixtures, and results to stay updated on your favorite competitions and teams.
hltv.org API
Access Counter-Strike esports data from HLTV.org including match results, player and team statistics, team rankings, upcoming match schedules, tournament information, and fantasy league data.
transfermarkt.de API
Access data from transfermarkt.de.
ratings.fide.com API
Find chess players and track their FIDE ratings, rankings, and performance history by searching the official ratings database or browsing the world's top-ranked players. Get detailed player profiles with complete rating trends and game statistics to analyze any player's competitive record.
At The Races API – Racecards & Form Data · Parse