A race's runners
Every plan, free key included
The field alone.
Examplea real answer from 2026-10-29, trimmed to a few rows
{
"data": [
{
"cloth": 6,
"draw": 4,
"horse_id": "hs_x73ps4xh",
"horse": "Af Saqara",
"age": 5,
"weight": "8-11",
"official_rating": null,
"form": "11-30",
"headgear": "Blinkers",
"owner": "Khalid Khalifa Al Nabooda",
"owner_id": "ow_neh55z1b",
"trainer_id": "tr_j3qtz590",
"trainer": "Ernst Oertel",
"jockey_id": "jk_xr618k8m",
"jockey": "Bernardo Pinheiro",
"silk": "Black, white star, black sleeves, white cap",
"sp": "7/1",
"sp_decimal": 8,
"price_path": {
"opening": null,
"opening_decimal": null,
"touched": null,
"sp": "7/1",
"sp_decimal": 8,
"drift": null,
"source": "starting_price_only"
},
"favourite": false,
"market_position": 3,
"position": 1,
"beaten_distance": null,
"casualty": null,
"run_status": "ran",
"last_run_days": 201,
"speed_figure": null,
"breeding": null,
"handicap_mark": null
},
{
"cloth": 11,
"draw": 7,
"horse_id": "hs_des8z34q",
"horse": "Af Marmuq",
"age": 8,
"weight": "8-6",
"official_rating": null,
"form": "011506",
"headgear": null,
"owner": "Khalid Khalifa Al Nabooda",
"owner_id": "ow_neh55z1b",
"trainer_id": "tr_j3qtz590",
"trainer": "Ernst Oertel",
"jockey_id": "jk_bvfc3660",
"jockey": "M Rodrigues",
"silk": "Black, white star, black sleeves, blue cap",
"sp": "10/1",
"sp_decimal": 11,
"price_path": {
"opening": null,
"opening_decimal": null,
"touched": null,
"sp": "10/1",
"sp_decimal": 11,
"drift": null,
"source": "starting_price_only"
},
"favourite": false,
"market_position": 7,
"position": 2,
"beaten_distance": "3/4 length",
"casualty": null,
"run_status": "ran",
"last_run_days": 208,
"speed_figure": null,
"breeding": null,
"handicap_mark": null
}
],
"meta": {
"request_id": "84ef039c0c69f830",
"plan": "complete",
"window": "January 2017 to the next 3 days",
"data_as_of": "2026-10-30T11:11:03+00:00",
"count": 12
}
}Parameters
| Name | In | Type | Required | What it does |
|---|---|---|---|---|
race_id | path | id | yes | Our id for the race, as other answers give it (rc_ and eight characters). |
Returns
One record in data. Every answer carries meta: request_id, plan, window and data_as_of.
| Field | Type | Holds |
|---|---|---|
cloth | integer | The saddle cloth number. |
draw | integer | The stall, on the Flat. |
horse_id | string | Our id for the horse. |
horse | string | The horse's name. |
age | integer | Age conditions of the race, or the horse's age in years. |
weight | string | The weight carried, as published, for example 11-4. |
official_rating | null or value | The official handicap mark. |
form | string | Recent form figures, newest last. |
headgear | string | Headgear worn, if any. |
owner | string | The owner's name. |
owner_id | string | Our id for the owner. |
trainer_id | string | Our id for the trainer. |
trainer | string | The trainer's name. |
jockey_id | string | Our id for the jockey. |
jockey | string | The jockey's name. |
silk | string | The owner's colours, in words. |
sp | string | Starting price, fractional. Null on the free key. |
sp_decimal | integer | Starting price, decimal. Null on the free key. |
price_path | object | How the price moved: opening, touched and drift. Null on the free key. |
price_path.opening | null or value | The first price shown. Null on the free key. |
price_path.opening_decimal | null or value | |
price_path.touched | null or value | |
price_path.sp | string | Starting price, fractional. Null on the free key. |
price_path.sp_decimal | integer | Starting price, decimal. Null on the free key. |
price_path.drift | null or value | |
price_path.source | string | |
favourite | boolean | Whether it started favourite. Null on the free key. |
market_position | integer | Its place in the betting. Null on the free key. |
position | integer | Where it finished; null for a non-finisher. |
beaten_distance | null or value | How far behind the winner, in lengths. |
casualty | null or value | Why it did not finish, if it did not. |
run_status | string | ran, or why not. |
last_run_days | integer | Days since its previous run. |
speed_figure | null or value | A speed figure, where held. |
breeding | null or value | |
handicap_mark | null or value |
Errors
| Code | Status | When |
|---|---|---|
unauthorized | 401 | No key was sent, or the key is not one of ours. |
outside_plan_window | 403 | The day asked for is outside what your plan reads. The answer gives your window and the day you asked for. |
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. |