Racing

Trainer premiership leaderboards and lookup

Cost: 2 credits. Trainer premiership leaderboards — 1st-5th finishes, prize money, strike rate and starts — from Racing Australia's own published tables.

WHAT A LEADERBOARD IS. RA publishes each premiership as a TOP-20 table, one per
state and scope, and that is exactly what is held: the national table (`state=AUS`)
and the eight state tables, each split all/metro/provincial/country/picnic, for the
running season and the previous one (RA seasons run 1 Aug - 31 Jul). There is no
page two at the source, so a trainer outside every top-20 has no row here — an empty
`rows` for a name means "outside the published top 20", never "inactive". For
per-horse trainer identity on individual runs, /v1/racing/horses/form carries it
with a stable code on every run.

LOOKUP SHAPES. With no `name`, the response is one table: `state` (default AUS) x
`scope` (default all) for the chosen `season`. With `name`, the search widens to
every state and scope for that season by default — a rider prominent only in one
state's country scope is found without knowing which — and `state`/`scope`, if
given, narrow it back. Name matching is case-insensitive on the whole name or any
part of it.

JOINS. `ra_code` is the code inside RA's own engagement links, stored with padding
stripped — the same identity namespace as `jockey_code` on horse-form runs and
`trainer_code` on acceptance rows, so premiership standing joins to per-run data on
code, not name spelling.

HOW FRESH ANY GIVEN TABLE IS. There are 180 of these tables and Racing Australia
will not serve them all in one sitting, so they are refreshed in paced passes
overnight Australian time: the national tables (`state=AUS`) daily, and the state
tables on a rolling refresh that takes a few nights to come round. Nothing is
guessed or interpolated in between — a table is exactly as RA last published it.
Read the age off the response rather than assuming it: `period_to` on the running
season is the day RA rendered that table, so it dates every row, and
`source.scraped_at` gives the newest scrape among the rows returned. A state table
added to the store for the first time simply appears; until then its `rows` are
empty, the same shape as a name that is outside every top 20.

`season=previous` serves the completed season, useful as the longer baseline of the
two. It changes only on a late protest, so it is refreshed about weekly.

Cached 1 hour.
get/v1/racing/trainers/stats

Request

  • Base URL: https://api.puntersedge.online
  • URL: https://api.puntersedge.online/v1/racing/trainers/stats
  • Auth: API key in header X-API-Key

Query parameters

namestring nullable

Find one trainer by (partial) name across every state and scope.

statestring nullable

AUS (national) or a state. Default AUS, unless name widens the search.

scopestring nullable

all, metro, provincial, country, picnic. Default all, unless name widens the search.

seasonstring

current or previous RA season (1 Aug - 31 Jul).

Headers

X-API-Keystring
X-RapidAPI-Proxy-Secretstring

Response

Successful Response

rolestring required
season_start_yearinteger nullable
statestring nullable

Echo of the filter; null when a name search crossed all states.

scopestring nullable
namestring nullable

Example response

{
  "role": "trainer",
  "rows": [
    {
      "fifths": 14,
      "firsts": 17,
      "fourths": 22,
      "name": "Chris Waller",
      "period_from": "2026-08-01",
      "period_to": "2026-09-02",
      "prize_money": 2437350,
      "ra_code": "Njg0MjM2MA",
      "rank": 1,
      "scope": "all",
      "seconds": 23.5,
      "starts": 147,
      "state": "NSW",
      "strike_rate": 11.6,
      "thirds": 20
    }
  ],
  "scope": "all",
  "season_start_year": 2026,
  "source": {
    "feed": "racing-australia-premierships",
    "region": "AU",
    "scraped_at": "2026-09-02T07:10:00+00:00",
    "sport": "thoroughbred",
    "top_n": 20
  },
  "state": "NSW"
}

Changes

No recorded changes to this operation across all 1 revision of this API.