18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware

PuntersEdge Developers

Integrate the PuntersEdge Odds API

Everything needed to make a first authenticated call: what the API serves, how keys work, a working request in curl and in the official Python client, and the machine-readable schema. Australian racing and sports odds as JSON over plain HTTPS — no SDK required, and no credit card to start.

What the API serves

One REST/JSON interface over live and historical bookmaker prices: thoroughbred, harness and greyhound racing — including a next-to-go endpoint built for Australian cards — plus head-to-head, line and totals markets across the sports the Australian books price. Best-price comparison and cross-book arbitrage detection are computed server-side and returned as fields, so a client does not have to fan out and reconcile books itself.

Base URLhttps://api.puntersedge.online/v1
ProtocolHTTPS, REST, JSON responses throughout
AuthenticationAn X-API-Key request header
Interactive docsapi.puntersedge.online/docs
OpenAPI schemaapi.puntersedge.online/openapi.json
Python clientpip install puntersedgePyPI
MCP serverpip install puntersedge-mcpsetup for Claude, Cursor and other hosts
Node.jsbuilt-in fetch, no package — quickstart

Bookmaker coverage is measured rather than asserted: which books quote what, and how many of them quote a given race, is recomputed every 30 minutes and republished with its own timestamp and the SQL behind it at /coverage-report.json (human version). Read that instead of any figure quoted on a marketing page, including ours. Per-sport book counts are tabulated at /api/coverage.

Try it before signing up

Three endpoints need no key and return live data, so this page can be verified rather than trusted:

curl 'https://api.puntersedge.online/v1/demo/racing/next-to-go'
curl 'https://api.puntersedge.online/v1/demo/best-odds'
curl 'https://api.puntersedge.online/v1/uptime'

The first returns upcoming races with each bookmaker's price per runner; the second the best price per selection across books with an arbitrage flag; the third public availability statistics.

Authentication and the free tier

Every non-demo endpoint takes an X-API-Key header. There is no OAuth flow, no token exchange and no signing step — the key is the credential, so keep it server-side.

Sign up at /api. A verification link is emailed; clicking it activates the key immediately and sends it to you. No credit card is involved. The free tier allows 1,500 credits per month at 30 requests/minute. Requests are metered in credits rather than calls, because a call that returns one race and a call that returns a full card are not the same amount of work. Every authenticated response — including error responses — carries X-Credits-Cost alongside X-Credits-Used, X-Credits-Limit and X-Credits-Remaining, so a client can meter itself from the headers instead of modelling the price list. The per-endpoint table is on /api/pricing and in /llms-full.txt. The demo endpoints above are free and carry no credit headers.

Quickstart — curl

Pass the key as a header. Responses are JSON with no envelope.

# Next races to jump, with every book's price per runner
curl -H "X-API-Key: $PUNTERSEDGE_API_KEY" \
  "https://api.puntersedge.online/v1/racing/next-to-go?num_races=5&categories=horse"

# Best price per selection across books, with arbitrage detection
curl -H "X-API-Key: $PUNTERSEDGE_API_KEY" \
  "https://api.puntersedge.online/v1/best-odds/nrl"

# Head-to-head odds for one sport
curl -H "X-API-Key: $PUNTERSEDGE_API_KEY" \
  "https://api.puntersedge.online/v1/sports/afl/odds?markets=h2h"

An unrecognised bookmaker key returns a free 422 that lists the valid ones, so a filter can be discovered without spending credits or reading docs. Per- endpoint request and response shapes for all of them are enumerated from the live schema in /llms-full.txt, and worked samples in three languages are on /api/examples.

Quickstart — Python

The official client wraps the same endpoints and reads PUNTERSEDGE_API_KEY from the environment, so a key never has to appear in source. It is optional: the API is plain REST and the curl calls above are the whole contract.

pip install puntersedge
from puntersedge import PuntersEdge

pe = PuntersEdge()  # reads PUNTERSEDGE_API_KEY

# Which sports are live right now
for sport in pe.sports():
    print(sport["key"], "-", sport["title"])

# Best available price per selection across every covered book
for event in pe.best_odds("nrl"):
    for sel in event["selections"]:
        print(sel["name"], sel["best_price"], "@", sel["best_bookmaker"])

# Next races to jump
for race in pe.racing_next_to_go(categories="horse,greyhound"):
    print(race["venue"], race["race_number"], race["start_time"])

Handling the two errors that matter

from puntersedge import PuntersEdge, AuthenticationError, RateLimitError

pe = PuntersEdge()
try:
    pe.best_odds("nrl")
except AuthenticationError:
    ...  # key missing, wrong, or not yet verified
except RateLimitError:
    ...  # per-minute rate limit or the monthly credit cap

The package also ships puntersedge-arb, a command-line arbitrage scanner and stake sizer that runs against your own key. It holds no bookmaker credentials and places no bets. Source and full client reference: github.com/Propertyscout001/puntersedge-python.

The schema, and reading it programmatically

The OpenAPI 3 document is served live and is generated from the running application, so it is never out of date with the deployment behind it. Generate a client, drive a test suite, or enumerate the endpoint list from it rather than from prose:

curl -s https://api.puntersedge.online/openapi.json | jq '.paths | keys[]'

Swagger UI renders the same document with a try-it console.

Machine-readable references

For agents, assistants and anything else answering questions about this API without a browser, three files carry the whole answer and each states when it was measured:

Coverage and pricing figures in the first two are read from live sources when the file is served rather than typed into it, so they cannot disagree with the API. Where a figure is quoted anywhere on this site and the JSON report says otherwise, the report is right.

To let an assistant call the API rather than read about it, use the official MCP server (Claude Desktop, Claude Code, Cursor) or import the OpenAPI document above as a custom GPT Action — both are walked through on Use the API from ChatGPT, Claude, Cursor and Copilot.

This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.