DataSportAPI
Sports / Horses

Horse racing data API

Horses data, from 2017 through one key

Horse racing racecards for today and the days ahead, results with every finisher and starting price, horse form, jockeys and trainers with their figures, and every course held, close to 700 of them.

9 endpointsFree key reads yesterdaySame shape as every sport
GET /v1/horses/results09:58:27 UTC
real answers, kept each night2 rows
2017
history held from
9
endpoints
5
kinds of answer
Minutes
results after the finish
$79
a month, $790 a year

Endpoints

Everything horses answers

Each one opens in the docs with a live console, your key already filled in.

MethodAddressWhat it givesFree key
GET/v1/horses/cards/todayToday's racecards with every runnerTry it
GET/v1/horses/cards/upcomingRaces declared for the coming daysTry it
GET/v1/horses/resultsResults by date with every finisher and starting priceYesterdayTry it
GET/v1/horses/races/{id}One race with every runner, its draw, weight, jockey and priceYesterdayTry it
GET/v1/horses/horses/{id}/formA horse's runs, newest firstYesterdayTry it
GET/v1/horses/jockeys/{id}A jockey and their figuresYesterdayTry it
GET/v1/horses/trainers/{id}A trainer and their figuresYesterdayTry it
GET/v1/horses/coursesEvery course held, with its locationYesterdayTry it
GET/v1/horses/searchHorses, jockeys, trainers and courses by nameYesterdayTry it

A real answer

What comes back

Kept from the API each night, exactly as a caller receives it, lists cut to a few rows.

GET /v1/horses/results200
{
    "data": [
        {
            "meeting_id": "hr_qxyey1mz1b",
            "course_id": "hr_e891c9va9h",
            "course": "Agen La Garenne",
            "country": "FRA",
            "region": "FR",
            "date": "2026-11-02",
            "going": null,
            "surface": null,
            "races": [
                {
                    "race_id": "hr_jzhrfaj33b",
                    "meeting_id": "hr_qxyey1mz1b",
                    "course": "Agen La Garenne",
                    "time": "12:40",
                    "off_time": null,
                    "name": "Prix Pierre Pujol (Gr.a)",
                    "run_type": "Trot",
                    "class": null,
                    "distance": "2575m",
                    "going": null,
                    "surface": null,
                    "handicap": false,
                    "runners": 16,
                    "result_available": true
                },
                {
                    "race_id": "hr_ewyjpav56j",
                    "meeting_id": "hr_qxyey1mz1b",
                    "course": "Agen La Garenne",
                    "time": "13:10",
                    "off_time": null,
                    "name": "Prix Raymond Esclapez (Gr.b)",
                    "run_type": "Trot",
                    "class": null,
                    "distance": "2575m",
                    "going": null,
                    "surface": null,
                    "handicap": false,
                    "runners": 16,
                    "result_available": true
                },
                {
                    "race_id": "hr_4k7drnaqcq",
                    "meeting_id": "hr_qxyey1mz1b",
                    "course": "Agen La Garenne",
                    "time": "13:40",
                    "off_time": null,
                    "name": "Prix Alain Chadourne",
                    "run_type": "Trot",
                    "class": null,
                    "distance": "2575m",
                    "going": null,
                    "surface": null,
                    "handicap": false,
                    "runners": 7,
                    "result_available": true
                }
            ]
        },
        {
            "meeting_id": "hr_hp3jk09721",
            "course_id": "hr_6kr681dtjd",
            "course": "Ballarat",
            "country": "AUS",
            "region": "AUS",
            "date": "2026-11-02",
            "going": "Soft 7",
            "surface": "Turf",
            "races": [
                {
                    "race_id": "hr_072cz9a0xq",
                    "meeting_id": "hr_hp3jk09721",
                    "course": "Ballarat",
                    "time": "02:30",
                    "off_time": null,
                    "name": "Manhari 3YO Maiden Plate",
                    "run_type": "Flat",
                    "class": null,
                    "distance": "1600m",
                    "going": "Soft 7",
                    "surface": "Turf",
                    "handicap": false,
                    "runners": 7,
                    "result_available": true
                },
                {
                    "race_id": "hr_77h43jpm5z",
                    "meeting_id": "hr_hp3jk09721",
                    "course": "Ballarat",
                    "time": "03:00",
                    "off_time": null,
                    "name": "AC Accounting Maiden Plate",
                    "run_type": "Flat",
                    "class": null,
                    "distance": "1000m",
                    "going": "Soft 7",
                    "surface": "Turf",
                    "handicap": false,
                    "runners": 6,
                    "result_available": true
                },
                {
                    "race_id": "hr_xf08mcp1pe",
                    "meeting_id": "hr_hp3jk09721",
                    "course": "Ballarat",
                    "time": "03:30",
                    "off_time": null,
                    "name": "Winning Edge Presentations - Emerging Stars Series Heat 5",
                    "run_type": "Flat",
                    "class": null,
                    "distance": "1200m",
                    "going": "Soft 7",
                    "surface": "Turf",
                    "handicap": false,
                    "runners": 10,
                    "result_available": true
                }
            ]
        }
    ],
    "meta": {
        "sport": "horses",
        "endpoint": "/results",
        "count": 24,
        "as_of": "2026-11-03T04:22:33+00:00",
        "cached": false,
        "age_seconds": 0
    }
}

Goes well with

Sports often taken with horses

Football
Serving
Football results and fixtures across leagues worldwide, with live scores and more
Greyhounds
Serving
Greyhound racing in Great Britain, Ireland and Australia: today's cards with every trap and more
Cricket
Serving
International, franchise and domestic matches, men and women, with live scores ball by ball and more

Can I try horses before I pay?

Yes. The free key reads yesterday's horses data on every endpoint except live and fixtures, 50 calls a day, no card.

What does the Horses plan include?

Every horses endpoint, live and upcoming included, the full history we hold, 120 calls a minute and 250,000 a month, for $79 a month or $790 a year.

Does it answer like the other sports?

Yes. Horses answers in the same shape as every other sport, through the same key, so code written for one reads the rest.

Can I use it with Claude?

Yes. The MCP server turns each horses endpoint into a tool, on the same key.