horseracingapi.co.uk
Documentation

UK Horse Racing API documentation

British and Northern Irish racing in one clean JSON API: every course, every card and runner, results with starting prices and the market, written race reports, and the trainers, jockeys and owners behind every horse. Every UK race since January 2017, brought up to date every couple of minutes on race days, across 46 endpoints.

It is built for people making racing sites and apps, form tools, research and backtests, and assistants that answer racing questions. It is factual data only, with no tips or predictions. Every endpoint has its own page below, with Run beside the words.

Start here

1
Get a key

Sign in with Google. Your free key appears at once and reads yesterday's UK racing.

Get a free key
2
Make a call

Send it as X-API-Key. Yesterday's results are the call most people make first.

Quick start
3
Read the answer

Every answer is data and meta: the plan, its window and how fresh it is.

Your key

Your first call, live

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

  

Every subject

Courses

Every UK course: where it is, which way round, what it races and its fixtures ahead.

Read the guide
Cards and results

Meetings, racecards and settled results, by day.

Read the guide
Races and markets

One race in full: the field, the result, the market, dividends and upsets.

Read the guide
Race reports

Written accounts of UK races since 2020, with a line for every runner.

Read the guide
Horses

Search, records, form, breeding and every race two horses met in.

Read the guide
Trainers, jockeys and owners

Search, profiles and form for the people behind every runner.

Read the guide
Statistics

Strike rate, A/E and level stakes, by course, rider, yard and more.

Read the guide

Every endpoint

Race reportsWritten accounts of UK races since 2020, with a line for every runner.
/v1/reportsWritten UK race reports since 2020/v1/reports/{race_id}The written account of one race
Your keyWhat your key reads and how much it has used.
/v1/usageYour plan, window and calls used
Every plan, free key includedLive, Archive and CompleteComplete

Popular calls

CallWhat it gives
GET /v1/trainers/searchTrainers by name
GET /v1/results/yesterdayEvery settled UK race from yesterday
GET /v1/racecards/todayToday's UK cards, grouped by meeting
GET /v1/races/{race_id}One race: conditions, the market and every runner
GET /v1/coursesEvery UK course, busiest first

Use with Claude and agents

Give an assistant the whole API. The MCP server lets Claude, ChatGPT or Cursor call it for you with your key; the agent skill teaches any agent how to use it well; the manual is everything here in one file. Save the skill as ~/.claude/skills/horseracingapi-uk/SKILL.md, or upload it as a skill in Claude's settings.

MCP server

Ask for today's cards in plain English.

https://horseracingapi.co.uk/mcp
MCP tools

Every tool, its inputs and the plan it needs.

/documentation/mcp-tools
Open
Agent skill

One file that teaches an agent the API.

/skill.md
The manual

Everything here in one markdown file, and llms.txt to find it.

/documentation/manual.md
Open

Plans in short

PlanReadsPer minutePer monthPrice
Free keyyesterday only6050Free
Livetoday and the next 3 days180250,000£35
ArchiveJanuary 2017 to yesterday90150,000£60
CompleteJanuary 2017 to the next 3 days, reports and statistics180400,000£89

Annual plans cost ten months. Compare them on the pricing page, or read plans and limits.

What is new

The full changelog

The rest

Your key in X-API-Key or as Authorization: Bearer, never in the address. Rotating keeps the old key for 24 hours.

Every error is a fixed code with a plain message and a request id. Branch on the code.

Long lists come a page at a time; pass next_cursor back while has_more is true.

Per minute and per month by plan, with the counts left in every answer's headers.

The site, the API and the MCP server, checked every minute.

Ask a question or report a problem; quote the request id from the answer.

Questions people ask

Are race times in UTC?

No. A race time is the time on the racecourse clock, because that is the time racing is run to. Every other time is UTC, with a Z. More

Which courses are covered?

Every course in Great Britain and Northern Ireland. Racing in the Republic of Ireland and the rest of the world is not included. More

How far back does it go?

Every UK race since 1 January 2017 on Archive and Complete. Race reports start in 2020. More

What does the free key hold back?

It reads yesterday only, and prices come back as null. The fields stay, so code built on the free key keeps working when you upgrade. More

Can I keep and show the ids?

Yes. Every id is ours, stable and safe to store. Take them from answers; never build one. More

Is there betting advice?

No. It is factual racing data only: no tips, ratings or predictions on any endpoint. More