Skip to the study

How fresh are sportsbook odds?

We sampled 5,033 available odds-change captures from 20 bookmaker sources over seven days. We measured source observation to API ingest, not the age of every quote a customer sees.

9smedian recorded source-to-ingest age

Available changes, 20–26 September UTC. Read the method

Most changes were under a minute

At P95, the recorded source-to-ingest interval was 37 seconds; at P99, 92 seconds. 98.3% of sampled available captures were within 60 seconds.

These are odds changes observed by our sources and then ingested by the API. The study does not measure when a bookmaker first published a price or how old an unchanged quote is when you read it.

Recorded age at ingest across 5,033 sampled available captures
Median
9s
P95
37s
P99
92s

Which clock did we measure?

We measured the interval from the recorded source observation to API ingest. Publication and client read time sit outside it.

  1. Bookmaker publishes a price.We do not have a verified publication timestamp for every quote.
  2. Our source observes it.The archive carries source_ts, which may come from different upstream timestamp fields.
  3. Our API ingests the change.The archive records ingest_ts. This study measures this interval from step 2.
  4. Your application reads it.Poll timing, streaming, caching and unchanged prices affect what you see. This study did not sample client reads.

All charts use ingest_ts − source_ts for captures marked available. The bookmaker refresh-rate guide covers polling policy, a different measurement.

The daily tail moved from 28 to 64 seconds

The daily P95 ranged from 28 to 64 seconds. The highest sampled day was 23 September; the next day was 46 seconds. One day is a lead for investigation, not evidence of a lasting slowdown.

Daily P95 source-to-ingest age, available changed odds
Daily 95th percentile age across seven days 20 September 44 seconds, 21 September 28, 22 September 42, 23 September 64, 24 September 46, 25 September 32, 26 September 28. 0s20s40s60s 44s20 Sep28s21 Sep42s22 Sep64s23 Sep46s24 Sep32s25 Sep28s26 Sep
Date, UTCP95MedianWithin 60sCaptures
2026-09-2044s10s98.5%741
2026-09-2128s9s99.9%728
2026-09-2242s11s98.0%725
2026-09-2364s14s94.3%653
2026-09-2446s14s97.9%713
2026-09-2532s9s99.6%717
2026-09-2628s4s98.2%756

20 bookmaker sources, one uneven week

Unibet had the longest sampled tail: 250 seconds at P95. Most other source rows were below 60 seconds. Sport and event coverage differed, so the rows describe this sample rather than rank bookmakers by speed.

Source-to-ingest age by bookmaker20–26 September UTC · available changes · seconds
Bookmaker sourceCapturesMedianP95 ageWithin 60sCoverage
BetRight 310 9s 35s 98.6% 35/35
TAB 298 6s 22s 99.7% 35/35
William Hill 290 15s 47s 97.7% 35/35
Ladbrokes 289 6s 43s 96.1% 35/35
PointsBet 287 6s 25s 99.8% 34/35
Sportsbet 275 9s 51s 96.9% 35/35
Unibet 272 8s 250s 88.4% 35/35
TABtouch 271 7s 30s 99.8% 35/35
Bet365 267 11s 39s 98.5% 35/35
888sport 264 9s 33s 98.6% 33/35
Pinnacle 262 6s 23s 100.0% 28/35
BetOnline 261 10s 27s 99.1% 28/35
FanDuel 260 7s 29s 99.1% 35/35
DraftKings 245 12s 35s 99.2% 28/35
BetRivers 242 9s 28s 98.2% 28/35
Ladbrokes UK 240 12s 46s 97.7% 28/35
Betfred 215 6s 27s 100.0% 21/35
BetMGM 183 7s 21s 100.0% 21/35
Caesars 180 20s 53s 97.5% 21/35
Betway 122 6s 33s 100.0% 14/35

Sorted by sample size. Coverage is nonempty day × sport combinations out of 35. Ladbrokes and Ladbrokes UK are separate source identities, not separate corporate operators. This table is not a fastest-bookmaker ranking. See the bookmaker directory for current coverage.

Baseball had the longest tail

Baseball's sampled P95 was 51 seconds. The other four sports ranged from 29 to 39 seconds. MLB and Japan NPB contributed to the longer baseball tail, but sport mix and bookmaker mix overlap.

SportP95 ageMedianWithin 60sCaptures
Baseball
51s
9s96.3%994
American football
39s
9s98.6%1230
Soccer
35s
8s99.1%1266
Basketball
34s
8s99.1%1123
Australian rules
29s
8s99.9%420

At league level, MLB had 790 sampled available captures and a 51-second P95. NFL had 620 and a 45-second P95. NCAAF had 562 and a 28-second P95. Smaller league samples can swing sharply, so we would not build a league ranking from one week.

Player props had a 42-second P95

Player-prop-containing captures had a 42-second P95. Spread/handicap captures were at 34 seconds and game totals at 36. Those captures can share one timestamp across several market types. This is a difference in the sampled mix, not proof that the player-prop pipeline runs slower.

Market familyCaptures containing marketMedianP95 ageWithin 60s
Game total32969s36s98.6%
Spread / handicap32028s34s98.9%
Moneyline26219s37s98.7%
Three-way moneyline21739s39s98.3%
Team total21738s35s98.8%
Player prop18569s42s98.3%
Both teams to score4287s31s99.3%
Big win / little win3279s32s99.4%

Market counts overlap. One ingest capture can contain a moneyline, spread, total and prop. They cannot be added to get a total capture count.

Where the long tail sat

Unibet had 18 sampled available captures over 60 seconds. Eleven fell on 26 September. Eight of the 18 were MLB; the three longest MLB captures on the 26th were 586, 560 and 551 seconds.

Sportsbet had eight captures over 60 seconds; four were Japan NPB. Its longest available capture was 431 seconds. Those are concrete places to inspect source timestamps and ingest logs. The archive alone cannot tell us whether a delay happened at the bookmaker, during collection, or because the upstream timestamp means something different.

Suspended markets can mislead a freshness chart.

We excluded captures marked unavailable. They can retain an older source timestamp when availability changes. Putting them in the available-price distribution would make the tail look worse for the wrong reason.

Method and data

We sampled the odds-change archive for 20 bookmaker source identities, five sports and seven complete UTC days, 20–26 September 2026. The 700 day × sport × book combinations contained 128,691 archive blobs; 599 combinations had data. We randomly selected up to eight blobs from each combination with a fixed seed, for 4,629 sampled blobs.

Those blobs held 372,209 changed-odds rows. We grouped selection rows from the same ingest into capture records, kept the 5,033 sampled captures marked available, and measured ingest_ts − source_ts. Each capture was weighted by the number of blobs in its day × sport × book combination divided by the number sampled there. The unweighted check was close: 10-second median, 38-second P95 and 98.3% within 60 seconds.

The archive stores semantic changes, not every scrape or unchanged price. The source timestamp can originate from several upstream fields. Event start time was absent from the sampled rows, so we could not independently check prematch status for each row. Coverage varies by book and sport. A longer matched-event study would be needed before comparing bookmaker performance.

Stable data URL: https://odds-api.net/static/data/odds-freshness-2026-09-20-26.json

What developers can use

Use this as evidence about one ingest stage. In your own product, read an event odds snapshot, retain as_of_ts_ms as its assembly time, and apply your own age threshold. Assembly time is not proof of a bookmaker price's age. If you need changes as they arrive, take a snapshot and follow the SSE or WebSocket stream. The transport cannot make an upstream observation fresher; it can cut the wait after ingest.

The next study we want is a scheduled client-read sample that also records unchanged quotes. That would answer the broader question in this headline more directly. Until then, nine seconds means observed source timestamp to ingest for available changed odds in this sample. No more, no less.