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 / Racecards

Horses racecards ahead API

Racecards ahead
Sport plan, liveMCP tool: fixturesKept 2 minutes

Races declared for the coming days.

This lists what is coming, with start times in UTC and the ids that carry on into results once played. It comes with the Horses plan.

GET/v1/horses/cards/upcoming

Try it

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

GET
200 OK1904 ms2 rows shownReal answer from 2026-11-03, trimmed
{
    "data": [
        {
            "race_id": "hr_3nye3w73s8",
            "meeting_id": "hr_2401t0egym",
            "course": "Mountaineer",
            "time": "00:00",
            "off_time": null,
            "name": "Race 1 - Maiden Claiming",
            "run_type": null,
            "class": null,
            "distance": "1m",
            "going": null,
            "surface": "TURF",
            "handicap": true,
            "runners": 13,
            "result_available": false,
            "date": "2026-11-03"
        },
        {
            "race_id": "hr_1n7f3t19gt",
            "meeting_id": "hr_xv2sx5pqd8",
            "course": "Hobart",
            "time": "00:02",
            "off_time": null,
            "name": "Kevin Sharkie Maiden",
            "run_type": "Flat",
            "class": null,
            "distance": "1000m",
            "going": "Good 4",
            "surface": "Turf",
            "handicap": false,
            "runners": 11,
            "result_available": true,
            "date": "2026-11-03"
        }
    ],
    "meta": {
        "sport": "horses",
        "endpoint": "/cards/upcoming",
        "count": 362,
        "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

This call takes no query values.

Returns

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

FieldTypeWhat it holds
race_ididThe race, by our id
meeting_ididThe meeting, by our id
coursestringThe course
timestringThe time
off_timenullThe off time
namestringIts name
run_typenullRun type
classnullThe class
distancestringThe distance
goingnullThe going
surfacestringTurf, all-weather or similar
handicapbooleanWhether it is a handicap
runnersintegerEvery runner
result_availablebooleanResult available
datedateThe day, YYYY-MM-DD
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, or a sport you do not hold
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

Racecards ahead comes with the Horses plan, $79 a month, with every date held and 250,000 calls a month.

Add Horses