horseracingapi.co.uk

One meeting

Every plan, free key included

One meeting and every race on it.

GEThttps://api.horseracingapi.co.uk/v1/meetings/{meeting_id}
Try itruns against the real API with your key
Get a free key
GET /v1/meetings/{meeting_id}
Examplea real answer from 2026-10-29, trimmed to a few rows
{
    "data": {
        "meeting_id": "mt_yzs5rm2b",
        "course_id": "cr_239y20yw",
        "course": "Abu Dhabi",
        "country": "UAE",
        "region": "UAE",
        "date": "2026-10-29",
        "going": "Good",
        "surface": "TURF",
        "weather": "Fine",
        "status": "DORMANT",
        "races": [
            {
                "race_id": "rc_0aa1c4st",
                "meeting_id": "mt_yzs5rm2b",
                "course": "Abu Dhabi",
                "time": "13:00",
                "off_time": "13:01:21",
                "name": "Race 1 - Al Ghadeer Handicap",
                "run_type": "Flat",
                "class": null,
                "distance": "6f",
                "going": "Good",
                "surface": "TURF",
                "handicap": true,
                "runners": 12,
                "result_available": true
            },
            {
                "race_id": "rc_z054gb4m",
                "meeting_id": "mt_yzs5rm2b",
                "course": "Abu Dhabi",
                "time": "13:30",
                "off_time": "13:32:18",
                "name": "Race 2 - Al Bidaya Maiden Stakes",
                "run_type": "Flat",
                "class": null,
                "distance": "7f",
                "going": "Good",
                "surface": "TURF",
                "handicap": false,
                "runners": 13,
                "result_available": true
            },
            {
                "race_id": "rc_ny78pgj5",
                "meeting_id": "mt_yzs5rm2b",
                "course": "Abu Dhabi",
                "time": "14:00",
                "off_time": "14:02:58",
                "name": "Race 3 - Al Maqam Classic Maiden Stakes",
                "run_type": "Flat",
                "class": null,
                "distance": "1m 3f",
                "going": "Good",
                "surface": "TURF",
                "handicap": false,
                "runners": 15,
                "result_available": true
            }
        ]
    },
    "meta": {
        "request_id": "f9641ec4a5704e10",
        "plan": "complete",
        "window": "January 2017 to the next 3 days",
        "data_as_of": "2026-10-30T11:05:06+00:00"
    }
}
  

Parameters

NameInTypeRequiredWhat it does
meeting_idpathidyesOur id for the meeting, as other answers give it (mt_ and eight characters).

Returns

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

FieldTypeHolds
meeting_idstringOur id for the meeting.
course_idstringOur id for the course.
coursestringThe course name.
countrystringENG, Scot, Wale or Nort.
regionstringGB, or NORT for Northern Ireland.
datestringThe UK racing day, YYYY-MM-DD.
goingstringThe going as declared; null until it is.
surfacestringTurf or the all-weather surface.
weatherstringThe weather on the day, where published.
statusstringWhere the meeting stands.
racesarrayThe races, or how many there have been.
races[].race_idstringOur id for the race.
races[].meeting_idstringOur id for the meeting.
races[].coursestringThe course name.
races[].timestringThe advertised off time by the racecourse clock, HH:MM.
races[].off_timestringWhen the race actually went off, by the racecourse clock; null until it has.
races[].namestringThe name, as raced: the race title on a race.
races[].run_typestringFlat, Hurdle, Chase or NH Flat.
races[].classnull or valueThe race class.
races[].distancestringThe race distance as published, for example 2m 87y.
races[].goingstringThe going as declared; null until it is.
races[].surfacestringTurf or the all-weather surface.
races[].handicapbooleanWhether the race is a handicap.
races[].runnersintegerThe runners, or how many there were.
races[].result_availablebooleanWhether the race is settled.

Errors

CodeStatusWhen
unauthorized401No key was sent, or the key is not one of ours.
outside_plan_window403The day asked for is outside what your plan reads. The answer gives your window and the day you asked for.
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.
not_found404No record has that id, or it is not British or Northern Irish racing.
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.