DataSportAPI
Docs
Your first call in one line

The free key reads yesterday for every sport, 50 calls a day. No card.

Get a free key
Every sport, one key

Complete reads all sixteen sports for $249 a month.

Take Complete
Ask in plain words

"Who won at Kempton yesterday?" Your assistant picks the tool and answers from your plan.

Connect in two minutes
Showing
Documentation / Horses / Courses

Horses courses API

Courses
Free key reads yesterdayMCP tool: competitionsKept 6 hours

Every course held, with its location.

A list you will want once and then keep: it changes rarely. Ids in it open their own endpoints.

GET/v1/horses/courses

Try it

Your key stays in this browser and is filled in on every docs page.

GET
200 OK1905 ms2 rows shownReal answer from 2026-11-03, trimmed
{
    "data": [
        {
            "course_id": "hr_e6rczatt3p",
            "name": "Gulfstream",
            "shortcode": null,
            "country": "USA",
            "region": "USA",
            "races": 19657,
            "meetings": 1935,
            "first_meeting": "2015-09-07",
            "last_meeting": "2026-11-01",
            "town": null,
            "county": null,
            "nation": null,
            "lat": null,
            "lng": null,
            "direction": null,
            "kinds": []
        },
        {
            "course_id": "hr_d40vvwsg7c",
            "name": "Charles Town",
            "shortcode": null,
            "country": "USA",
            "region": "USA",
            "races": 12933,
            "meetings": 1585,
            "first_meeting": "2015-05-09",
            "last_meeting": "2026-10-31",
            "town": null,
            "county": null,
            "nation": null,
            "lat": null,
            "lng": null,
            "direction": null,
            "kinds": []
        }
    ],
    "meta": {
        "sport": "horses",
        "endpoint": "/courses",
        "count": 734,
        "as_of": "2026-11-03T04:22:33+00:00",
        "cached": false,
        "age_seconds": 0
    }
}
No key yet? Get a free key: it reads yesterday for every sport and is filled in here once made.

Parameters

Query values this call takes. Anything else is refused with bad_param and the list it accepts.

NameTypeWhat it does
seasonstringoptionalThe season, by the id or starting year shown in Competitions.
pageintegeroptionalWhich page of rows, from 1.
per_pageintegeroptionalRows per page, up to 100 on most lists.

Returns

Each row of data, from a real answer. Every id is ours and opens its own endpoint.

FieldTypeWhat it holds
course_ididThe course, by our id
namestringIts name
shortcodenullShortcode
countrystringThe country
regionstringThe region
racesintegerThe races in it
meetingsintegerMeetings
first_meetingdateFirst in metreseeting
last_meetingdateLast in metreseeting
townnullTown
countynullCounty
nationnullNation
latnullLat
lngnullLng
directionnullDirection
kindslistKinds
metaWhat it holds
sport, endpointWhat you asked
countRows in this answer
page, per_page, total, next_cursorWhere you are in a paged list, when it is paged
as_ofWhen the data was built
cached, age_secondsWhether this is a stored copy, and its age
accessOn the free key: what it reads, and the plan that opens the rest

Errors

Codes this call can give. Each is explained in Errors.

StatusCodeWhen
401no_keyNo key sent, or not in a form we read
401bad_keyA key we do not know
403planThe free key asked for a date other than yesterday
422bad_paramA value this call does not take
429rateOver the calls a minute for your plan
503upstreamThe data is not answering; retry after Retry-After

The free key reads yesterday. The Horses plan opens live, fixtures and every date held, for $79 a month.

Add Horses