PuntersEdge Developers
Sports Odds API — Australia
Multi-bookmaker Australian sports odds in one API call. AFL, NRL, NBA, WNBA, Tennis, Cricket and more — with best-price detection and arbitrage flagging built in.
List available sports
GET https://api.puntersedge.online/v1/sports
Header: X-API-Key: YOUR_KEY
Returns an array of sport keys (afl, nrl, nba, wnba, tennis_atp, cricket_test, …) with display
names. Only active sports are listed; the key you pass to every other endpoint is this exact
string. soccer_epl serves the English Premier League; other soccer
competitions sit under soccer_other.
Get odds for a sport
GET /api/v1/sports/{sport_key}/odds
?markets=h2h # h2h (head-to-head), spreads, totals
&bookmakers=sportsbet,tab,pointsbetau # optional filter
# Example: NRL head-to-head, all bookmakers
GET /api/v1/sports/nrl/odds?markets=h2h
Returns an array of events with bookmaker odds arrays nested by outcome.
bookmakers takes the exact key from each bookmaker object —
sportsbet, tab, ladbrokes_au, pointsbetau,
palmerbet, betright. Matching is exact but case-insensitive, and
an unrecognised key returns 422 with the valid list inline and costs no credits — the same
contract markets has always had. Until 2026-08-18 it did not: passing
ladbrokes instead of ladbrokes_au silently narrowed the response
to nothing and billed for it.
Best-price and arbitrage endpoint
GET /api/v1/best-odds/{sport_key}
# Returns:
# - best_bookmaker + best_price per outcome
# - arb_exists: true if cross-book arbitrage exists
# - arb_profit_pct: estimated theoretical arbitrage margin % (not guaranteed)
Supported sports and bookmaker count
| Sport | Key | Bookmakers | Refresh |
|---|---|---|---|
| NRL | nrl | 6 (SB, TAB, LB, PB, Palmer, BetRight) | ~14 min median |
| AFL | afl | 5 (SB, TAB, PB, Palmer, BetRight) | ~14 min median |
| WNBA | wnba | 5 (SB, LB, PB, Palmer, BetRight) | ~14 min median |
| NBA | nba | 3 (TAB, LB, Palmer) | ~14 min median |
| NRLW | nrlw | 2 (SB, PB) | ~14 min median |
| Tennis ATP / WTA | tennis_atp, tennis_wta | 3 (Palmer, PB, SB) | ~14 min median |
| Test Cricket | cricket_test | 1 (SB) | ~14 min median |
| NFL | nfl | 2 (Palmer, BetRight) | ~14 min median |
| Soccer — other competitions | soccer_other | 2 (PB, SB) | ~14 min median |
| AFLW, MLB, NHL, College Football, MMA/UFC, Rugby Union, Basketball (other), Cricket (other) | aflw, mlb, nhl, ncaaf, mma, rugby_union, basketball_other, cricket_other | 1 | ~14 min median |
Counts are Australian books on the events currently in the feed, so they
move with the card — GET /v1/sports is the live list. Betfair Exchange prices several of
these but is withheld from customer responses pending its data licence, and Pinnacle appears on US
codes only; neither is counted above. cricket_bb (Big Bash) is deactivated out of
season and 404s, along with its bbl alias; it reactivates automatically on
1 November for the December–February season.
Usage notes
- Credit cost is per endpoint, not per bookmaker:
/v1/sportscosts 1,/v1/sports/{sport_key}/oddscosts 1 per requested market (somarkets=h2h,spreads,totalsis 3), and/v1/best-odds/{sport_key}costs 3. Full table on API pricing. - Bookmaker markets older than 360 minutes are excluded from
/best-odds. Rather than assume a window, read the freshness fields on each event:data_age_seconds(the age of the oldest contributing book),freshest_age_seconds,stale(true above 1800s) andstale_bookmakers. On/v1/sports/{sport_key}/oddsthe cutoff is yours to set withmaxAgeMinutes, which also defaults to 360. - For historical prices, use the Historical Odds API.
- API keys are passed via the
X-API-Keyheader — see Authentication.
Start with a free API key
Test AFL, NRL, NBA, racing and best-price endpoints before upgrading to a paid API credit plan.