PuntersEdge › Odds API › Australian racing from overseas
18+. Gambling support: in Great Britain, GamCare's National Gambling Helpline 0808 8020 133 and BeGambleAware.org; in Ireland, GamblingCare.ie; in the US, 1-800-MY-RESET (1-800-697-3738).
Australian racing, from overseas
Thoroughbred, greyhound and harness prices from 11 Australian bookmakers, each quote with its age in seconds, plus results, closing lines and price paths. One REST API for overseas bettors, syndicates and model builders who work the Australian card.
Race times are UTC in every response. Prices are decimal odds, as the bookmakers display them.
Australian racing is running now: today's racing day, Sat 7 November in Sydney, runs 00:00 to 14:00 UTC. For Europe it runs overnight into the morning, and for the Americas through the evening and night.
| Where you are | From | To |
|---|---|---|
| UTC | 00:00 | 14:00 |
| London | 00:00 | 14:00 |
| Dublin | 00:00 | 14:00 |
| Central Europe | 01:00 | 15:00 |
| New York | 19:00 Fri | 09:00 |
| Los Angeles | 16:00 Fri | 06:00 |
| Hong Kong | 08:00 | 22:00 |
Computed when this page was built, from the window our coverage report counts as the Australian racing day, with each zone's daylight-saving rules for that date.
Measured over the last 7 days, at 7 Nov 2026 11:51 UTC, from the same document as the coverage report.
Greyhound races
998
Priced by 11 bookmakers on the median race.
Thoroughbred races
398
Priced by 12 bookmakers on the median race.
Harness races
262
Priced by 11 bookmakers on the median race.
Bookmakers quoting
11
Australian bookmakers with a fresh price on the card when this was measured; the full list is on the coverage report.
Models
Closing lines and price paths give you the market's view at the jump and how it got there, by bookmaker, to train and test against.
Exchange trading
Line our Australian bookmaker prices up against your own exchange feed by race and runner, to see where the books sit before the off.
Overnight automation
Poll the next races and what changed while you sleep, then settle against results in the morning.
Every endpoint, its parameters and its credit cost are on the endpoints page; which plans include what is on pricing.
Set PUNTERSEDGE_API_KEY to your key and run either one. Change the time zone to yours.
import os, requests
from datetime import datetime
from zoneinfo import ZoneInfo
API = "https://api.puntersedge.online/v1"
H = {"X-API-Key": os.environ["PUNTERSEDGE_API_KEY"]}
YOU = ZoneInfo("Europe/London") # your own time zone
races = requests.get(f"{API}/racing/next-to-go",
params={"country": "AU", "num_races": 10},
headers=H, timeout=20).json()
for race in races:
jump = datetime.fromisoformat(race["start_time"].replace("Z", "+00:00")).astimezone(YOU)
best = {}
for runner in race["runners"]:
prices = [leg["win_price"] for leg in runner["bookmakers"] if leg.get("win_price")]
if prices:
best[runner["name"]] = max(prices)
fav = min(best, key=best.get) if best else None
print(jump.strftime("%H:%M"), race["venue"], race["race_number"], race["category"],
fav, best.get(fav))Every start_time is UTC; the conversion is one line. The best win price per runner is the highest any bookmaker shows.
const API = "https://api.puntersedge.online/v1";
const res = await fetch(`${API}/racing/next-to-go?country=AU&num_races=10`, {
headers: { "X-API-Key": process.env.PUNTERSEDGE_API_KEY },
});
const races = await res.json();
for (const race of races) {
const jump = new Date(race.start_time).toLocaleTimeString("en-GB", {
timeZone: "Europe/London", hour: "2-digit", minute: "2-digit",
});
const ages = race.runners.flatMap((r) => r.bookmakers.map((b) => b.age_seconds));
console.log(jump, race.venue, race.race_number,
`${race.runners.length} runners`, `oldest quote ${Math.max(...ages)}s`);
}Every bookmaker price carries age_seconds: how long ago we read it from that bookmaker.
Plans are billed in Australian dollars; the US dollar, pound and euro figures are approximate, at the European Central Bank's euro reference rate for 6 November 2026, and your card issuer converts at its own rate. A free key carries 3,000 credits a month with no card. What you may do with the data follows your plan: personal use on Free, Hobby and Standard; display with attribution on Plus; commercial use on Business; redistribution on Platform and Scale. The full wording is section 8.1 of the terms.
A next-to-go call costs the same whatever it returns, so one call for the whole Australian card is priced as one call. Pricing, allowances and the licence summary on this page are rendered from the live plan catalogue.
Yes. The API answers over HTTPS from any country, and a free key needs no card. Paid plans are billed by card in Australian dollars; the figures in other currencies on this page are approximate.
UTC, as ISO 8601 with a Z, in every response. Convert to your own zone in your code; both examples on this page do.
Australian bookmakers whose public prices we read. The full list, with how many races each one quoted in the last 7 days, is on the coverage report at puntersedge.online/coverage-report.
No. Exchange prices are not in any customer response. Traders who work the exchange line our bookmaker prices up against their own exchange feed by race and runner.
They are the prices each bookmaker displays, with the time we read them. We are not affiliated with any bookmaker or racing body. Where results come from is set out at puntersedge.online/results-methodology.
It depends on the plan. What each plan's licence allows is set out in section 8.1 of the terms, and summarised under each plan on this page.
A free key reaches the live Australian board, results and the bookmakers' prices, with no card.
Get a free key