SockOdds
Bookmaker prices we record ourselves.
Readable keys, recorded history, one REST API.
Australia v New Zealand
| Bookmaker | Australia | New Zealand |
|---|---|---|
| Ladbrokes 07:58:00 UTC | 1.69 | 2.08 |
| PlayUp 07:58:00 UTC | 1.81 | 2.23 |
| Sportsbet 07:58:00 UTC | 1.72 | 2.12 |
| TAB 07:58:00 UTC | 1.77 | 2.18 |
Coverage as of 30 October 2026. Quoted markets vary by game, bookmaker and plan.
One request to get started.
Send your key as a bearer token. Every response is data, meta and links.
curl -sS "https://api.sockodds.com/v1/odds?league=rlwc&markets=winner&limit=1&starts_after=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \
-H "Authorization: Bearer $SOCKODDS_API_KEY"const response = await fetch(`https://api.sockodds.com/v1/odds?league=rlwc&markets=winner&limit=1&starts_after=${new Date().toISOString().slice(0, 19)}Z`, {
headers: { Authorization: `Bearer ${process.env.SOCKODDS_API_KEY}` },
});
console.log(JSON.stringify(await response.json(), null, 2));import json, os, urllib.request
from datetime import datetime, timezone
request = urllib.request.Request(
f"https://api.sockodds.com/v1/odds?league=rlwc&markets=winner&limit=1&starts_after={datetime.now(timezone.utc):%Y-%m-%dT%H:%M:%SZ}",
headers={"Authorization": "Bearer " + os.environ["SOCKODDS_API_KEY"]},
)
with urllib.request.urlopen(request) as response:
print(json.dumps(json.load(response), indent=2))Response from a local copy of the API with invented test prices
{
"data": [
{
"id": "ev_000ckk0zrx33",
"name": "Australia v New Zealand",
"league": {
"key": "rlwc",
"name": "Rugby League World Cup"
},
"scheduled_start": "2026-10-15T09:05:00.000Z",
"status": "scheduled",
"participants": [
{
"role": "away",
"identity": {
"key": "new_zealand_rugby_league",
"name": "New Zealand"
}
},
{
"role": "home",
"identity": {
"key": "australia_rugby_league",
"name": "Australia"
}
}
],
"markets": [
{
"id": "mk_pz0msgze2rqwwktb",
"key": "winner",
"name": "Winner",
"period": "full",
"subject": null,
"alternate": false,
"outcomes": [
{
"id": "oc_nncgcssmzjhyt5pe",
"name": "Australia",
"side": "home",
"line": null,
"prices": [
{
"bookmaker": "playup",
"decimal_odds": 1.81,
"implied_probability": 0.552486,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"bookmaker": "tab",
"decimal_odds": 1.77,
"implied_probability": 0.564972,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"bookmaker": "sportsbet",
"decimal_odds": 1.72,
"implied_probability": 0.581395,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"bookmaker": "ladbrokes",
"decimal_odds": 1.69,
"implied_probability": 0.591716,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
},
{
"id": "oc_cwsr1gda0qcgf03j",
"name": "New Zealand",
"side": "away",
"line": null,
"prices": [
{
"bookmaker": "playup",
"decimal_odds": 2.23,
"implied_probability": 0.44843,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"bookmaker": "tab",
"decimal_odds": 2.18,
"implied_probability": 0.458716,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"bookmaker": "sportsbet",
"decimal_odds": 2.12,
"implied_probability": 0.471698,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
},
{
"bookmaker": "ladbrokes",
"decimal_odds": 2.08,
"implied_probability": 0.480769,
"available": true,
"observed_at": "2026-10-15T07:58:00.000Z"
}
]
}
]
}
]
}
],
"meta": {
"count": 1,
"cursor": null
},
"links": {
"next": null
}
}From the first request
to your next release.
Readable keys you can type, identities that hold across bookmakers, and prices that say when they were seen.
Compare every bookmaker at once.
Each outcome names its bookmaker, its decimal price and when we saw it. A price older than ten minutes is withheld, never shown as current.
Reading pricesSee how the market moved.
On Pro, read every recorded price change for an event, plus opening and closing prices. History goes back to 22 December 2025 for NFL.
History and snapshotsSettle bets from official results.
Results grade each outcome won, lost, void, dead heat, half won or half lost from official sources, market by market.
ResultsStart with the leagues
your customers follow.
AFL Women's, ATP Tour, Bundesliga, UEFA Champions League, English Premier League and La Liga and more, from Australian and global bookmakers, exchanges and prediction markets.
Pre-match first. In-play prices are not a dedicated low-latency product.
Build for free. Grow from there.
2,500 objects a month and 10 requests a minute on the free Developer plan. No card required.