Paid tiers only — 403 on Free and Hobby. Snapshots of one market, newest first, 500 per page (`offset`), each about ten minutes apart per bookmaker and only while the fixture has not started — so the last snapshot before `commence_time` is the closing price, and /v1/sports/{sport_key}/closing-lines returns that row per book with the consensus already worked out. `home_point`/`away_point` are the line the prices are attached to: each side's handicap on the spreads market (-6.5 / +6.5) and the total on the totals market, where Over is stored as the home side and Under as the away side. Lines exist from 2026-09-29; rows recorded before that carry prices only. AFL and AFLW history is kept permanently; every other sport is a rolling 90-day window. An unknown `sport_key`, or a date range that runs backwards, returns an error and costs nothing.
X-API-Key
5 credits
curl 'https://api.puntersedge.online/v1/sports/afl/odds/history' \
-H 'X-API-Key: YOUR_KEY'
| Name | In | Type | Required | Description |
|---|---|---|---|---|
sport_key |
path | string | yes | |
from |
query | string | no | ISO date/time; defaults to 7 days ago |
to |
query | string | no | ISO date/time; defaults to now |
bookmakers |
query | string | no | Comma-separated bookmaker keys, case-insensitive. An unrecognised key is a free 422 naming the valid keys, so a typo costs nothing — it used to return a billed empty response. |
market |
query | string | no | Market type: h2h (default), spreads or totals. |
offset |
query | integer | no |
Status codes: 200, 401, 402, 422, 429, 500. Response bodies are JSON; the full schema is in /openapi.json.
200 application/json
— this call costs 5 credits.
Field names and types are as the API returns them; values are a real sample, trimmed to a few items.
[
{
"event_id": "4b84fde7-7054-40db-a37f-ae05c9705549",
"home_team": "Souths",
"away_team": "Newcastle",
"sport_key": "nrl",
"snapshots": [
{
"recorded_at": "2026-09-07T00:43:24Z",
"bookmaker": "tab",
"home_price": 1.4,
"draw_price": null,
"away_price": 3.0,
"home_point": null,
"away_point": null
},
{
"recorded_at": "2026-09-07T00:43:24Z",
"bookmaker": "ladbrokes_au",
"home_price": 1.4,
"draw_price": null,
"away_price": 3.0,
"home_point": null,
"away_point": null
},
{
"recorded_at": "2026-09-06T22:13:09Z",
"bookmaker": "tab",
"home_price": 1.42,
"draw_price": null,
"away_price": 2.9,
"home_point": null,
"away_point": null
}
]
},
{
"event_id": "ad025e01-04fa-4d79-ae7f-fe756d1a55e7",
"home_team": "Philadelphia Eagles",
"away_team": "Los Angeles Rams",
"sport_key": "nfl",
"snapshots": [
{
"recorded_at": "2026-09-29T04:24:46.464555Z",
"bookmaker": "sportsbet",
"home_price": 1.93,
"draw_price": null,
"away_price": 1.87,
"home_point": 46.5,
"away_point": 46.5
},
{
"recorded_at": "2026-09-29T04:14:29.916138Z",
"bookmaker": "sportsbet",
"home_price": 1.93,
"draw_price": null,
"away_price": 1.87,
"home_point": 46.5,
"away_point": 46.5
}
]
}
]
GET /v1/sports — List available sportsGET /v1/sports/{sport_key}/closing-lines — Closing price and line per bookmaker, with the consensusGET /v1/sports/{sport_key}/odds — Get odds by sportGET /v1/sports/{sport_key}/odds/movements — Price movement feedThe free tier needs no credit card, and the sandbox endpoints need no key at all.
Get a free API key Quickstart