Skip to content
Developer docsREST · JSON and PNG · /v1

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

Use 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. 1

    Create an account

    Sign up and verify your email address.

  2. 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. 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. 4

    Request today's UK and Irish racecards

    Use region=uk for the combined UK and Ireland feed. The base URL for this environment is https://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 requests package; PHP examples require the cURL extension.

  5. 5

    Read the envelope

    Successful racing JSON responses have meta and data; errors instead have error, code and requestId. This abridged example shows a no-date racecard request: no explicit date means meta.date is 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. 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 same date or tomorrow=true you used for the racecard.

Next: browse the API reference or make real calls in the signed-in playground.