horseracingapi.co.uk

Upcoming racecards

Live, Archive and Complete

Declarations for the next few days. British and Northern Irish racing only.

GEThttps://api.horseracingapi.co.uk/v1/racecards/upcoming
Try itruns against the real API with your key
Get a free key
GET /v1/racecards/upcoming
Examplea real answer from 2026-10-29, trimmed to a few rows
{
    "data": [
        {
            "race_id": "rc_p0n4gn9t",
            "meeting_id": "mt_8fbc2mcy",
            "course": "Charles Town",
            "time": "00:02",
            "off_time": null,
            "name": "Race 3 - Maiden Claiming",
            "run_type": null,
            "class": null,
            "distance": "4f 110y",
            "going": null,
            "surface": "DIRT",
            "handicap": false,
            "runners": 8,
            "result_available": false,
            "date": "2026-10-30"
        },
        {
            "race_id": "rc_2pxrgadc",
            "meeting_id": "mt_dfs6rek9",
            "course": "Penn National",
            "time": "00:10",
            "off_time": null,
            "name": "Race 6 - Claiming",
            "run_type": null,
            "class": null,
            "distance": "1m 70y",
            "going": null,
            "surface": "DIRT",
            "handicap": false,
            "runners": 6,
            "result_available": false,
            "date": "2026-10-30"
        }
    ],
    "meta": {
        "request_id": "4c4926d9c4c93fd5",
        "plan": "complete",
        "window": "January 2017 to the next 3 days",
        "data_as_of": "2026-10-30T11:33:04+00:00",
        "count": 327
    }
}
  

Parameters

NameInTypeRequiredWhat it does
daysqueryintegernoHow many days ahead, 1 to 7. Today and tomorrow when left out. Default 2.

Returns

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

FieldTypeHolds
race_idstringOur id for the race.
meeting_idstringOur id for the meeting.
coursestringThe course name.
timestringThe advertised off time by the racecourse clock, HH:MM.
off_timenull or valueWhen the race actually went off, by the racecourse clock; null until it has.
namestringThe name, as raced: the race title on a race.
run_typenull or valueFlat, Hurdle, Chase or NH Flat.
classnull or valueThe race class.
distancestringThe race distance as published, for example 2m 87y.
goingnull or valueThe going as declared; null until it is.
surfacestringTurf or the all-weather surface.
handicapbooleanWhether the race is a handicap.
runnersintegerThe runners, or how many there were.
result_availablebooleanWhether the race is settled.
datestringThe UK racing day, YYYY-MM-DD.

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.
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.