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

API reference / Racing

GET /v1/racing/results

Settled race results

Settled AU/NZ race results — finishing order with the bookmaker's own settled fixed prices, plus scratchings and their deductions. `status` is `interim` until the placings have been stable for 30 minutes, then `final`. A race that did not run is `abandoned` (Racing Australia's official notice, applied to every race of the meeting, with `status_note` carrying RA's word: abandoned, postponed, or transferred to another venue) — empty `placings`, null `runners`, filterable with `status=abandoned`. Settle only against `final`: an interim placing can still change on protest. **A `runners` entry is not necessarily a starter.** `status` says whether the runner ran: `ran`, or `scratched` / `late_scratching` / `reserve` for one that did not. Since 2026-09-08 an AU thoroughbred scratched at the barrier arrives as `status: scratched` carrying `abnormal: 'SB'`; before that it was published as `status: ran` with a null `position`, which told you the horse started when the market had refunded it. Such a row can still carry `sp` — the last price RA printed for it. That price is NOT what its `deductions` row was struck from (measured: 1/`sp` matches the published win deduction on none of the five stored priced rows), so take the deduction from `deductions` itself and never derive it. Settle on `status`, not on presence in `runners`. The thoroughbred and greyhound collectors do NOT spell a late scratching the same way; the `runners` field description says exactly how to tell them apart. **Settled prices can be null while `status` is `interim` — this is the SP timing, not a gap.** The source book publishes the finishing order before its settled dividends, so a result fetched in the minutes after the jump can carry placings whose `win_price` / `place_price` are still null. They fill in during the interim window: measured over 7 days (1,541 final results, 2026-09-01), every `final` result carried settled prices and none was missing them. If you hit null prices, you are inside that window — poll again or wait for `final`, which is already the only status you should settle against. `sp` on `runners` and on `placings` is the OFFICIAL starting price — not our consensus, and not the fixed price the bookmaker settled at. The two differ, and both are returned so you can compare them. Thoroughbred SP is Racing Australia's (its favouritism marker lands in `sp_note`), greyhound SP is our own collection's (Victorian tracks via FastTrack, every other state via the national results pages, from 2026-09-13), and harness SP is always null because no source we hold publishes it. A null `sp` means unknown — never zero. `race_id` joins a result to /v1/racing/price-history, and to /v1/racing/next-to-go while the race was still open — use it rather than matching on venue + race number + start time. **Joining ONE HORSE across meetings: use `horse_ref`, not `runner_ref`** (corrected 2026-09-21). Every thoroughbred entry in `runners` and `placings` carries `horse_ref`, `pe:<name>` — the registered name folded to letters and digits — and it is the same value on the live board, the closing-line and price-path archives, /v1/racing/horses/form and /v1/racing/horses/runs. `runner_ref` (`ra:<code>`) is Racing Australia's code for that ENTRY and changes from meeting to meeting: measured 2026-09-21, 1,450 of the 1,452 horses with two or more runs in this store carried a different code on every run, so grouping a career on it returns one row per start. `horse_ref` is derived at serve time from the name already on the row, so it is on every historical result too, and it is null on greyhound and harness rows — a greyhound's `runner_ref` (`grv:`/`grsa:`) is a per-dog registry id and already persists. `country` splits the feed: `country=AU` and `country=NZ` are the two-URL form of an AU/NZ split. NZ rows come from the bookmaker results feed, which publishes placegetters, so they carry `placings` without the full `runners` finishing order the Racing Australia collector adds to AU thoroughbred results. `dividends` carries the declared win/place dividends per placegetter per product and the exotic dividends (quinella, exacta, trifecta, first four), each as a return on a $1 stake. Exotics are declared a few minutes after the placings, so they land on a later poll than the result itself — see the field description for the full shape. `market_closed_at` and `inplay_at` are the race lifecycle, captured live and kept here permanently: when the market was first seen shut, and when the race was first seen in-play — the actual off, where `start_time` is the advertised one and moves. Both are POLL-OBSERVED (the price loop runs every 8s inside 120s of a jump), so each is the first poll at which the state was seen rather than the exact instant, and both are SET ONCE. They are copied from the live race row when the result is written. That row is deleted 10 minutes after the jump and results land a median 4.9 minutes after the start (p90 7.4), so a late result keeps null. Null never means the market stayed open. Capture began 2026-09-01, so every result before that date carries null. **Who reports market state, and what you see.** Two feeds do. PointsBet closes its book at the real jump — measured 2026-09-03 over 9 live races followed across their jump, 0.2 to 1.4 minutes AFTER the advertised start on AU/NZ cards — and that is what populates `market_closed_at` for most races. The Betfair Exchange reports state while it quotes the market, which ends about two minutes BEFORE the jump (measured 2026-09-01 on Horsham R3, advertised 05:24 UTC: betfair last seen 119s before the off), which is why results between 2026-09-01 and 2026-09-03 carry null. Exchange-sourced market state is withheld from customer plans pending a data licence, so a race whose state only the exchange saw reads null for customers; bookmaker-sourced state is served to everybody. `market_state_source` names the feed behind the values you receive. `inplay_at` stays exchange-only — bookmakers do not run racing in-play. **Coverage:** results collection began 2026-08-15, so `hours_back` cannot reach further than that no matter what you pass. Every row carries `coverage_from`, the earliest result currently retained, so an empty window is distinguishable from an unsupported one. **Field coverage, which is a different question, and `runners: null` is not its answer.** Every row now carries `field_status`, `field_source` and `field_note`. `field_status` is `complete` | `pending` | `overdue` | `unavailable` | `unsupported` | `not_applicable`: a field that is here; one the pass that NORMALLY fills this race has not reached yet, with that instant in `field_note`; one where that pass has been and gone without writing a field but the collector still re-attempts the row; one no scheduled pass still selects, its collector's own candidate window having closed; a code no collector has ever existed for; and a race that did not run. The scheduled progression is pending -> overdue -> unavailable, one direction only, and every step is bounded by a collector's real candidate query rather than by its next run — so nothing here asks you to poll forever. Read `overdue` carefully: it is NOT terminal. Most rows that reach it stay null, so do not build on a field arriving, but do not write the race off either. And any of those three can become `complete`, `unavailable` INCLUDED — nothing un-writes a `runners` array, so a hand-run collector, a widened window or a late upstream publication can still fill a row we have stopped scheduling passes for. Treat `unavailable` as 'nothing further is scheduled', never as 'this can never arrive', and re-read rather than caching it as final. The full per-state contract is on the `field_status` field itself. Measured 2026-09-10 across the retained store (5,577 results): AU greyhound carries a field on 2,360 of 3,219 races and AU thoroughbred on 315 of 1,104, while AU harness, NZ thoroughbred and NZ harness carry one on NONE of their 1,254 — those are `unsupported`, permanently. From 2026-09-29 a result in those three codes that is written while its live board still exists carries a copy of the pre-race board instead (every entry `origin: board`: driver, trainer, barrier, form, positions for placegetters only, no times, SP or margins) and reads `complete` with `field_source` null. Collection floors are the 2026-08-21 Sydney card for AU greyhound and the 2026-09-01 card for AU thoroughbred; no collector pass reaches back beyond its own floor, so a race older than one carries `unsupported` and will not fill. `runners` is JSON null in every one of these cases and has never been an empty array (0 in the whole store), so `runners is None` is the complete test. GET /v1/racing/results/coverage answers the same question per Sydney day, category and venue for 1 credit, so you can see what a day holds without paging its results. `going` and `going_rating` (2026-09-10) are `track_condition` split into the vocabulary /v1/racing/horses/form already uses — 'Good (4)' becomes `going: "Good"`, `going_rating: 4` — parsed by the one shared helper so the two surfaces cannot disagree. `track_condition` is unchanged and is still the raw string the source published.

Requires X-API-Key 2 credits

Request

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

Parameters

NameIn TypeRequired Description
hours_back query integer no How far back to look, in hours (max 7 days)
date query string no Single-day alias: date=YYYY-MM-DD returns that meeting date (AET) instead of a rolling hours_back window. Mutually exclusive with hours_back. Also accepted by /v1/racing/closing-lines and /v1/racing/acceptances. NOT by /v1/racing/events, which is forward-looking and takes hours_ahead — this line claimed it did until 2026-09-22, and that false claim cost a racing-analytics subscriber a 422 and a fallback to hours_ahead=24. The same wrong sentence was corrected in archive.py on 2026-08-25 and missed here; if you edit one, grep for the other.
categories query string no horse,greyhound,harness or omit for all
category query string no Alias of `categories`. Both spellings are accepted on every racing endpoint since 2026-09-24; before that, using one family's spelling on the other was a hard 422. An unknown value is a free 422 naming the valid ones.
venue query string no Case-insensitive venue match, e.g. 'Rosehill'
country query string no ISO country codes, comma-separated, case-insensitive (e.g. AU or AU,NZ). Matched against the result's `country`. A result whose country was never resolved (null) is excluded by any value here, so omit the filter if you need those rows.
status query string no Filter to 'final', 'interim' or 'abandoned'
limit query integer no
offset query integer no

Responses

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

Example response

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

[
  {
    "race_id": "104702cc-8a42-4b14-88b0-1fb6de91e913",
    "coverage_from": "2026-08-15T05:53:00Z",
    "venue": "Kalgoorlie",
    "venue_id": "kalgoorlie",
    "venue_canonical": "Kalgoorlie",
    "venue_site": "kalgoorlie",
    "race_number": 8,
    "category": "horse",
    "country": "AU",
    "start_time": "2026-09-06T09:00:00Z",
    "race_name": "COOLGARDIE DAY CELEBRATIONS HANDICAP",
    "distance_m": 1200,
    "track_condition": "Good (4)",
    "going": "Good",
    "going_rating": 4,
    "weather": "Light Rain",
    "status": "final",
    "status_note": null,
    "field_status": "complete",
    "field_source": "racing_australia",
    "field_note": null,
    "placings": [
      {
        "name": "Vomo Island",
        "number": 8,
        "position": 1,
        "win_price": 4.6,
        "place_price": 1.9,
        "sp": 4.6,
        "sp_note": null,
        "horse_ref": "pe:vomoisland"
      },
      {
        "name": "Dublin Red",
        "number": 15,
        "position": 2,
        "win_price": 126.0,
        "place_price": 17.0,
        "sp": 101.0,
        "sp_note": null,
        "horse_ref": "pe:dublinred"
      },
      {
        "name": "Lavish Charm",
        "number": 1,
        "position": 3,
        "win_price": 7.5,
        "place_price": 2.5,
        "sp": 8.5,
        "sp_note": null,
        "horse_ref": "pe:lavishcharm"
      }
    ],
    "runners": [
      {
        "name": "Vomo Island",
        "number": 8,
        "box": 3,
        "position": 1,
        "status": "ran",
        "dead_heat": false,
        "jockey": "Austin Galati",
        "trainer": "John Lugg",
        "sp": 4.6,
        "sp_note": null,
        "margin": null,
        "time_s": null,
        "abnormal": null,
        "runner_ref": "ra:NzkyMzc2NTE1MA",
        "horse_ref": "pe:vomoisland"
      },
      {
        "name": "Dublin Red",
        "number": 15,
        "box": 5,
        "position": 2,
        "status": "ran",
        "dead_heat": false,
        "jockey": "Alex Hearn",
        "trainer": "Paul Tapper",
        "sp": 101.0,
        "sp_note": null,
        "margin": "2.75L",
        "time_s": null,
        "abnormal": null,
        "runner_ref": "ra:NzkyNjU3OTg0Ng",
        "horse_ref": "pe:dublinred"
      },
      {
        "name": "Lavish Charm",
        "number": 1,
        "box": 4,
        "position": 3,
        "status": "ran",
        "dead_heat": false,
        "jockey": "Jason Li",
        "trainer": "Peter Fernie",
        "sp": 8.5,
        "sp_note": null,
        "margin": "3.27L",
        "time_s": null,
        "abnormal": null,
        "runner_ref": "ra:Nzk1MjAxMDcxNA",
        "horse_ref": "pe:lavishcharm"
      }
    ],
    "deductions": [
      {
        "name": "Bonny Rock",
        "number": 10,
        "win": 0.0,
        "place": 0.0,
        "scratched_at": "2026-09-06T08:39:45Z"
      }
    ],
    "dividends": {
      "straight": [
        {
          "name": "Vomo Island",
          "number": 8,
          "position": 1,
          "market": "WIN",
          "product": "FIXED",
          "amount": 4.6
        },
        {
          "name": "Vomo Island",
          "number": 8,
          "position": 1,
          "market": "WIN",
          "product": "MIDDIV",
          "amount": 5.5
        },
        {
          "name": "Vomo Island",
          "number": 8,
          "position": 1,
          "market": "PLC",
          "product": "FIXED",
          "amount": 1.9
        },
        {
          "name": "Dublin Red",
          "number": 15,
          "position": 2,
          "market": "PLC",
          "product": "FIXED",
          "amount": 17.0
        },
        {
          "name": "Lavish Charm",
          "number": 1,
          "position": 3,
          "market": "PLC",
          "product": "FIXED",
          "amount": 2.5
        }
      ],
      "exotics": [
        {
          "code": "QN",
          "type": "Quinella",
          "product": "VIC",
          "selection": "8,15",
          "amount": 444.4
        },
        {
          "code": "EX",
          "type": "Exacta",
          "product": "VIC",
          "selection": "8,15",
          "amount": 478.1
        },
        {
          "code": "TF",
          "type": "Trifecta",
          "product": "VIC",
          "selection": "8,15,1",
          "amount": 4868.5
        },
        {
          "code": "FF",
          "type": "First Four",
          "product": "VIC",
          "selection": "8,15,1,13",
          "amount": 58687.9
        }
      ],
      "straight_types": [
        "FIXED",
        "RD+",
        "BT+SP",
        "MIDDIV"
      ]
    },
    "resulted_at": "2026-09-06T09:05:44Z",
    "market_closed_at": "2026-09-06T09:02:18Z",
    "inplay_at": null,
    "market_state_source": "pointsbetau"
  },
  {
    "race_id": "c56efd85-cbee-4743-87b2-94245b6446be",
    "coverage_from": "2026-08-15T05:53:00Z",
    "venue": "Rosehill",
    "venue_id": "rosehill",
    "venue_canonical": "Rosehill",
    "venue_site": "rosehill",
    "race_number": 10,
    "category": "horse",
    "country": "AU",
    "start_time": "2026-09-26T07:25:00Z",
    "race_name": "Tab Handicap",
    "distance_m": 1100,
    "track_condition": "Good (4)",
    "going": "Good",
    "going_rating": 4,
    "weather": null,
    "status": "final",
    "status_note": null,
    "field_status": "complete",
    "field_source": "racing_australia",
    "field_note": null,
    "placings": [
      {
        "name": "Annie's Rose",
        "number": 11,
        "position": 1,
        "win_price": 6.5,
        "place_price": 2.2,
        "sp": 6.5,
        "sp_note": null,
        "horse_ref": "pe:anniesrose"
      },
      {
        "name": "Lulumon",
        "number": 6,
        "position": 2,
        "win_price": 21.0,
        "place_price": 5.0,
        "sp": 21.0,
        "sp_note": null,
        "horse_ref": "pe:lulumon"
      },
      {
        "name": "Mercy Me",
        "number": 15,
        "position": 3,
        "win_price": 3.5,
        "place_price": 1.5,
        "sp": 3.5,
        "sp_note": "F",
        "horse_ref": "pe:mercyme"
      }
    ],
    "runners": [
      {
        "name": "Annie's Rose",
        "number": 11,
        "box": 3,
        "position": 1,
        "status": "ran",
        "dead_heat": false,
        "jockey": "Reece Jones",
        "trainer": "Kristen Buchanan",
        "sp": 6.5,
        "sp_note": null,
        "margin": null,
        "time_s": null,
        "abnormal": null,
        "runner_ref": "ra:MzcwOTA0ODk4Nzg",
        "horse_ref": "pe:anniesrose"
      },
      {
        "name": "Lulumon",
        "number": 6,
        "box": 4,
        "position": 2,
        "status": "ran",
        "dead_heat": false,
        "jockey": "Ms Siena Grima",
        "trainer": "Jason Coyle",
        "sp": 21.0,
        "sp_note": null,
        "margin": "0.75L",
        "time_s": null,
        "abnormal": null,
        "runner_ref": "ra:MzcxMTY2MTk0NjI",
        "horse_ref": "pe:lulumon"
      },
      {
        "name": "Mercy Me",
        "number": 15,
        "box": 5,
        "position": 3,
        "status": "ran",
        "dead_heat": false,
        "jockey": "Regan Bayliss",
        "trainer": "Nathan Doyle",
        "sp": 3.5,
        "sp_note": "F",
        "margin": "0.85L",
        "time_s": null,
        "abnormal": null,
        "runner_ref": "ra:MzczNzU2NDIyNTI",
        "horse_ref": "pe:mercyme"
      }
    ],
    "deductions": [
      {
        "name": "Cantiamo",
        "number": 5,
        "win": 0.05,
        "place": 0.06,
        "scratched_at": "2026-09-25T21:03:05.507Z"
      },
      {
        "name": "Banjora",
        "number": 9,
        "win": 0.15,
        "place": 0.12,
        "scratched_at": "2026-09-24T08:17:40.433Z"
      }
    ],
    "dividends": {
      "straight": [
        {
          "name": "Annie's Rose",
          "number": 11,
          "position": 1,
          "market": "WIN",
          "product": "FIXED",
          "amount": 6.5
        },
        {
          "name": "Annie's Rose",
          "number": 11,
          "position": 1,
          "market": "PLC",
          "product": "FIXED",
          "amount": 2.2
        },
        {
          "name": "Lulumon",
          "number": 6,
          "position": 2,
          "market": "PLC",
          "product": "FIXED",
          "amount": 5.0
        },
        {
          "name": "Mercy Me",
          "number": 15,
          "position": 3,
          "market": "PLC",
          "product": "FIXED",
          "amount": 1.5
        }
      ],
      "exotics": [
        {
          "code": "QN",
          "type": "Quinella",
          "product": "VIC",
          "selection": "11,6",
          "amount": 77.95
        },
        {
          "code": "EX",
          "type": "Exacta",
          "product": "VIC",
          "selection": "11,6",
          "amount": 108.3
        },
        {
          "code": "TF",
          "type": "Trifecta",
          "product": "VIC",
          "selection": "11,6,15",
          "amount": 432.2
        },
        {
          "code": "FF",
          "type": "First Four",
          "product": "VIC",
          "selection": "11,6,15,17",
          "amount": 6979.0
        }
      ],
      "multi_race": [
        {
          "code": "RC-GIANT6",
          "type": "Giant 6",
          "product": "VIC",
          "selection": "6,1,1,4,2,11",
          "amount": 544.4,
          "legs": [
            5,
            6,
            7,
            8,
            9,
            10
          ]
        },
        {
          "code": "RC-GIANT6",
          "type": "Giant 6",
          "product": "VIC",
          "selection": "6,1,1,4,2",
          "amount": 1.0,
          "legs": [
            5,
            6,
            7,
            8,
            9,
            10
          ]
        },
        {
          "code": "RC-QUADDIE",
          "type": "Quaddie",
          "product": "VIC",
          "selection": "1,4,2,11",
          "amount": 128.4,
          "legs": [
            7,
            8,
            9,
            10
          ]
        },
        {
          "code": "RC-QUADDIE",
          "type": "Quaddie",
          "product": "BT",
          "selection": "1,4,2,11",
          "amount": 128.4,
          "legs": [
            7,
            8,
            9,
            10
          ]
        }
      ],
      "straight_types": [
        "FIXED",
        "RD+",
        "BT+SP",
        "MIDDIV"
      ]
    },
    "resulted_at": "2026-09-26T07:31:54Z",
    "market_closed_at": "2026-09-26T07:27:07Z",
    "inplay_at": null,
    "market_state_source": "pointsbetau"
  },
  {
    "race_id": "3d9080b9-5974-4db0-a5d0-d3a40949b7eb",
    "coverage_from": "2026-08-15T05:53:00Z",
    "venue": "Terang",
    "venue_id": "terang",
    "venue_canonical": "Terang",
    "venue_site": "terang",
    "race_number": 4,
    "category": "harness",
    "country": "AU",
    "start_time": "2026-09-28T09:55:00Z",
    "race_name": "Reid Stockfeeds Vicbred Voucher 2yo & 3yo 0-2 Ltw ...",
    "distance_m": 2180,
    "track_condition": "Good",
    "going": "Good",
    "going_rating": null,
    "weather": "Broken Clouds",
    "status": "final",
    "status_note": null,
    "field_status": "complete",
    "field_source": null,
    "field_note": null,
    "placings": [
      {
        "name": "Jilliby Sniper",
        "number": 8,
        "position": 1,
        "win_price": 1.65,
        "place_price": 1.06,
        "horse_ref": null
      },
      {
        "name": "Heavenly Gem",
        "number": 2,
        "position": 2,
        "win_price": 3.2,
        "place_price": 1.2,
        "horse_ref": null
      },
      {
        "name": "Hoso Magic",
        "number": 1,
        "position": 3,
        "win_price": 21.0,
        "place_price": 2.9,
        "horse_ref": null
      },
      {
        "name": "Jilliby Eclipse",
        "number": 5,
        "position": 4,
        "win_price": 5.25,
        "place_price": 1.45,
        "horse_ref": null
      }
    ],
    "runners": [
      {
        "number": 1,
        "box": null,
        "name": "Hoso Magic",
        "position": 3,
        "status": "ran",
        "abnormal": null,
        "margin": null,
        "time_s": null,
        "dead_heat": false,
        "sp": null,
        "sp_note": null,
        "jockey": "Lochie Cook",
        "trainer": "Geoff Webster",
        "weight_kg": null,
        "form": "7685",
        "runner_ref": null,
        "origin": "board",
        "horse_ref": null
      },
      {
        "number": 2,
        "box": null,
        "name": "Heavenly Gem",
        "position": 2,
        "status": "ran",
        "abnormal": null,
        "margin": null,
        "time_s": null,
        "dead_heat": false,
        "sp": null,
        "sp_note": null,
        "jockey": "John Justice",
        "trainer": "Robert Mccartney",
        "weight_kg": null,
        "form": "423",
        "runner_ref": null,
        "origin": "board",
        "horse_ref": null
      },
      {
        "number": 3,
        "box": null,
        "name": "Cooper Chubb",
        "position": null,
        "status": "ran",
        "abnormal": null,
        "margin": null,
        "time_s": null,
        "dead_heat": false,
        "sp": null,
        "sp_note": null,
        "jockey": "Jason Ainsworth",
        "trainer": "Peter Manning",
        "weight_kg": null,
        "form": "87598",
        "runner_ref": null,
        "origin": "board",
        "horse_ref": null
      },
      {
        "number": 4,
        "box": null,
        "name": "Keayang Maricruz",
        "position": null,
        "status": "scratched",
        "abnormal": null,
        "margin": null,
        "time_s": null,
        "dead_heat": false,
        "sp": null,
        "sp_note": null,
        "jockey": null,
        "trainer": null,
        "weight_kg": null,
        "form": null,
        "runner_ref": null,
        "origin": "board",
        "horse_ref": null
      },
      {
        "number": 5,
        "box": null,
        "name": "Jilliby Eclipse",
        "position": 4,
        "status": "ran",
        "abnormal": null,
        "margin": null,
        "time_s": null,
        "dead_heat": false,
        "sp": null,
        "sp_note": null,
        "jockey": "Glen Craven",
        "trainer": "M A Lee, P D Lee",
        "weight_kg": null,
        "form": "5x81",
        "runner_ref": null,
        "origin": "board",
        "horse_ref": null
      },
      {
        "number": 6,
        "box": null,
        "name": "Miss Adelia",
        "position": null,
        "status": "ran",
        "abnormal": null,
        "margin": null,
        "time_s": null,
        "dead_heat": false,
        "sp": null,
        "sp_note": null,
        "jockey": "Michael Bellman",
        "trainer": "Donna Bourke",
        "weight_kg": null,
        "form": "21",
        "runner_ref": null,
        "origin": "board",
        "horse_ref": null
      },
      {
        "number": 7,
        "box": null,
        "name": "Lucky Vincent",
        "position": null,
        "status": "ran",
        "abnormal": null,
        "margin": null,
        "time_s": null,
        "dead_heat": false,
        "sp": null,
        "sp_note": null,
        "jockey": "Jackie Barker",
        "trainer": "Jim Barker",
        "weight_kg": null,
        "form": "15967",
        "runner_ref": null,
        "origin": "board",
        "horse_ref": null
      },
      {
        "number": 8,
        "box": null,
        "name": "Jilliby Sniper",
        "position": 1,
        "status": "ran",
        "abnormal": null,
        "margin": null,
        "time_s": null,
        "dead_heat": false,
        "sp": null,
        "sp_note": null,
        "jockey": "Jason Lee",
        "trainer": "M A Lee, P D Lee",
        "weight_kg": null,
        "form": "4x166",
        "runner_ref": null,
        "origin": "board",
        "horse_ref": null
      }
    ],
    "deductions": [
      {
        "win": 0.0,
        "name": "Keayang Maricruz",
        "place": 0.0,
        "number": 4,
        "scratched_at": "2026-09-27T22:45:02.847Z"
      }
    ],
    "dividends": {
      "exotics": [
        {
          "code": "QN",
          "type": "Quinella",
          "amount": 2.6,
          "product": "VIC",
          "selection": "8,2"
        },
        {
          "code": "EX",
          "type": "Exacta",
          "amount": 3.3,
          "product": "VIC",
          "selection": "8,2"
        },
        {
          "code": "TF",
          "type": "Trifecta",
          "amount": 11.5,
          "product": "VIC",
          "selection": "8,2,1"
        },
        {
          "code": "FF",
          "type": "First Four",
          "amount": 24.5,
          "product": "VIC",
          "selection": "8,2,1,5"
        }
      ],
      "straight": [
        {
          "name": "Jilliby Sniper",
          "amount": 1.65,
          "market": "WIN",
          "number": 8,
          "product": "FIXED",
          "position": 1
        },
        {
          "name": "Jilliby Sniper",
          "amount": 1.4,
          "market": "WIN",
          "number": 8,
          "product": "MIDDIV",
          "position": 1
        },
        {
          "name": "Jilliby Sniper",
          "amount": 1.06,
          "market": "PLC",
          "number": 8,
          "product": "FIXED",
          "position": 1
        }
      ],
      "straight_types": [
        "FIXED",
        "MIDDIV"
      ],
      "multi_race": [
        {
          "code": "RC-EQUAD",
          "type": "Early Quaddie",
          "product": "VIC",
          "selection": "8,5,4,8",
          "amount": 102.6,
          "legs": [
            1,
            2,
            3,
            4
          ]
        }
      ]
    },
    "resulted_at": "2026-09-28T10:01:49Z",
    "market_closed_at": "2026-09-28T09:57:14Z",
    "inplay_at": null,
    "market_state_source": "pointsbetau"
  }
]

Guides that use this endpoint

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.