Search horses
Live, Archive and Complete
Horses by name.
Examplea real answer from 2026-10-29, trimmed to a few rows
{
"data": [
{
"horse_id": "hs_yct1s0c9",
"name": "Star",
"sex": "g",
"colour": null,
"career": {
"runs": 2,
"wins": 0,
"seconds": 0,
"thirds": 0,
"casualties": 0,
"win_pct": 0,
"first_run": "2021-11-16",
"last_run": "2021-12-20"
}
},
{
"horse_id": "hs_2da44y7h",
"name": "Star",
"sex": "g",
"colour": "b",
"career": {
"runs": 5,
"wins": 0,
"seconds": 0,
"thirds": 0,
"casualties": 0,
"win_pct": 0,
"first_run": "2022-09-26",
"last_run": "2023-06-09"
}
}
],
"meta": {
"request_id": "540652b2feefd55f",
"plan": "complete",
"window": "January 2017 to the next 3 days",
"data_as_of": "2026-10-30T11:26:32+00:00",
"count": 5
}
}Parameters
| Name | In | Type | Required | What it does |
|---|---|---|---|---|
q | query | string | no | Part of a name, two letters or more. |
limit | query | integer | no | How many rows in one answer, 1 to 100. Default 25. |
cursor | query | string | no | next_cursor from the previous answer, to read the next rows. Never build one. |
Returns
One record in data. Every answer carries meta: request_id, plan, window and data_as_of.
| Field | Type | Holds |
|---|---|---|
horse_id | string | Our id for the horse. |
name | string | The name, as raced: the race title on a race. |
sex | string | |
colour | null or value | |
career | object | |
career.runs | integer | How many runs. |
career.wins | integer | How many wins. |
career.seconds | integer | |
career.thirds | integer | |
career.casualties | integer | |
career.win_pct | integer | Wins as a share of runs, 0 to 1. |
career.first_run | string | |
career.last_run | string |
Errors
| Code | Status | When |
|---|---|---|
unauthorized | 401 | No key was sent, or the key is not one of ours. |
upgrade_required | 403 | Your plan does not reach this endpoint. The answer names the plans that do. |
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. |
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. |