One course
Every plan, free key includedMCP: course_details
One course: what is raced there and the distances.
Examplea real answer from 2026-10-29, trimmed to a few rows
{
"data": {
"course_id": "cr_239y20yw",
"name": "Abu Dhabi",
"shortcode": null,
"country": "UAE",
"region": "UAE",
"races": 22,
"meetings": 3,
"first_meeting": "2025-04-12",
"last_meeting": "2026-10-29",
"town": null,
"county": null,
"nation": null,
"lat": null,
"lng": null,
"direction": null,
"kinds": [],
"run_types": [
{
"run_type": "Flat",
"surface": "TURF",
"races": 21,
"first": "2025-04-12",
"last": "2026-10-29"
},
{
"run_type": null,
"surface": "TURF",
"races": 1,
"first": "2025-04-12",
"last": "2025-04-12"
}
],
"distances": [
{
"distance": "1m 3f",
"races": 7
},
{
"distance": "1m",
"races": 6
},
{
"distance": "7f",
"races": 5
}
]
},
"meta": {
"request_id": "e7934fe3e2b0a40f",
"plan": "complete",
"window": "January 2017 to the next 3 days",
"data_as_of": "2026-10-30T10:08:33+00:00"
}
}Parameters
| Name | In | Type | Required | What it does |
|---|---|---|---|---|
course_id | path | id | yes | Our id for the course, as other answers give it (cr_ and eight characters). |
Returns
One record in data. Every answer carries meta: request_id, plan, window and data_as_of.
| Field | Type | Holds |
|---|---|---|
course_id | string | Our id for the course. |
name | string | The name, as raced: the race title on a race. |
shortcode | null or value | The course's short code, where it has one. |
country | string | ENG, Scot, Wale or Nort. |
region | string | GB, or NORT for Northern Ireland. |
races | integer | The races, or how many there have been. |
meetings | integer | The meetings. |
first_meeting | string | The first meeting we hold, a UK day. |
last_meeting | string | The latest meeting we hold, a UK day. |
town | null or value | The town or nearest town. |
county | null or value | The county, or council area in Scotland and Wales. |
nation | null or value | England, Scotland, Wales or Northern Ireland. |
lat | null or value | Latitude of the course, four decimals. |
lng | null or value | Longitude of the course, four decimals. |
direction | null or value | Which way round it runs: left, right or figure of eight. |
kinds | array | The kinds of racing held there. |
run_types | array | The kinds of racing held there, with counts. |
run_types[].run_type | string | Flat, Hurdle, Chase or NH Flat. |
run_types[].surface | string | Turf or the all-weather surface. |
run_types[].races | integer | The races, or how many there have been. |
run_types[].first | string | How many won. |
run_types[].last | string | |
distances | array | The distances raced there, with counts. |
distances[].distance | string | The race distance as published, for example 2m 87y. |
distances[].races | integer | The races, or how many there have been. |
Errors
| Code | Status | When |
|---|---|---|
unauthorized | 401 | No key was sent, or the key is not one of ours. |
bad_request | 400 | A value is the wrong shape: a date that is not YYYY-MM-DD, a cursor that is not ours, or a key sent in the address. |
unknown_parameter | 422 | A parameter this endpoint does not take. The answer lists the ones it does. |
not_found | 404 | No record has that id, or it is not British or Northern Irish racing. |
rate_limited | 429 | Too many calls this minute for your plan. |
quota_exceeded | 429 | Your plan's calls for the month are used. The answer says when they reset. |