horseracingapi.co.uk

Yesterday's results

Every plan, free key included

Every settled UK race from yesterday. British and Northern Irish racing only.

GEThttps://api.horseracingapi.co.uk/v1/results/yesterday
Try itruns against the real API with your key
Get a free key
GET /v1/results/yesterday
Examplea real answer from 2026-10-29, trimmed to a few rows
{
    "data": [
        {
            "meeting_id": "mt_b5898ppq",
            "course_id": "cr_jqze1jjy",
            "course": "Bath",
            "country": "ENG",
            "region": "GB",
            "date": "2026-10-29",
            "going": "Soft (Heavy in places)",
            "surface": "TURF",
            "races": [
                {
                    "race_id": "rc_c2v2dgjt",
                    "meeting_id": "mt_b5898ppq",
                    "course": "Bath",
                    "time": "12:42",
                    "off_time": "12:44:22",
                    "name": "David Cole Memorial EBF Novice Stakes (GBB/GBBPlus Race) (Div 1)",
                    "run_type": "Flat",
                    "class": "3",
                    "distance": "1m",
                    "going": "Soft (Heavy in places)",
                    "surface": "TURF",
                    "handicap": false,
                    "runners": 12,
                    "result_available": true
                },
                {
                    "race_id": "rc_dk34v84n",
                    "meeting_id": "mt_b5898ppq",
                    "course": "Bath",
                    "time": "13:12",
                    "off_time": "13:15:53",
                    "name": "David Cole Memorial EBF Novice Stakes (GBB/GBBPlus Race) (Div 2)",
                    "run_type": "Flat",
                    "class": "3",
                    "distance": "1m",
                    "going": "Soft (Heavy in places)",
                    "surface": "TURF",
                    "handicap": false,
                    "runners": 11,
                    "result_available": true
                },
                {
                    "race_id": "rc_j4rqb8cc",
                    "meeting_id": "mt_b5898ppq",
                    "course": "Bath",
                    "time": "13:42",
                    "off_time": "13:45:03",
                    "name": "Bath Luxury Toilet Hire Nursery",
                    "run_type": "Flat",
                    "class": "6",
                    "distance": "1m",
                    "going": "Soft (Heavy in places)",
                    "surface": "TURF",
                    "handicap": true,
                    "runners": 8,
                    "result_available": true
                }
            ]
        },
        {
            "meeting_id": "mt_rc6bwdyr",
            "course_id": "cr_7vbqtcfg",
            "course": "Ffos Las",
            "country": "Wale",
            "region": "GB",
            "date": "2026-10-29",
            "going": "Heavy (Soft in places)",
            "surface": "TURF",
            "races": [
                {
                    "race_id": "rc_tkpw2q6x",
                    "meeting_id": "mt_rc6bwdyr",
                    "course": "Ffos Las",
                    "time": "13:30",
                    "off_time": "13:30:34",
                    "name": "bettingsites.co.uk Maiden Hurdle (GBB Race)",
                    "run_type": "Hurdle",
                    "class": "4",
                    "distance": "2m 4f",
                    "going": "Heavy (Soft in places)",
                    "surface": "TURF",
                    "handicap": false,
                    "runners": 13,
                    "result_available": true
                },
                {
                    "race_id": "rc_xqhxz6j1",
                    "meeting_id": "mt_rc6bwdyr",
                    "course": "Ffos Las",
                    "time": "14:00",
                    "off_time": "14:00:28",
                    "name": "Dandara Maiden Hurdle (GBB Race)",
                    "run_type": "Hurdle",
                    "class": "4",
                    "distance": "1m 7f 182y",
                    "going": "Heavy (Soft in places)",
                    "surface": "TURF",
                    "handicap": false,
                    "runners": 10,
                    "result_available": true
                },
                {
                    "race_id": "rc_zq7h6pfn",
                    "meeting_id": "mt_rc6bwdyr",
                    "course": "Ffos Las",
                    "time": "14:30",
                    "off_time": "14:31:05",
                    "name": "bettingsites.co.uk Handicap Hurdle",
                    "run_type": "Hurdle",
                    "class": "5",
                    "distance": "2m 4f",
                    "going": "Heavy (Soft in places)",
                    "surface": "TURF",
                    "handicap": true,
                    "runners": 6,
                    "result_available": true
                }
            ]
        }
    ],
    "meta": {
        "request_id": "3fc5b745f31684fb",
        "plan": "complete",
        "window": "January 2017 to the next 3 days",
        "data_as_of": "2026-10-30T04:03:33+00:00",
        "count": 4
    }
}
  

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
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.
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[].classstringThe 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.
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.