18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware

API reference / Racing

GET /v1/racing/greyhounds/field

Every dog in one greyhound race with its recent runs, from our own results

Every dog in one greyhound race with its recent runs from our own results, in one call: the field's form, not one dog's. Australian races and, from 12 October 2026, British and Irish ones. **Naming the race.** `race_id` from /v1/racing/next-to-go, /events or /results is exact. Failing that, `venue` + `meeting_date` + `race_number`: the AET meeting date for an Australian race, the London date for a British or Irish one, the track matched by words there ("Towcester" finds "Betway Towcester"). Only greyhound races are matched, so a track that races dogs and trots on the same day is not ambiguous (from 13 October 2026); two greyhound races sharing those three answer 409 `race_ambiguous` and cost nothing. **The field.** While the race is open the runners come from the live card (`card_source: live`): rug number, trap, trainer and the card's form figures as the books publish them -- PointsBet on every card, William Hill on the British and Irish ones -- with a dog the card has since scratched kept in the field and marked `scratched: true`. Once the race has been run and the live card purged, the field is the settled result's (`card_source: results`). **The runs.** Under each dog, its newest `runs` runs (default 10, at most 20) and a starts, wins and places summary over every run held, ONLY RUNS BEFORE THIS RACE'S START (`form_as_at`), so a race already run answers with what was knowable at the jump and never with its own result. On an Australian race the runs are the same store /v1/racing/greyhounds/form reads -- our own collected results and the history behind them, with times, splits, weight, PIR and grade where the source printed them. On a British or Irish race they are our own GB/IE results from PointsBet's settled race card since 12 October 2026: the paid places carry a `position` (three on a six-dog field), every other starter reads `ran` with `position` null -- not placed, which covers a dog that did not finish, and `source.note` says so on every British or Irish answer -- and there are no times, splits or grades; `source.region` reads `GB-IE` and `source.coverage_from` is that floor, so most dogs hold few or no runs yet -- British dogs race about weekly, and the record grows with every meeting we settle. `runs_total` counts STARTS (`status: ran`), the same figure as `stats.starts`, and `held_rows_total` every held row, scratchings and unused reserves included, which is what `runs` is drawn from; before 2026-10-13 `runs_total` counted every row. **Identity.** Dogs are grouped on `name_key`, the name's letters and digits, the same fold the one-dog routes use; pass it as `dog` there for the full record. A race we cannot find is a free 404, a race we hold no field for a free 404, an unknown query parameter a free 422. Greyhounds only; thoroughbreds have /v1/racing/form. Cached 10 minutes; the Australian store refreshes hourly, the British and Irish runs are read live.

Requires X-API-Key 3 credits

Request

curl 'https://api.puntersedge.online/v1/racing/greyhounds/field' \
  -H 'X-API-Key: YOUR_KEY'

Parameters

NameIn TypeRequired Description
race_id query string no The race_id from /v1/racing/next-to-go, /events or /results. The primary form; use venue + meeting_date + race_number only when you do not hold it.
venue query string no Track name as the feeds spell it (case-insensitive; a British or Irish track is matched by words). Needs meeting_date and race_number.
meeting_date query string no Meeting date, YYYY-MM-DD: the AET date for an Australian race, the London date for a British or Irish one.
race_number query string no
runs query integer no Most recent runs to return per dog. The stats cover every held run regardless.

Responses

Status codes: 200, 401, 402, 404, 409, 422, 429, 500. Response bodies are JSON; the full schema is in /openapi.json.

Example response

200 application/json — this call costs 3 credits. Field names and types are as the API returns them; values are a real sample, trimmed to a few items.

{
  "card_source": "live",
  "distance_m": 516,
  "form_as_at": "2026-09-19T07:22:00Z",
  "meeting_date": "2026-09-19",
  "race_id": "9b4e2b2e-1d7a-4b6a-9f1c-0f3c2a6e7d10",
  "race_name": "Dubbo Grade 5",
  "race_number": 2,
  "race_status": "open",
  "runners": [
    {
      "box": 2,
      "form": "1",
      "held_rows_total": 1,
      "name": "Tommy Blue",
      "name_key": "tommyblue",
      "number": 2,
      "runs": [
        {
          "box": 2,
          "date": "2026-09-19",
          "dead_heat": false,
          "distance_m": 516,
          "field_size": 5,
          "first_split_s": 6.71,
          "grade": "M",
          "number": 2,
          "origin": "results",
          "position": 1,
          "race_name": "Dubbo Maiden",
          "race_number": 1,
          "result_id": "res_9f1c…",
          "runner_ref": "grsa:441535",
          "second_split_s": 18.02,
          "source": "grsa",
          "sp": 1.33,
          "start_time": "2026-09-19T07:02:00Z",
          "status": "ran",
          "time_s": 30.14,
          "trainer": "Raymond Tyquin",
          "venue": "Dubbo",
          "weight_kg": 29.8,
          "win_time_s": 30.14
        }
      ],
      "runs_total": 1,
      "scratched": false,
      "stats": {
        "place_pct": 100.0,
        "places": 1,
        "starts": 1,
        "win_pct": 100.0,
        "wins": 1
      },
      "trainer": "Raymond Tyquin"
    }
  ],
  "runners_total": 1,
  "runners_with_runs": 1,
  "runs_per_runner": 10,
  "source": {
    "collectors": [
      "fasttrack",
      "grsa"
    ],
    "coverage_from": "2026-06-23",
    "coverage_to": "2026-09-20",
    "feed": "puntersedge",
    "refreshed_hourly": true,
    "region": "AU",
    "results_from": "2026-09-13",
    "sport": "greyhound"
  },
  "start_time": "2026-09-19T07:22:00Z",
  "venue": "Dubbo"
}

Related endpoints

Try it against live data

The free tier needs no credit card, and the sandbox endpoints need no key at all.

Get a free API key Quickstart
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.