Quickstart
Your first racecard in six steps.
Weather forecasts are also included on every plan. After your first racecard, use its course.id in /v1/racecourses/{id}/weather?region=uk. See the weather guide for units, race-time matching and required attribution.
Your production gateway
https://racingapi.net in production, with racing endpoints under /v1. API access activates automatically after your trial or subscription is confirmed. Signing up alone does not start a trial. For this environment, use the base URL shown in step four.- 1
Create an account
Sign up and verify your email address.
- 2
Generate an API key
In Dashboard, API keys, create a key and copy the secret. It is shown once. Export it on your server:
export RACINGAPI_KEY=... - 3
Activate your trial or subscription
Choose a monthly plan in Subscriptions and complete checkout with a card. Eligible new customers receive seven days free. Access starts after server confirmation, not signup alone. Your chosen plan renews automatically unless cancelled before the trial ends. Without active access, feed requests return 403.
- 4
Request today's UK and Irish racecards
Use
region=ukfor the combined UK and Ireland feed. The base URL for this environment ishttps://racingapi.net.curl --fail-with-body "https://racingapi.net/v1/racecards?region=uk" \ -H "Authorization: Bearer $RACINGAPI_KEY"Run JavaScript on your server (Node.js 18+). Python examples require the
requestspackage; PHP examples require the cURL extension. - 5
Read the envelope
Successful racing JSON responses have
metaanddata; errors instead haveerror,codeandrequestId. This abridged example shows a no-date racecard request: no explicit date meansmeta.dateis null. Names and IDs are illustrative, not live.{ "meta": { "version": "v1", "region": "uk", "date": null, "retrievedAt": "2026-10-27T09:12:04Z", "cached": false, "demo": false, "page": 1, "limit": 50, "total": 1 }, "data": [ { "id": "RACE_ID", "name": "Example Handicap", "date": "27.10.2026", "time": "13:30", "course": { "id": "COURSE_ID", "name": "Example Course" }, "runners": [ { "id": "HORSE_ID", "name": "Example Runner", "jockey": { "id": "JOCKEY_ID", "name": "Example Jockey" }, "trainer": { "id": "TRAINER_ID", "name": "Example Trainer" }, "odds": [] } ], "finishers": [], "wagers": [] } ] }Other race and runner fields are omitted for brevity. Use the API reference for the complete response schema; an empty daily feed returns
data: []. - 6
Follow IDs to detail endpoints
Use a race ID from the same region and date to call
/v1/races/{id}, runner horse IDs for/v1/horses/{id}, or both for/v1/silks/{horseId}?raceId=.... Pass the samedateortomorrow=trueyou used for the racecard.
Next: browse the API reference or make real calls in the signed-in playground.