Live & In-Play Betting Odds API
Pre-match lines and live event status across every Australian book, refreshed every couple of minutes, with the honest flags a live product needs.
SockOdds is a pre-match feed with live event state: status.live, started, ended, currentPeriodID and the period flags ride on every event, and prices refresh every ~2 minutes for as long as a book keeps a market open. It is the right feed for a live product that needs to know the state of the game and the last price seen; it is not a sub-second in-play trading feed, and it says so.
Why build your live product on SockOdds
- Live vs pre-match in one schema.
status.startedandstatus.livetell you which is which without a second source. - Per-book freshness. Every
byBookmakerentry carrieslastUpdatedAtandavailable. - Stale is flagged. An event with no source write for 45 minutes is marked
info.stale: true. - Filter to games in progress.
live=trueon the events endpoint. - Honest cadence. ~2 minutes; the streaming endpoint is reserved and answers 501 rather than pretending.
What you can build
A live games feed
Poll /events?live=true and render status and the last price per book.
Line tracking through a game
Diff byBookmaker between polls; keep the snapshots.
Status plus the line
status.currentPeriodID and results where the source has them, next to the odds.
Polling, done properly
The streaming guide shows the poll-and-diff pattern.
Example request
curl "https://api.sockodds.com/v2/events/?live=true&limit=5" \
-H "x-api-key: YOUR_API_KEY"Events in progress with their status and the last price from every book:
{
"eventID": "afl_2026-09-03_fremantle_vs_hawthorn",
"leagueID": "AFL",
"odds": {
"points-all-game-eo-odd": {
"oddID": "points-all-game-eo-odd",
"opposingOddID": "points-all-game-eo-even",
"marketName": "Odd/Even Total Points",
"statID": "points",
"statEntityID": "all",
"periodID": "game",
"betTypeID": "eo",
"sideID": "odd",
"fairOdds": null,
"bookOdds": "-116",
"byBookmaker": {
"unibet": {
"odds": "-115",
"decimal": 1.87,
"available": true
},
"tabtouch": {
"odds": "-118",
"decimal": 1.85,
"available": true
}
}
}
}
}SockOdds vs building a live feed yourself
| Capability | SockOdds | building a live feed yourself |
|---|---|---|
| Live vs pre-match | status.started / live flags in one schema | Track game state across a separate source |
| In-game price updates | byBookmaker with lastUpdatedAt, ~2 min | Poll and diff every book yourself |
| Push delivery | Not offered (501); poll | Stand up a socket layer per book |
| Status with the line | status and results on the event | Join a results API to your odds |
| Books covered | 25 in one call | One integration per book |
Frequently asked questions
What is a live odds API?
A feed of bookmaker prices and event state during a game. SockOdds carries the state and the last price per book at a ~2 minute cadence.
Does it support in-play / in-game odds?
Prices are captured for as long as a book keeps a market open, at the same cadence as pre-match. It is not a low-latency trading feed.
How fast do live odds update?
Every ~2 minutes, with lastUpdatedAt per book.
Do you offer WebSocket streaming?
Not yet. /v2/stream/events answers 501.
Can I get the score alongside live odds?
Where the source carries it, in results and teams.*.score.
Which sports have live status?
Every league in the feed carries status flags.
Related use cases
- Live Scores & Sports Data API: Event status, results and team data across every code Australia follows, with odds in the same schema..
- Odds API for Betting Alert Bots: Build a sports odds alert bot for Discord or Telegram: diff odds across every AU book to detect line moves and push deeplinks to users..
- Sports Odds API for Betting Apps: The sports betting app API with odds from every major Australian bookmaker, event status, results, and click-to-bet deeplinks in a single feed..
- Pricing: plans priced on request rate and scope, including a free Lite tier with no card.
Start building today
Free plan available. Set up in 5 minutes. Scale when you're ready.