OddsBenchBenchmarkMethodologyRunsBest valueBy sportsbookFAQAboutData

Methodology

Version 1.2 · applies to run 2026-09 onward · methodology

Every provider is measured with the same open-source probe, from the same two servers, over the same 7-day window, against the same reference events. We publish per-provider summary statistics — percentiles, error rate and sample size — as CSV and JSON for every run, so each figure can be checked against the file it comes from.

How providers are selected

What we measure

Line-change latency (primary metric)
Time from a sportsbook changing a price to that new price being observable in the provider's feed. Detection: an independent reference probe watches the sportsbook's own public odds surface for the reference event set. When a price changes, we record T0. Each provider feed is then watched for the first message or poll response containing the same new price for the same market; that is T1. Latency = T1 − T0. Changes not seen in a provider feed within 120 s are counted as missed and excluded from percentiles but reported in the error rate.
Response time
For REST: request sent → last byte of a valid JSON body, connection reused (warm). For SSE/WebSocket: initial handshake to first data frame. Not applicable to AMQP push feeds. Cold-connection TTFB is recorded in the raw data but not shown in the headline table.
Value score eligibility
Value score = line-change p95 (ms) × monthly price of the cheapest compliant unlimited push tier ($) ÷ 1,000, lower is better. A feed is only ranked when its measured p95 is 1,000 ms or better and the priced tier carries every sportsbook the vendor advertises for that product. Subset tiers are published with their scope and excluded from the ranking; so are feeds too slow to be used for in-play alerts.
Live in-play / Pre-match / Neither
Whether the measured feed carries odds while an event is running. Live = in-play line changes observed. Pre-match = the vendor states no in-play coverage, so only pre-match markets were measured. Neither = the product carries no odds feed of its own (props, picks or affiliate products).
Unlimited real-time push (price column)
The vendor's published monthly price for the widest self-serve tier that includes an unmetered WebSocket or SSE stream of live line changes, with any required add-on summed. A dash means no compliant plan is published: REST-only, credit- or stream-hour metered, pre-match only at every push tier, enterprise/quote-only, or no unlimited tier at all. scope-limited marks a published price whose tier carries only part of the vendor's advertised book list; those rows keep their price, state the scope, and are excluded from the value ranking.
Value score eligibility
A priced feed is ranked only when its measured line-change p95 is 1,000 ms or better and its priced tier carries every book the vendor advertises. A cheap price on a feed that cannot track a line move, or that covers a fraction of the books, is not a value claim.
Error rate
Share of probes or expected messages that timed out (>10 s), returned 5xx, returned malformed JSON, or missed a reference line change. Reported per vantage.

How we test

Known limitations

Changes