TerminalExecutionOdds337ToolsContact
    DocsLog in
    1. Home
    2. Guides
    3. Betting tools and software in Australia: what each does and what to check
    4. How to choose an odds API in Australia

    How to choose an odds API in Australia

    How to choose an odds API in Australia: what to ask about bookmaker coverage, price freshness, event mapping, history, request limits and licence terms.

    By the B337 team. Last updated 7 October 2026.

    The short answer

    • To choose an odds API in Australia, check which bookmakers and markets it covers, how old its prices are, how it maps events across bookmakers, and what its history, limits and licence allow.
    • Your polling cannot make a price fresher than the provider's own read: with a 20-second read cycle, polling every 5 seconds still leaves prices up to 25 seconds old.
    • For example, 12 events polled every 15 seconds for 8 hours a day use 23,040 requests a day, or 691,200 over 30 days, and that decides which plan is cheaper.
    • Check every bookmaker an API lists against ACMA's register: offshore operators are illegal to offer betting in Australia, and their customers lose Australian protections.
    • An odds API returns prices and places no bets, so software that also bets needs a separate bet placement API.

    On this page

    1. Coverage: bookmakers, sports, markets and racing codes
    2. Freshness: polling, streaming and a time on every price
    3. Normalising events and markets across bookmakers
    4. History, request limits, pricing and licence terms
    5. Odds APIs return prices; placing bets needs a different API
    6. Where odds API choices go wrong
    7. When an odds API is the wrong tool
    8. Where B337's API Odds fits

    Choose an odds API in Australia on four tests: the bookmakers and markets it carries, the age of its prices, how it maps events across bookmakers, and what its history, limits and licence allow. An odds API returns prices and places no bets, so software that bets needs a second, separate API.

    The answers matter more than the headline number on a pricing page. Two sports odds APIs that each list, say, 30 bookmakers can differ in which 30, in the markets they carry at each, and in how stale their prices run. Those differences decide whether your model, screen or alert works on the accounts you actually hold.

    Coverage: bookmakers, sports, markets and racing codes

    Get coverage as a grid you can check against your accounts: one row per sport, market and racing code (thoroughbred, harness and greyhound), one column per bookmaker. A bookmaker can be "covered" for head to head prices on the main leagues and nothing else, and a racing feed can carry thoroughbred win prices with no greyhounds at all.

    Then score the grid against what you will use. With an illustrative need of five markets at the six bookmakers you hold accounts with, called A to F:

    Market you needOf your 6 bookmakers, coveredMissing
    AFL head to head6None
    AFL line5F
    AFL player disposals3B, D, F
    Thoroughbred win and place6None
    Greyhound win2A, C, E, F
    Total22 of 308 gaps

    Across all 30 cells, coverage is 22 / 30 = 73%. If player disposals are what your model is built on, the figure that matters is 3 of 6, not 73%. Test in season, too: a sport with no markets up has nothing to carry, so an off-season sample tells you little.

    Check that every bookmaker listed may take your bet

    An API built for customers in many countries can carry offshore operators beside Australian ones. It is illegal for an operator without an Australian state or territory licence to offer online sports betting to people here (Interactive Gambling Act, s 15AA). ACMA warns that customers of illegal operators may not be paid their winnings, and that Australian regulators cannot help them. A best price from one of them is not one to build anything on.

    Check each bookmaker on the list against ACMA's register of licensed wagering providers, as how to check a bookmaker is licensed sets out step by step, and filter the rest out before any comparison runs.

    Freshness: polling, streaming and a time on every price

    Two things set how old a price is when your code uses it: how often the provider reads each bookmaker, and how often you collect from the provider, by polling or over a stream. Odds data feeds explained covers how each delivery works; for choosing, the arithmetic decides.

    Your polling cannot make a price fresher than the provider's own read. With an illustrative provider that reads each bookmaker every 20 seconds, and 12 events watched for 8 hours a day:

    Your settingRequests a dayWorst-case price age
    Poll every 60 seconds12 x 60 x 8 = 5,76020 + 60 = 80 seconds
    Poll every 15 seconds12 x 240 x 8 = 23,04020 + 15 = 35 seconds
    Poll every 5 seconds12 x 720 x 8 = 69,12020 + 5 = 25 seconds
    StreamingOne open connectionAbout 20 seconds, plus delivery

    The worst case is a price that changes just after the provider's read, then waits a full read cycle and a full poll interval to reach you. Going from 15 to 5 seconds triples the requests and takes 10 seconds off the worst case. The other 20 seconds belong to the provider, and only a faster read on its side removes them. Ask whether one request returns one event or a whole sport, because that changes every figure in the middle column.

    Insist on a read time on every price, set when the provider read the bookmaker, not when it sent the reply. Without one, a price kept from the last good read an hour ago arrives looking exactly like one read this cycle, and nothing in your code can tell them apart. Test it before you pay: poll one busy event every few seconds for an hour and note how often each bookmaker's read time moves on, because that interval is the read cycle you would be buying.

    Normalising events and markets across bookmakers

    Each bookmaker names the same game, market and selection its own way: team order, player name formats, market titles and how a line is written all differ. A comparison only works if the API maps every version to one event and one market. Ask how it matches events: on the teams and the start time, or on the event name as text. Ask too what it does with a market it cannot map (drops it, returns it raw, or guesses), and whether it returns the bookmaker's own label beside the mapped one so you can check.

    A wrong map costs more than a missing one. With illustrative prices, Bookmaker A lists a game as Team A v Team B, Bookmaker B lists it as Team B v Team A, and the API maps by position:

    Shown under Team AShown under Team B
    Bookmaker A (Team A v Team B)$1.60$2.40
    Bookmaker B (Team B v Team A), mapped by position$2.35, really Team B's price$1.62, really Team A's price
    Best price the API shows$2.35$2.40

    The best prices shown add up to 1 / 2.35 + 1 / 2.40 = 0.4255 + 0.4167 = 0.8422. An arbitrage check reads that 84.2% book as a profit of 1 / 0.8422 - 1 = 18.7% of the total staked. There is no arbitrage: both prices belong to Team B, so the two "legs" are two bets on one team, and both lose if Team A wins. Spot-check a sample of events against each bookmaker before you trust any gap an API shows.

    History, request limits, pricing and licence terms

    History

    Ask what the API keeps: every price it read or only the changes, opening and closing prices, how far back it goes, and whether you can download it in bulk. Price history is how you check whether you beat the closing price, and a hole in it stays invisible unless the API marks it. Historical odds data covers which past prices are fit for testing.

    Request limits

    Every plan has limits: requests a minute, requests a month, open connections, and sometimes bookmakers or sports held back for dearer plans. Ask what happens when you reach one. A clear refusal, such as an HTTP 429 "too many requests" reply, is easy to handle. An API that keeps answering with its last cached prices is not, because your code carries on with stale prices and no sign that anything changed.

    Pricing

    Providers charge by the month with a request quota, per request, by sport or bookmaker bundle, or extra for streaming. Turn every plan into a monthly cost at the polling rate you need. With two made-up plans, not any provider's prices, and the 12-event pattern above over 30 days:

    • Plan X: $79 a month for 100,000 requests, then $1 per 1,000 requests beyond that, charged pro rata (0.1c a request).
    • Plan Y: $249 a month for 1,000,000 requests.
    PollingRequests a monthPlan XPlan Y
    Every 60 seconds5,760 x 30 = 172,80079 + 72.8 x 1 = $151.80$249.00
    Every 15 seconds23,040 x 30 = 691,20079 + 591.2 x 1 = $670.20$249.00

    The cheaper plan flips with the polling interval, so settle the freshness you need before you compare prices.

    Licence terms

    Ask in writing what you may do with the data: use it in your own models only, show it on a website or app, store it, or pass it on. Racing fields, form and results carry rights of their own, which what a racing odds API should carry covers.

    Odds APIs return prices; placing bets needs a different API

    Three kinds of API get called "betting APIs", and only one of them puts a bet into a bookmaker account:

    Kind of APIWhat it gives youCan it place a bet?
    Odds data APIPrices and market details from many bookmakersNo
    An exchange's own APIThat exchange's prices and your orders on itOnly on that exchange, in your exchange account
    Bet placement APIThe results of bets your code sendsYes, in bookmaker accounts you hold

    Choosing an odds API settles where your prices come from. If your software will also bet, the placement side has its own checks, from duplicate bets after a timeout to reconciling every bet with the bookmaker, set out in bet placement API. Many bookmakers restrict automated betting in their terms and can limit stakes, void bets or close an account under them; that is a question about each bookmaker, not about the odds API.

    Where odds API choices go wrong

    Each of these is cheap to check before you pay and expensive to find afterwards. With illustrative figures:

    MistakeWhat it costs
    Choosing on the bookmaker countTwo of your six bookmakers missing leaves a third of your accounts out of every comparison
    Acting on prices with no read timeA $50 bet sent at $4.00 that is $3.70 when it lands returns 50 x 3.70 = $185 if it wins, not $200
    Polling faster than you needPlan X costs $670.20 a month at 15-second polling against $151.80 at 60 seconds
    Trusting a mapped market without its raw labelA phantom 84.2% book that is really two bets on one team
    Leaving offshore operators in the comparisonA best price from an operator that may not lawfully offer it to you, with no Australian protections
    Not asking what happens at the request limitHours of decisions made on cached prices

    When an odds API is the wrong tool

    An API is only worth its setup when code will use the prices. In these cases something else does the job:

    • Comparing prices and placing a few bets by hand needs no code: an odds screen does it.
    • Testing a method on past races or games calls for bulk history, not a live API.
    • Tote dividends cannot come from any API before the race, because a dividend is declared after the result.
    • Getting bets placed takes a placement API, fed by prices your rules already trust.

    Odds APIs sit underneath many other betting tools in Australia, from odds screens to bots, so the same questions apply when you buy a finished tool rather than raw data.

    Where B337's API Odds fits

    B337 sells odds data as API Odds: live racing and sports odds from Australian bookmakers and Betfair, delivered over the B337 API for your own models, tools and strategies. It places no bets and includes Terminal View.

    Coverage and access are agreed at setup, and coding is required. The team confirms the price, including any charges on top of the plan price, before you pay, so put these coverage, freshness and licence questions to the team first. The API Odds summary on the automation page has the outline. Betting from code is a separate product, the Execution API, and bets placed through B337 use credits. Betfair is a trade mark of its owner; B337 is not affiliated with it.

    Risk: Betting involves risk. A price from any feed can be gone by the time you act on it, a model fed clean data still loses bets, and there is no guarantee of profit. See responsible gambling for limits and support.

    For free and confidential support call 1800 858 858 or visit gamblinghelponline.org.au.

    Questions

    What is the best odds API in Australia?
    The best fit is the one that covers the bookmakers you hold accounts with, in the markets you use, and puts a read time on every price. Run two or three providers side by side on the same events for a week before you commit to one.
    What is a sports odds API?
    A sports odds API is a service your code calls to get bookmakers' prices for games and markets, usually returned as JSON over HTTPS. It returns prices and market details and places no bets.
    Is a betting odds API the same as an exchange API?
    No. A betting odds API collects prices from many bookmakers and places nothing. An exchange's own API carries only that exchange's back and lay prices, with the money available at each, and places bets only there, in your own exchange account.
    How often should I poll an odds API?
    Set the interval from the oldest price you can accept, because the worst case is the provider's read cycle plus your interval. With a 20-second cycle and a 30-second limit, polling every 10 seconds is the slowest that works. Halving the interval doubles the requests, so tighten it only for events close to their start.

    Sources

    • Check if a gambling operator is legal, ACMA
    • Protect yourself from illegal gambling operators, ACMA
    • Interactive Gambling Act 2001, Federal Register of Legislation

    Related

    • Betting tools and software in Australia: what each does and what to check
    • Odds data feeds: how prices are collected, sent and timestamped
    • Racing odds API in Australia: what it should carry
    • Bet placement API reliability checklist
    • Automated betting
    • Betting courses in Australia: how to judge one before you pay
    • Sports investment scheme scams: how they work and what to do
    • Value betting software in Australia: how it finds prices above fair
    • Bet slip meaning and how the slip works

    Start with a free account

    The API docs are open to read without an account, and a free account opens a limited view of the Terminal with live odds. API access for placing bets is set up through Discord.

    Create free accountSee plansJoin Discord

    Betting involves risk. Bookmakers can restrict or close accounts and void bets, automation can fail, prices move, and a positive expected value (+EV) bet can still lose. Promotions carry each bookmaker's own terms. There is no guarantee of profit. 18+ only. For free and confidential support call 1800 858 858 or visit gamblinghelponline.org.au. See responsible gambling for limits and support.

    Products

    • Terminal
    • Execution API
    • Full Automation

    Guides and tools

    • All guides
    • Betting glossary
    • Betting calculators
    • How betting bots work
    • Arbitrage betting
    • Middle betting
    • Matched betting
    • Betting exchanges
    • Odds types explained
    • Horse racing software
    • Money back racing promos
    • Bonus bet converter
    • Terminal pricing
    • Execution pricing
    • How tokens work

    Company

    • About
    • Security
    • Responsible gambling
    • Contact
    • Terms
    • Privacy

    Think. Is this a bet you really want to place?

    18+ only. For free and confidential support call 1800 858 858 or visit gamblinghelponline.org.au. Self-exclusion: BetStop (betstop.gov.au).

    B337 is software, not a bookmaker or wagering service provider. Bets are placed in accounts you hold with Australian bookmakers. Bookmaker names are trade marks of their owners; B337 is not affiliated with or endorsed by them. Bookmaker terms may restrict automated betting.

    Bet337 © 2026Join our Discord