Odds API for Bet Tracking & Settlement
A bet tracking and settlement API: grade bets from results and the started/ended/finalized flags. Odds and results arrive in one feed.
A bet tracker needs the odds at bet time and the outcome afterwards, joined without ambiguity. SockOdds keeps both in one object: store the eventID and oddID when the bet is placed, refetch when status.finalized flips, and grade from results. Finished events are retained, so the refetch always works.
Why build your settlement on SockOdds
- One id joins odds and results. The
oddIDgrammar names the period, entity and stat;results.{periodID}.{statEntityID}.{statID}is where the outcome lands. - Flags say when to grade.
started,endedandstatus.finalized. - scoringSupported per market. You know in advance which markets the source can grade.
- Retained events. The event you bet on is still there after the final siren.
- Honest gaps. Where a source does not carry results,
resultsis empty rather than guessed.
How a bet tracker grades with our data
Store the ticket at bet time
Save eventID, oddID, the book, the price and the line.
Refetch finalized events
/events?eventID=… and check status.finalized.
Grade from results
Read the stat for the market's grammar and compare with the line; see handling odds.
Example request
curl "https://api.sockodds.com/v2/events/?eventID=afl_2026-09-03_fremantle_vs_hawthorn" \
-H "x-api-key: YOUR_API_KEY"A retained, finished event: status, results and the last odds seen.
{
"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 settlement yourself
| Capability | SockOdds | building settlement yourself |
|---|---|---|
| Result data | results on the event, retained | A second results API |
| When to grade | status.finalized and per-market flags | Poll a separate feed |
| Odds + result join | Same object, same id | Match by team name and time |
| Grading logic | Compare the stat to the line | Same maths after joining two feeds |
| Market identity | One oddID across books | Reconcile per source |
Frequently asked questions
What is a bet settlement API?
A feed that returns the outcome needed to grade a bet next to the odds it was placed at.
How do I auto-grade a bet?
When status.finalized is true, read results.{periodID}.{statEntityID}.{statID} and compare with the line.
Which bet types can be settled?
Any market with scoringSupported: true whose event has results.
Do I need a separate results API?
No, where the source carries results; the feed says when it doesn't.
Can I track closing line value?
Snapshot the last price before kick-off yourself; the feed retains the event.
How do I know when a bet can be graded?
status.finalized.Related use cases
- 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..
- Historical Odds Data API: Finished events are never pruned from the feed, so an odds archive of every Australian book starts the day you start pulling..
- Odds Data API for Sports Betting Models & Backtesting: Sports betting machine learning data API with retained events, no-vig fair odds labels, and results for training and backtesting models on AFL, NRL and more..
- 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.