Horses racecards ahead API
Racecards aheadRaces declared for the coming days.
This lists what is coming, with start times in UTC and the ids that carry on into results once played. It comes with the Horses plan.
Try it
Your key stays in this browser and is filled in on every docs page.
200 OK1904 ms2 rows shownReal answer from 2026-11-03, trimmed
{
"data": [
{
"race_id": "hr_3nye3w73s8",
"meeting_id": "hr_2401t0egym",
"course": "Mountaineer",
"time": "00:00",
"off_time": null,
"name": "Race 1 - Maiden Claiming",
"run_type": null,
"class": null,
"distance": "1m",
"going": null,
"surface": "TURF",
"handicap": true,
"runners": 13,
"result_available": false,
"date": "2026-11-03"
},
{
"race_id": "hr_1n7f3t19gt",
"meeting_id": "hr_xv2sx5pqd8",
"course": "Hobart",
"time": "00:02",
"off_time": null,
"name": "Kevin Sharkie Maiden",
"run_type": "Flat",
"class": null,
"distance": "1000m",
"going": "Good 4",
"surface": "Turf",
"handicap": false,
"runners": 11,
"result_available": true,
"date": "2026-11-03"
}
],
"meta": {
"sport": "horses",
"endpoint": "/cards/upcoming",
"count": 362,
"as_of": "2026-11-03T04:22:33+00:00",
"cached": false,
"age_seconds": 0
}
}No key yet? Get a free key: it reads yesterday for every sport and is filled in here once made.
Parameters
This call takes no query values.
Returns
Each row of data, from a real answer. Every id is ours and opens its own endpoint.
| Field | Type | What it holds |
|---|---|---|
| race_id | id | The race, by our id |
| meeting_id | id | The meeting, by our id |
| course | string | The course |
| time | string | The time |
| off_time | null | The off time |
| name | string | Its name |
| run_type | null | Run type |
| class | null | The class |
| distance | string | The distance |
| going | null | The going |
| surface | string | Turf, all-weather or similar |
| handicap | boolean | Whether it is a handicap |
| runners | integer | Every runner |
| result_available | boolean | Result available |
| date | date | The day, YYYY-MM-DD |
| meta | What it holds |
|---|---|
| sport, endpoint | What you asked |
| count | Rows in this answer |
| page, per_page, total, next_cursor | Where you are in a paged list, when it is paged |
| as_of | When the data was built |
| cached, age_seconds | Whether this is a stored copy, and its age |
| access | On the free key: what it reads, and the plan that opens the rest |
Errors
Codes this call can give. Each is explained in Errors.
| Status | Code | When |
|---|---|---|
| 401 | no_key | No key sent, or not in a form we read |
| 401 | bad_key | A key we do not know |
| 403 | plan | The free key, or a sport you do not hold |
| 422 | bad_param | A value this call does not take |
| 429 | rate | Over the calls a minute for your plan |
| 503 | upstream | The data is not answering; retry after Retry-After |
Racecards ahead comes with the Horses plan, $79 a month, with every date held and 250,000 calls a month.
Add Horses