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 oddID grammar names the period, entity and stat; results.{periodID}.{statEntityID}.{statID} is where the outcome lands.
  • Flags say when to grade. started, ended and status.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, results is 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

CapabilitySockOddsbuilding settlement yourself
Result dataresults on the event, retainedA second results API
When to gradestatus.finalized and per-market flagsPoll a separate feed
Odds + result joinSame object, same idMatch by team name and time
Grading logicCompare the stat to the lineSame maths after joining two feeds
Market identityOne oddID across booksReconcile 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.