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

API reference / Sports

GET /v1/sports/{sport_key}/odds

Get odds by sport

Parameters: sport_key selects the sport (for example afl or nrl); markets is a comma-separated list such as h2h,spreads,totals; bookmakers optionally filters bookmaker keys; oddsFormat accepts decimal or american. `markets` is deduplicated and validated before billing, so a repeated market is charged once and an unknown one is a free 422 rather than a paid empty list. There is no racing sport_key. For horse, harness or greyhound racing use GET /v1/racing/next-to-go (2 credits) or GET /v1/racing/events instead — passing 'horse-racing' here returns 404, because racing is a separate endpoint family.

Requires X-API-Key 1 credit per requested market

Request

curl 'https://api.puntersedge.online/v1/sports/afl/odds' \
  -H 'X-API-Key: YOUR_KEY'

Parameters

NameIn TypeRequired Description
sport_key path string yes
markets query string no Comma-separated: h2h,spreads,totals
bookmakers query string no Comma-separated bookmaker keys, or omit for all
competition query string no Filter to one competition, case-insensitive exact match (e.g. NRLW). A value this sport has never carried is a 422 listing the ones it has, not an empty 200 — see `include_unknown_competition` for why that distinction matters. See the `competition` field on each event.
include_unknown_competition query boolean no When filtering by `competition`, ALSO return events whose competition is null — not every bookmaker supplies one, and on some sports most of the card is unlabelled (ncaaf 40 of 47 upcoming events, tennis_atp 21 of 72). Because of this the filter is 'this competition OR unlabelled', so a result set is not proof that the competition matched anything: an unrecognised value is rejected with 422 rather than answering with the unlabelled events alone. Set false for a strict exact match that returns only events explicitly labelled with this competition.
oddsFormat query string no decimal or american
maxAgeMinutes query integer no Exclude bookmaker markets older than this many minutes; default 360 allows 3-hour supplemental feeds while hiding multi-day stale prices.

Responses

Status codes: 200, 401, 402, 422, 429, 500. Response bodies are JSON; the full schema is in /openapi.json.

Related endpoints

Try it against live data

The free tier needs no credit card, and the sandbox endpoints need no key at all.

Get a free API key Quickstart
This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.