18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware
Open data · CC BY 4.0 · Released monthly · Latest: September 2026

Australian racing closing lines

Opening and closing fixed win prices for 6,274 Australian thoroughbred, harness and greyhound races in September 2026, at TAB, Ladbrokes, PointsBet, BetRight, TABtouch, with the finishing position where one was published. Free to download and reuse with credit.

233,872Rows, one per race, runner and bookmaker
6,274Races in September 2026
99%Races with a result
5Bookmakers

Download the September 2026 release

Revision 2 (2026-10-05): cite version 2026-09.2. What changed is in the README.

Also in the release: README, datapackage.json (Frictionless schema), SHA256SUMS and the licence notice. The catalogue of every release is at /datasets.json, and the build script, the metadata and every release are also on GitHub.

FileSizeSHA-256
au-racing-closing-lines-2026-09.parquet4.3 MBcb5419056da424c45e863a26d0d3788202f6920f368e674b42ee0134277a0e84
au-racing-closing-lines-2026-09.csv.gz4.9 MB0e6b854aa62902cc0f1b8bc8b0d5061e5beabe5bcaedeca629336fde59cfc8c9

What is in it

Each row is one bookmaker's price series for one runner: the first price observed once the race entered the 60-minute capture window, the last price observed before the jump, when each was seen, and how many price changes were captured in between. Every row's last observation was within 300 seconds of the advertised start, so the close is a closing price, not a last-seen price from earlier in the day.

The rows are what GET /v1/racing/closing-lines returns with its default filters for this month, these bookmakers and country=AU. A bookmaker is included in a release when at least 75% of its series that month were last observed within 300 seconds of the jump.

CodeRacesRows
Thoroughbred1,28355,290
Greyhound3,850129,802
Harness1,14148,780

Two figures from this release

Best or equal-best closing win price, on runners priced by at least three of the bookmakers in the release:

BookmakerShare of its priced runners
PointsBet50%
BetRight45%
TAB40%
TABtouch28%
Ladbrokes19%

Median market percentage at the close: the sum of 1/price across a full field, where 100% would mean no margin.

BookmakerThoroughbredGreyhoundHarness
TAB121.9%123.3%126.1%
Ladbrokes121.4%126.1%126.8%
PointsBet119.6%122.9%124.9%
BetRight119.9%123.1%123.7%
TABtouch120.4%123.1%125.2%

Both are computed from the release files by the script that builds them, and are descriptive only.

Load it

import pandas as pd

df = pd.read_parquet("https://puntersedge.online/datasets/au-racing-closing-lines/2026-09/au-racing-closing-lines-2026-09.parquet")

# Best closing price per runner across the bookmakers in the release
best = (df.groupby(["race_id", "runner_key"])["close_win_price"].max()
          .rename("best_close").reset_index())

# Winners, from races with a final result
winners = df[(df.result_status == "final") & (df.finish_position == 1)]

Columns

ColumnTypeMeaning
race_idstringPuntersEdge race identifier. The same id the API returns on /v1/racing/results and /v1/racing/closing-lines.
start_timedatetimeAdvertised start time of the race, UTC.
meeting_date_aetdateRacing day the meeting belongs to, in Australian Eastern time.
venuestringVenue name.
race_numberintegerRace number at the meeting.
categorystringhorse (thoroughbred), harness or greyhound.
countrystringAU for every row in this sample.
runner_keystringRunner name folded to lowercase letters and digits. Joins one runner's rows across bookmakers within a race.
runner_namestringRunner name as published.
runner_numberintegerSaddlecloth or rug number.
bookmaker_keystringBookmaker the prices were observed at: tab, ladbrokes_au, pointsbetau, betright or tabtouch, depending on the release.
open_win_pricenumberFirst fixed win price observed in the series, in decimal odds.
open_secs_to_jumpintegerSeconds before the advertised start at which the first price was observed.
open_is_baselinebooleanTrue when the series began when the race entered the 60-minute capture window. False when the bookmaker's market appeared later, so the first price is not a market open.
close_win_pricenumberLast fixed win price observed before the jump, in decimal odds. Every row in this sample was last observed within 300 seconds of the advertised start.
close_secs_to_jumpintegerSeconds before the advertised start at which the last price was observed.
points_observedintegerNumber of price observations captured in the series.
finish_positionintegerOfficial finishing position where one was published. NULL does not mean the runner lost: harness results name the placegetters only, and before 14 September 2026 thoroughbred and greyhound results stored positions 1 to 4 only.
result_statusstringfinal, interim or abandoned; NULL when no result is held for the race.
venue_idstringStable PuntersEdge venue identifier.
horse_refstringThoroughbred identity across meetings: pe: followed by the registered name folded to letters and digits. NULL on greyhound and harness rows.
open_place_pricenumberPlace price at the first observation. Captured from 29 September 2026, NULL before then and at bookmakers that price win only.
close_place_pricenumberPlace price at the last observation. Same coverage as open_place_price.
consensus_close_probnumberThe market's margin-free probability for the runner at the close: each included bookmaker's implied probabilities (1 / price) raised to the exponent that makes them sum to one (the power method), the median across bookmakers, the field scaled to one. Power replaced the simple divide-by-the-sum on 6 October 2026 because it is calibrated across the price range; every archived row carries the one method. Computed over every Australian bookmaker in the archive (14), not only the five in this release. It describes what the market implied, not the outcome.
consensus_close_pricenumber1 / consensus_close_prob.
books_in_consensus_closeintegerBookmakers whose closing line entered consensus_close_prob.
consensus_open_pricenumberThe same price from series that began at the 60-minute baseline. NULL where fewer than two complete-field bookmakers did.
books_in_consensus_openintegerBookmakers behind consensus_open_price.

Before you model on it

  • finish_position empty does not mean the runner lost. Harness results name the placegetters only; thoroughbred and greyhound results position every finisher from 14 September 2026, and before that date positions 1 to 4. Use result_status to tell a race with no result from a runner without a position.
  • open_is_baseline false means the bookmaker's market appeared after the race entered the capture window, so the first price is not that market's opening price.
  • Place prices start on 29 September 2026. Prices are decimal odds as displayed, margin included. Times are UTC; meeting_date_aet is the racing day in Australian Eastern time.
  • Coverage and freshness of the archive these files come from are measured on the data quality page.

Licence and citation

Released under CC BY 4.0. Use it, share it and build on it, commercially too, with this credit: PuntersEdge Australian racing closing-line sample (puntersedge.online), September 2026. The licence covers PuntersEdge's compilation; bookmaker names are trademarks of their owners, and the dataset is not affiliated with or endorsed by any bookmaker or racing body.

@misc{puntersedge_closing_lines_2026_09,
  author = {{PuntersEdge}},
  title  = {Australian racing closing lines, September 2026},
  year   = {2026},
  url    = {https://puntersedge.online/datasets},
  note   = {CC BY 4.0}
}

Need every bookmaker and every day?

The closing-line archive behind these files runs from 4 August 2026 across 15 Australian bookmakers and New Zealand racing, with full price paths and a closing-line-value scorer. A free key needs no card.

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