horseracingapi.co.uk

Search horses

Live, Archive and Complete

Horses by name.

GEThttps://api.horseracingapi.co.uk/v1/horses/search
Try itruns against the real API with your key
Get a free key
GET /v1/horses/search
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

NameInTypeRequiredWhat it does
qquerystringnoPart of a name, two letters or more.
limitqueryintegernoHow many rows in one answer, 1 to 100. Default 25.
cursorquerystringnonext_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.

FieldTypeHolds
horse_idstringOur id for the horse.
namestringThe name, as raced: the race title on a race.
sexstring
colournull or value
careerobject
career.runsintegerHow many runs.
career.winsintegerHow many wins.
career.secondsinteger
career.thirdsinteger
career.casualtiesinteger
career.win_pctintegerWins as a share of runs, 0 to 1.
career.first_runstring
career.last_runstring

Errors

CodeStatusWhen
unauthorized401No key was sent, or the key is not one of ours.
upgrade_required403Your plan does not reach this endpoint. The answer names the plans that do.
bad_request400A 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_parameter422A parameter this endpoint does not take. The answer lists the ones it does.
rate_limited429Too many calls this minute for your plan.
quota_exceeded429Your plan's calls for the month are used. The answer says when they reset.