Historical odds data in Australia is a record of the prices bookmakers and the exchange offered on past races and games, each with the time it was offered, who offered it and how the bet would have settled. It is fit for testing only where every price is one you could have taken at that moment, so a top fluc, or a price with no time beside it, tells you less than it seems to.
Past prices come from your own account history, the official NSW flucs and starting prices, the exchange's price history and Betfair Starting Price (BSP), odds feed archives and your own snapshots. Each source's gaps decide which questions it can answer.
What a usable price record contains
A usable record says what was priced, at what price, when, and how it settled. One illustrative row:
| Field | Illustrative value | Why it matters |
|---|---|---|
| Event | Race 6 at a Saturday thoroughbred meeting, scheduled for 3:05 pm AEDT | Ties the price to one race |
| Selection and market | Runner 5, fixed-odds win | A win price and a place price are different bets |
| Who offered it | Bookmaker A | A price you could not have taken is no use |
| Price | $6.50 | The number you test |
| Read time, with its zone | 2:55 pm AEDT, which is 03:55 UTC | Separates a price before the jump from one after it |
| Market state | Open | A price shown while a market is suspended could not be bet |
| Result as settled | Won, on the placings at correct weight | Bets settle on the placings when the Stewards declare correct weight |
| Adjustments | No scratching deduction, no dead heat | Either one changes what a winner returned |
| Close | BSP $6.20 | The benchmark for closing line value |
For sport, the record also needs the line or total each price was for, and whether the market counts extra time.
Where historical racing and sports odds come from
| Source | What it gives you | What it leaves out |
|---|---|---|
| Your own bookmaker account history | Every bet you placed, which the National Consumer Protection Framework says you should be able to access for the preceding 7 years | Prices on bets you did not make |
| Official racing prices | For NSW TAB race meetings, the official flucs, starting price (SP) and top fluc, from the NSW Official Price (NOP) service, which is calculated from the prices of the larger licensed wagering operators | Any one bookmaker's own price |
| Exchange price history | Traded prices and each runner's BSP, the usual racing close | Bookmaker fixed prices |
| Odds APIs and data feeds | Whatever the provider stored: every reading or only the changes | Anything outside its coverage, or older than its archive |
| Your own snapshots | Prices saved when your rule would bet, under your own time stamp | Everything before the day you started |
| Free spreadsheets and forum files | Often closing prices for a league or a season | How and when the prices were taken |
Opening, closing and in-between prices
A price path runs from the opening price through the in-between moves, called flucs, to the close, and each point answers a different question. Illustrative prices for Runner 5, with what a $20 win bet returns if it wins:
| Point on the path | Time (illustrative) | Price | $20 returns | Use it to test |
|---|---|---|---|---|
| Opening price | 4:10 pm the day before | $8.00 | $160 | Rules that bet early, often at small stakes |
| Top fluc, the highest | 9:30 am on race day | $8.50 | $170 | Nothing: nobody could count on the top |
| Price when your rule fires | 2:55 pm, 10 minutes before the jump | $6.50 | $130 | A backtest of that rule |
| Bookmaker starting price | At the jump | $5.50 | $110 | SP bets; drawn from bookmakers' prices, it can carry their margin |
| BSP | At the jump | $6.20 | $124 before exchange commission | Closing line value |
Test the rule at the top fluc and the winner returns (8.50 - 6.50) x 20 = $40 more than it could have. Horse racing flucs covers reading the path itself.
Using history for backtests and closing line checks
The two main uses of historical betting odds need different prices.
A backtest asks what a rule would have made, so it needs the price on offer when the rule fires, plus every scratching, deduction, dead heat and void. Write the rule down first and judge it on seasons it was never tuned on; how to backtest a betting strategy sets out the method and its traps.
A closing line check asks whether your prices beat the market's final view, so it needs only your bets and the close: CLV = your price / closing price - 1. With illustrative prices, a $4.60 bet on a runner whose BSP was $4.25 beat the close by 4.60 / 4.25 - 1 = +8.2%. For sport, the usual close has the bookmaker's margin taken out, and closing line value shows how.
Most errors here are matching errors. The close must be for the same runner in the same race, after the final field, and a refunded bet on a scratched runner has no close: leave it out rather than score it as zero.
Risk: Betting involves risk. A rule that beat past prices can lose on live ones, because prices move before a bet lands and bookmakers can refuse or cut bets, and there is no guarantee of profit. See responsible gambling for limits and support.
Common data problems and what each one costs
With illustrative figures:
| Problem | What it does | Fix |
|---|---|---|
| The top fluc used as the bet price | A $20 winner returns $40 more than it could have | Use the price when the rule fires |
| A time stamp with no zone | Queensland has no daylight saving, so while NSW is on daylight time (4 October 2026 to 4 April 2027) a 2:55 pm stamp in Brisbane time is 3:55 pm in Sydney, 50 minutes after a 3:05 pm AEDT jump | Store every time in UTC with its offset |
| A line or total stored without its number | A $1.90 filed against -7.5 when it was offered at -6.5 tests a bet nobody offered | Store the line or total, and whether extra time counts, with every price |
| A season file that does not say whose price each column holds | A close taken as the best of several bookmakers assumes you held every account and each one took your bet | Use files that name the bookmaker behind each price, or save your own |
| A scratching deduction left out | A $20 winner at $4.20 with a 12c deduction is recorded as $84, when it paid $84 x (1 - 0.12) = $73.92 on the face-value reading of Racing NSW's Rules of Betting for NSW on-course bookmakers (BR 14), or $20 + $64 x 0.88 = $76.32 where a bookmaker deducts from winnings only | Store each declared deduction and the time of each scratching; check your bookmaker's terms |
| A dead heat ignored | A $20 winner at $6.50 that dead-heats for first is recorded as $130, when the same on-course rules (BR 16) pay half the face value, $65 | Store whose rules settled it, since online bookmakers set their own |
| Placings changed after correct weight | A later disqualification turns a paid winner into a loser in the table, though AR 214(6) says a change after correct weight does not alter the Stewards' earlier orders on betting | Keep the result declared at correct weight |
| A change of method | NSW official flucs and SP came from the Australian Prices Network model before May 2017 and from the NOP after it, so a test across that date mixes two methods | Split the test at the change |
| Prices from operators not on ACMA's register | A "best price" from a site that may not lawfully offer you a bet | Keep only bookmakers on ACMA's register |
Online sports bets with an Australian provider must go on before the game starts (Interactive Gambling Act, s 10B and s 8A(3)), so a stored price from after the start could not have been bet online.
Rights, licences and terms of use
Price data has owners, and a stored price can carry three sets of terms:
- The source's terms. A bookmaker or exchange publishes prices under its own terms of use, which can limit copying or automated collection.
- A data licence. For stored prices, ask in writing whether you may keep the data after a subscription ends and publish results, charts or files built from it; choosing an odds API lists what else to ask.
- Racing bodies' rights. Race fields carry conditions set by the racing bodies, covered in what a racing odds API should carry. Ask any provider which parts of its racing data come from a racing body, and on what terms.
Anything you publish from stored prices needs a licence that covers publishing, not just your own use. This is general information, not legal advice.
When historical odds cannot answer the question
- Tote bets. A dividend is declared after the result, and before the race only approximates exist, because the pool keeps growing until betting closes. Fire a tote rule on the approximates shown at bet time, then score each bet at the dividend it was paid.
- Stake size. History shows the price, not how much a bookmaker would have accepted.
- Thin markets. An opening price open only to small stakes, or a BSP from a race where little money traded, says less than a busy market.
- The future. A pattern in old prices is a guess until it holds on later seasons.
Use stored prices when each carries a time and a source you trust, and narrow or skip a test when all you have is closes, top flucs or undated files. Ask the same of any betting tools in Australia that quote past results: which prices were they measured at?
Where B337's API Odds fits
B337's API Odds sends live racing and sports odds, from Australian bookmakers and the Betfair exchange, to your own code. It places no bets. Coverage and access are agreed at setup, and where those terms allow it, saving each price with the time your code received it starts your own dated record that day.
Coding is required, and the team confirms the price, including any charges on top of the plan price, before you pay. If your code later needs to place bets, that is a different product, the Execution API: each bet goes to a session in an account you hold, running on your own computer, which has to be on, awake and online. Bets placed through B337 use credits, a per-bet usage charge. Bookmaker names are trade marks of their owners. B337 is not affiliated with them.
Risk: Betting involves risk. Odds data helps you check prices, not predict results. Many bookmakers restrict or prohibit automated betting in their terms, and can limit stakes, void bets or close accounts. See responsible gambling for limits and support.
For free and confidential support call 1800 858 858 or visit gamblinghelponline.org.au.