Data format
Every publication, snapshot or delta, is a JSON object of the same shape:
| Field | Type | Meaning |
|---|---|---|
type |
"snapshot" | "delta" |
Which channel kind this came from |
events |
Race[] |
Races. A snapshot holds all of them; a delta holds exactly one |
ts |
number | Upstream build time of the frame, seconds since epoch |
sent_ts |
number | Deltas only: when this message was published. now - sent_ts = delivery latency |
ready |
object | Snapshot only: per-book readiness map, used internally; safe to ignore |
A real race from a live snapshot, trimmed to four books and one runner (a real one has 50+ books and every runner):
{ "type": "race", "key": "lismore|R|6|2026-11-09", "sport": "racing", "event": { "venue": "Lismore", "number": 6, "type": "R", "day": "2026-11-09", "start": "2026-11-09T06:15:00Z", "name": "WESTPAC RESCUE HELICOPTER SERVICE BENCHMARK 66 HANDICAP", "rclass": "BM66", "country": "AUS" }, "books": [ "tab", "ladbrokes", "betfair", "surge" ], "book_event_ids": { "tab": "2026-11-09|R|LSM|6", "ladbrokes": "745d6332-332c-4245-81fb-38fbe90f60b4", "betfair": "1.265206788" }, "source_rx_ts": { "tab": 1794180946.649499, "ladbrokes": 1794180946.837214, "betfair": 1794180947.263693 }, "selections": [ { "key": 2, "number": 2, "name": "BARELLO", "status": "ACTIVE", "book_runner_id": "164432", "bookie_ids": { "tab": "164432", "ladbrokes": "87739f4c-022a-43f0-90e4-242f367f6109", "betfair": "58569545" }, "odds": { "tab": { "win": 4.4, "place": 2.3, "place_open": true, "place_count": 2, "place_count_src": "book", "exp_count": 2, "allow_place": true, "allow_fo_place": true, "silk_url": "https://api.beta.tab.com.au/v1/tab-info-service/racing/silk/ORANGE%2C%20BLACK%20MALTESE%20CROSS%2C%20BLACK%20CAP" }, "ladbrokes": { "win": 4.2, "place": 2.2, "place_count_src": "unknown", "place_ladder": { "4": 1.25, "5": 1.08 }, "tote": { "win": { "18ba60da-abd2-463c-a34a-dc6368377ac8": 4.7 }, "place": { "18ba60da-abd2-463c-a34a-dc6368377ac8": 1.7 } } }, "betfair": { "back": 4.3, "lay": 8.8, "back_ladder": [ [ 0, 4.3, 4.54 ], [ 1, 4.2, 13.24 ], [ 2, 4.1, 59.12 ] ], "lay_ladder": [ [ 0, 8.8, 3.31 ], [ 1, 9, 34.02 ], [ 2, 10, 24.88 ] ], "traded": [], "back_ladder_disp": [ [ 0, 4.3, 4.54 ], [ 1, 4.2, 13.24 ], [ 2, 4.1, 59.12 ] ], "lay_ladder_disp": [ [ 0, 8.8, 3.31 ], [ 1, 9, 34.02 ], [ 2, 10, 24.88 ] ], "back_disp": 4.3, "lay_disp": 8.8, "place_back": 1.86, "place_lay": 6.6, "bsp": 4.37, "pt": 1794180900501, "places": { "2": { "back": 1.86, "lay": 6.6, "ltp": null, "bsp": 4.02, "back_ladder": [ [ 0, 1.86, 146.63 ], [ 1, 1.85, 35.29 ] ], "lay_ladder": [ [ 0, 6.6, 3.45 ], [ 1, 7, 37.06 ] ], "traded": [], "matched": null } } }, "surge": { "win": 4.2, "place": 2.05, "place_count_src": "unknown", "fixed_market_id_win": 62764030, "fixed_market_id_place": 62764021 } } } ], "bf_status": "OPEN", "bf_inplay": false, "bf_updated": 1794180947.170831, "tab_updated": 1794180944.356199, "country": "AU", "ts": 1794180947.264339}Put every book’s win for every runner side by side and you have the portal’s race grid. This is that grid, the portal’s own component, replaying one real race from the feed. The betfair object above becomes the Back and Lay columns:
| Runner | Best | Back | Lay | Rate | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$23 | −$25 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$22 | −$20 | −$20 | −$23 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$22 | −$20 | −$20 | −$20 | −$20 | −$20 | −$22 | −$20 | −$25 | −$20 | −$20 | −$20 | −$20 | −$20 | −$22 | −$20 | −$20 | −$20 | −$20 | −$20 | −$22 | −$20 | −$20 | −$20 | −$22 | −$22 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 | −$20 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| #1 Denni Norris | 5.50 | 5.50 | 8.40 | 65% | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 4.80 | 4.60 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.00 | 5.50 | 5.50 | 4.80 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.00 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.00 | 5.50 | 4.60 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.00 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.00 | 5.50 | 5.50 | 5.50 | 5.00 | 5.00 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 | 5.50 |
| #2 Stoke And Smoke | 2.50 | 2.62 | 4.00 | 63% | 2.45 | 2.40 | 2.35 | 2.40 | 2.40 | 2.40 | 2.45 | 2.25 | 2.05 | 2.35 | 2.45 | 2.40 | 2.35 | 2.45 | 2.40 | 2.35 | 2.45 | 2.35 | 2.35 | 2.35 | 2.45 | 2.35 | 2.20 | 2.45 | 2.50 | 2.15 | 2.45 | 2.35 | 2.45 | 2.40 | 2.35 | 2.40 | 2.45 | 2.45 | 2.45 | 2.45 | 2.40 | 2.45 | 2.45 | 2.45 | 2.45 | 2.45 | 2.40 | 2.45 | 2.05 | 2.45 | 2.45 | 2.45 | 2.45 | 2.45 | 2.40 | 2.45 | 2.45 | 2.45 | 2.45 | 2.45 | 2.40 | 2.45 | 2.45 | 2.45 | 2.40 | 2.35 | 2.45 | 2.45 | 2.45 | 2.45 | 2.45 | 2.45 | 2.45 | 2.45 | 2.45 | 2.50 | 2.45 | 2.45 | 2.45 | 2.45 | 2.30 | 2.40 | 2.45 | 2.45 | 2.45 | 2.35 |
| #3 Integrity Cookie | 4.40 | 4.80 | 9.00 | 49% | 4.40 | 4.20 | 4.20 | 4.40 | 4.40 | 4.40 | 4.20 | 3.80 | 3.70 | 4.20 | 4.40 | 4.40 | 4.20 | 4.40 | 4.20 | 3.90 | 4.40 | 4.20 | 4.20 | 4.20 | 4.40 | 4.20 | 4.00 | 4.40 | 4.40 | 3.80 | 4.40 | 4.20 | 4.40 | 4.40 | 4.20 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.20 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.20 | 4.40 | 3.70 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.20 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.20 | 4.40 | 4.40 | 4.40 | 4.20 | 4.00 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.40 | 4.00 | 4.40 | 4.40 | 4.00 | 4.00 | 4.20 |
| #4 Ake's Journey | 17 | 15.5 | 95 | 18% | 16 | 16 | 16 | 17 | 16 | 16 | 17 | 13 | 13 | 15 | 16 | 17 | 16 | 15 | 16 | 15 | 16 | 16 | 15 | 16 | 16 | 15 | 14 | 16 | 16 | 13 | 16 | 15 | 16 | 16 | 15 | 17 | 16 | 16 | 16 | 16 | 15 | 16 | 16 | 16 | 16 | 16 | 15 | 16 | 13 | 16 | 16 | 16 | 16 | 16 | 15 | 16 | 16 | 16 | 16 | 16 | 15 | 16 | 16 | 16 | 15 | 14 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 16 | 15 |
| #5 Long Bay Blue | 9.00 | 9.00 | 25 | 36% | 9.00 | 9.00 | 8.50 | 9.00 | 9.00 | 9.00 | 9.00 | 7.00 | 7.50 | 8.50 | 9.00 | 9.00 | 8.50 | 9.00 | 9.00 | 8.50 | 9.00 | 8.50 | 8.50 | 8.50 | 9.00 | 8.50 | 8.00 | 9.00 | 9.00 | 7.50 | 9.00 | 8.50 | 8.50 | 9.00 | 8.50 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 8.50 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 8.50 | 9.00 | 7.50 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 8.50 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 8.50 | 9.00 | 9.00 | 9.00 | 8.50 | 8.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 9.00 | 8.50 |
| #6 Joey The Mock | 4.60 | 4.70 | 9.80 | 47% | 4.60 | 4.60 | 4.40 | 4.60 | 4.60 | 4.60 | 4.60 | 4.00 | 3.90 | 4.40 | 4.60 | 4.60 | 4.40 | 4.60 | 4.40 | 4.40 | 4.60 | 4.40 | 4.40 | 4.40 | 4.60 | 4.40 | 4.20 | 4.60 | 4.60 | 4.00 | 4.60 | 4.40 | 4.60 | 4.60 | 4.40 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.40 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.40 | 4.60 | 3.80 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.40 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.40 | 4.60 | 4.60 | 4.60 | 4.40 | 4.20 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.60 | 4.40 | 4.60 | 4.60 | 4.60 | 4.60 | 4.40 |
| #7 Make A Parade | 31 | 25 | 200 | 16% | 26 | 26 | 26 | 31 | 26 | 26 | 26 | 21 | 21 | 26 | 26 | 26 | 26 | 26 | 21 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 23 | 26 | 26 | 23 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 23 | 26 | 26 | 26 | 26 | 26 | 23 | 26 | 21 | 26 | 26 | 26 | 26 | 26 | 23 | 26 | 26 | 26 | 26 | 26 | 23 | 26 | 26 | 26 | 23 | 23 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 26 | 21 | 26 | 26 | 26 | 26 | 26 |
| #8 Bundock Bonnie | 10 | 10 | 46 | 22% | 10 | 10 | 10 | 10 | 10 | 10 | 9.50 | 8.00 | 8.50 | 10 | 10 | 10 | 10 | 9.50 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 9.00 | 10 | 10 | 8.50 | 10 | 9.50 | 9.50 | 10 | 9.50 | 10 | 10 | 10 | 10 | 10 | 9.00 | 10 | 10 | 10 | 10 | 10 | 9.00 | 10 | 8.00 | 10 | 10 | 10 | 10 | 10 | 9.00 | 10 | 10 | 10 | 10 | 10 | 9.00 | 10 | 10 | 10 | 9.00 | 9.00 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 10 | 9.50 |
| #9 Magic Sugar | Scratched | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| #10 Bundock Tommy | Scratched | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Recorded from the feed on 26 Oct 2026, 14:02 AEDT: 3 minutes, 138 price changes, played back at 2× speed. It's the same grid you see after you log in.Licensed Australian bookmakers only · ⊘ betting closed · · no price yet. Click any price to open the race once you're logged in.
| Field | Meaning |
|---|---|
type |
Always "race" today |
key |
Stable race id: venue|code|race number|local day. Use it as your map key |
sport |
"racing" (sports are coming) |
event.venue, event.number |
Meeting name and race number |
event.type |
Code: R thoroughbred, H harness, G greyhound |
event.day |
Local race day YYYY-MM-DD |
event.start |
Scheduled jump, ISO 8601 UTC |
event.name, event.rclass |
Race name and class, when the books publish one |
event.country, country |
Country (AUS/AU, also NZ and others for international meetings) |
books |
Book ids that price this race |
book_event_ids |
Each book’s own id for the race (handy for deep links) |
source_rx_ts |
Per book: when we last received data from it for this race (epoch s) |
bf_status, bf_inplay |
Betfair market status (OPEN, SUSPENDED, CLOSED) and in-play flag; null if no Betfair market |
bf_updated, tab_updated |
Last update time from Betfair / TAB (epoch s) |
ts |
When this race object was last rebuilt (epoch s) |
selections |
The runners, see below |
Runner (selection)
Section titled “Runner (selection)”| Field | Meaning |
|---|---|
key, number |
Runner (saddle cloth / box) number |
name |
Runner name, as the books print it |
status |
ACTIVE or SCRATCHED |
bookie_ids |
Each book’s own id for this runner |
odds |
Map of book id → prices. A book missing from the map has no price for this runner right now |
Prices: fixed-odds books
Section titled “Prices: fixed-odds books”Most books share these fields. Any of them can be absent; treat absence as “unknown”, not zero.
| Field | Meaning |
|---|---|
win, place |
Fixed win / place price (decimal) |
fixed_win_open, fixed_place_open |
Whether the market is open for betting. false with no price = not yet / no longer offered |
place_count |
Number of places paid, when known; place_count_src says where that came from |
place_open, allow_place, allow_fo_place |
TAB-style place-market flags |
place_ladder |
Extra-place prices keyed by number of places (e.g. top-4, top-5) |
tote |
Tote pools where a book shows them: win/place, keyed by pool id |
fixed_market_id_win, fixed_market_id_place |
The book’s own market ids |
silk_url |
Jockey silks image, when the book provides one |
Prices: Betfair Exchange
Section titled “Prices: Betfair Exchange”Betfair appears as just another book id, betfair, with exchange fields:
| Field | Meaning |
|---|---|
back, lay |
Best back and lay price |
back_ladder, lay_ladder |
Depth: [level, price, size AUD] triples, best first |
back_disp, lay_disp, *_ladder_disp |
The same, as Betfair’s website displays them (virtual bets included) |
ltp, traded, matched |
Last traded price, traded volume ladder and matched total, when available |
bsp |
Projected Betfair Starting Price |
place_back, place_lay, places |
Place-market equivalents; places is keyed by number of places |
pt |
Betfair publish time, epoch milliseconds |
Odds compares prices only. It is not a bookmaker, takes no bets and does not tell you what to back. Prices come from licensed Australian bookmakers' public sites and can change at any moment; always check the price with the bookmaker before you bet.
18+ · Chances are you're about to lose. For free and confidential support call 1800 858 858 or visit gamblinghelponline.org.au