APIHorseRacing

Documentation / Reference

What a free key reaches

The same production database every paid plan reads, on a delayed window. Not a sandbox, not sample data, and not a trial.

The window

A free key reads from seven days ago to twenty-four hours ago. Today's racing sits on the far side of that line, and so does anything older than a week. The window moves with the clock, so it never runs out.

# inside the window: three days ago
curl -H "X-API-Key: $KEY" \
  "https://api.apihorseracing.com/v1/results/2026-09-19"

# outside it: today
curl -H "X-API-Key: $KEY" \
  "https://api.apihorseracing.com/v1/results/2026-09-22"

The second returns an error rather than an empty list, because a blank result looks like missing data and this is not:

{
  "error": {
    "code": "outside_window",
    "message": "A free key reads 2026-09-07 to 2026-09-13. Requested 2026-09-14.",
    "your_window": { "from": "2026-09-07", "to": "2026-09-13" }
  }
}

What it reaches

37 of the 63 endpoints, inside that window:

GroupReachable
Reference & coverage7 of 7
Racecards & meetings7 of 7
Races & markets7 of 7
Horses & pedigree5 of 8
Trainers3 of 7
Jockeys & owners5 of 10
Webhooks & account3 of 3

What it does not reach

Two groups need a paid plan whatever the date, because they are not a question of window:

  • Race reports — 2 endpoints
  • Courses & bias — 6 endpoints
  • Market & analysis — 6 endpoints

These are the computed statistics and the written race reports. Everything else is available to you, just not at today's date.

Limits

LimitFree keyOn exceeding it
Requests a minute 60 429 with Retry-After. Wait and carry on.
Requests a month 15,000 429 with quota_exceeded. Retrying will not help until it resets.

Both figures come back on every response, so you never have to guess:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 57
X-RateLimit-Reset: 34
X-Quota-Limit: 15000
X-Quota-Remaining: 14832

The usage endpoint returns the same figures if you would rather poll than read headers.

Checking your own window

One call answers what exists and what your key personally reaches, which makes it worth making at startup:

curl -H "X-API-Key: $KEY" "https://api.apihorseracing.com/v1/meta/coverage"

The meta block on every response carries your plan and window too, so the answer is never more than one request away.

Getting one

Sign in with Google and a key is issued immediately. No card, and nothing to cancel.

Get a free key — that page covers the three calls worth making first, and what each one tells you.