Integration GuidesDocs
Coverage MatrixDocumentationChange LogLog InContact Us
Integration Guides

Monitoring Odds Changes

Odds move constantly, but most events' odds are unchanged in any given minute. This page shows how to keep an odds integration current without re-pulling everything: poll the change logs, respect the response cache, and re-pull only what moved.



The Change Log Feeds

Two packages carry a change log; each reports the sport events whose odds changed within a five-minute window, using Unix timestamps:

FeedChange attribute
Sport Event Markets Change Log (Prematch)sport_event_markets_odds_change
Player Props Change Log (Player Props)player_props_odds_change
{
  "generated_at": "2026-07-20T16:30:19+00:00",
  "status": {
    "from": 1784564719,
    "to": 1784565019
  },
  "changes": [
    {
      "type": "sport_event",
      "id": "sr:sport_event:72176810",
      "sport_event_markets_odds_change": 1784565017
    },
    {
      "type": "sport_event",
      "id": "sr:sport_event:66886856",
      "sport_event_markets_odds_change": 1784565017
    },
    {
      "type": "sport_event",
      "id": "sr:sport_event:68096138",
      "sport_event_markets_odds_change": 1784565016
    },
    {
      "type": "sport_event",
      "id": "sr:sport_event:72905560",
      "sport_event_markets_odds_change": 1784565016
    }
  ]
}
{
  "generated_at": "2026-07-20T16:30:28+00:00",
  "status": {
    "from": 1784564728,
    "to": 1784565028
  },
  "changes": [
    {
      "type": "sport_event",
      "id": "sr:sport_event:63303061",
      "player_props_odds_change": 1784565025
    },
    {
      "type": "sport_event",
      "id": "sr:sport_event:63302901",
      "player_props_odds_change": 1784565025
    },
    {
      "type": "sport_event",
      "id": "sr:sport_event:63301693",
      "player_props_odds_change": 1784565024
    },
    {
      "type": "sport_event",
      "id": "sr:sport_event:72529074",
      "player_props_odds_change": 1784565022
    }
  ]
}

The status object bounds the window (from and to, five minutes apart); each change row carries the event ID and the moment its odds last changed inside the window. Both snippets are trimmed to four changes.

The Futures package has no change log; refresh futures by re-polling the futures feeds on a slower cadence (see Tracking Futures Odds). The Live Odds package has none either; poll its event feeds directly while events are in play (see Tracking Live Odds).



The Change-Log Loop

  1. Poll the change log for each package you consume, at least once per five minutes
  2. For each returned sr:sport_event: ID that you track, re-pull that event's markets or props
  3. Events not in the change log need no call at all
Change-Detection LoopPoll the logs, refresh only what changed, reconcile after gaps
PollSport Event Markets Change LogPlayer Props Change Logfive-minute window, Unix timestamps
Branch by package
prematch change: an event's market odds moved → re-pull Sport Event Markets for that ID
props change: an event's prop odds moved → re-pull Sport Event Player Props for that ID
futures: no change log exists → re-poll Competition Futures on its own schedule
Reconcileupdate your cache→poll the next window
Gap longer than 5 minthe window cannot rewind→re-pull every tracked event once, then resume
The change log tells you that an event moved, not what moved; the market payload is always the source of truth.

⚠️

The window does not rewind

A change log covers only the most recent five minutes, and past windows cannot be queried. If your poller is down longer than the window, reconcile by re-pulling your tracked events directly rather than trusting the next change log response to cover the gap.



Cadences and Cache

Feed TTLs and recommended polling cadences for every feed are on the Update Frequencies chart. For this page's loop: poll the change logs every 1 to 5 minutes while you have events in a bettable window (the window is five minutes; polling slower risks missed changes), re-pull markets and props immediately for the events a change log reports, and refresh the discovery and mappings feeds daily.



Reconciliation Rules

  • Treat the change log as a hint, not a ledger: it tells you that an event moved, not what moved; the market payload is always the source of truth
  • On startup or after any outage, re-pull all tracked events once before resuming change-log-driven refresh
  • Use generated_at in each payload to order writes if you process responses concurrently
  • Events stay in the odds feeds for two weeks after they complete; treat a 404 for a previously valid event ID as retirement, and rely on your stored closing lines afterward

Did this page help you?