horseracingapi.co.uk

The meetings calendar

Live, Archive and Complete

Thirty days back and the week ahead, one row per UK course per day. British and Northern Irish racing only.

GEThttps://api.horseracingapi.co.uk/v1/meetings/calendar
Try itruns against the real API with your key
Get a free key
GET /v1/meetings/calendar
Examplea real answer from 2026-10-29, trimmed to a few rows
{
    "data": [
        {
            "date": "2026-09-30",
            "course_id": "cr_ttc2m93z",
            "course": "Catterick",
            "country": "GB",
            "code": "flat",
            "fixtures": 1,
            "races": 8,
            "status": "run"
        },
        {
            "date": "2026-09-30",
            "course_id": "cr_qxzyn94c",
            "course": "Kempton",
            "country": "GB",
            "code": "aw",
            "fixtures": 1,
            "races": 9,
            "status": "run"
        }
    ],
    "meta": {
        "request_id": "2d6f24742b86e537",
        "plan": "complete",
        "window": "January 2017 to the next 3 days",
        "data_as_of": "2026-10-30T12:18:33+00:00",
        "count": 125
    }
}
  

Parameters

None. Send your key and nothing else.

Returns

A list in data, one row each, with meta.count. Every answer carries meta: request_id, plan, window and data_as_of.

FieldTypeHolds
datestringThe UK racing day, YYYY-MM-DD.
course_idstringOur id for the course.
coursestringThe course name.
countrystringENG, Scot, Wale or Nort.
codestringflat or jumps.
fixturesintegerHow many fixtures.
racesintegerThe races, or how many there have been.
statusstringWhere the meeting stands.

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.
outside_plan_window403The day asked for is outside what your plan reads. The answer gives your window and the day you asked for.
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.