Racing steamers and drifters
Cost: 3 credits. Runners whose price has moved materially since the market opened, across upcoming races.
move_pct is negative for a firming runner (the price shortened — money has arrived) and positive for a drifter.
open_price is the FIRST PRICE CAPTURED inside the 60-minute pre-race window, not a market open. Capture begins when the race enters that window, so how close that first price is to a true 60-minute open depends on the book — and it is not a clean two-way split. Measured over 13 days of snapshots, the share of series whose first capture sits at the 60-minute mark falls into three groups. sportsbet, betright and betr_au are there on 96-98% of series. tab, ladbrokes_au and neds are there on about 55%, but that figure swings between 16% and 77% from one day to the next, so for these three it is not a property you can rely on per book. playup (6%), unibet and pointsbetau (3%), tabtouch (1%) and palmerbet (0%) rarely or never are: palmerbet has not once been captured earlier than 33 minutes out across 23,641 series.
Do not infer any of this from the book. Read open_secs_to_jump on each bookmaker row, which says how far out that book's open actually was; /v1/racing/price-history additionally returns open_is_baseline per series.
A move is reported at the RUNNER level and only when at least min_books bookmakers have two or more captured prices, because a book seen only once has evidenced nothing: its open equals its current by construction. Those books are still listed, with points: 1 and counted_in_consensus: false, and still counted in books_quoting — but they do not enter the consensus or the gate. Use books_with_history as the confirmation count.
Broad-market support versus one book moving: read the breadth counters. books_firming, books_drifting and books_unchanged partition books_quoting, so they say how many books actually agreed with the headline move. A steam the market backs shows most of books_with_history moving the same way; a single-book move shows one, with the rest unchanged, and can still clear min_move_pct because the consensus averages over the few books that carry history. Measured live on 2026-09-01, Geelong R4 greyhound "Got Immunity" reported +102.8% drifting on 13 books quoting, of which 5 had history: 3 drifting, 1 firming, 9 unchanged - the headline number came from a minority. Gate on the counters, and on bookmakers[].move_pct where you need the per-book evidence, rather than on move_pct alone. Raising min_books raises how many books must carry history, not how many must agree.
Request
- Base URL: https://api.puntersedge.online
- URL: https://api.puntersedge.online/v1/racing/movers
- Auth: API key in header X-API-Key
Query parameters
firming, drifting, or omit for both
Minimum consensus move, percent
Only report a move confirmed by at least this many books
horse,greyhound,harness or omit for all
Alias of categories. Both spellings are accepted on every racing endpoint. An unknown value is a free 422 naming the valid ones.
ISO country codes, comma-separated (e.g. AU). Omit for every country. Pair with include_unresolved=true or you will silently lose races whose meeting is not confirmed yet.
Include races whose country is not resolved yet (country is null). OFF by default. Most of an Australian card is unresolved until the meeting is confirmed — measured 3 labelled AU against 21 unresolved in a live window — so country=AU alone can return far fewer races than are running, or none at all.
Headers
Response
Successful Response
Example response
[
{
"bookmakers": [
{
"counted_in_consensus": true,
"current_price": 9,
"key": "betright",
"move_pct": -18.18,
"open_price": 11,
"open_secs_to_jump": 3597,
"points": 4
}
],
"books_drifting": 0,
"books_firming": 9,
"books_quoting": 10,
"books_unchanged": 1,
"books_with_history": 9,
"category": "horse",
"country": "AU",
"current_price": 9.17,
"direction": "firming",
"mins_to_jump": 3,
"move_pct": -18.3,
"number": 10,
"open_price": 11.22,
"race_number": 8,
"runner": "Magnaburma",
"start_time": "2026-08-15T08:52:00Z",
"venue": "Broome"
}
]Changes
No recorded changes to this operation across all 1 revision of this API.