horseracingapi.co.uk

Search everything

Live, Archive and CompleteMCP: search_racing

One lookup across horses, trainers, jockeys and courses.

GEThttps://api.horseracingapi.co.uk/v1/search
Try itruns against the real API with your key
Get a free key
GET /v1/search
Examplea real answer from 2026-10-29, trimmed to a few rows
{
    "data": [
        {
            "type": "horse",
            "horse_id": "hs_yct1s0c9",
            "name": "Star"
        },
        {
            "type": "horse",
            "horse_id": "hs_2da44y7h",
            "name": "Star"
        }
    ],
    "meta": {
        "request_id": "025df39c24b14b1a",
        "plan": "complete",
        "window": "January 2017 to the next 3 days",
        "data_as_of": "2026-10-30T12:19:33+00:00",
        "count": 16
    }
}
  

Parameters

NameInTypeRequiredWhat it does
qquerystringnoPart of a name, two letters or more.
typequerystringnoOnly one kind of record.
horsetrainerjockeycourse
limitqueryintegernoHow many rows in one answer, Results per type, 1 to 25. Default 10.

Returns

One record in data. Every answer carries meta: request_id, plan, window and data_as_of.

FieldTypeHolds
typestring
horse_idstringOur id for the horse.
namestringThe name, as raced: the race title on a race.

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.