Real-time odds infrastructure

Every book on the market, resolved to one line.

OddsAgg aggregates live prices from 50+ bookmakers, exchanges and prediction markets, normalises them into a single schema, and returns the consensus price, the arbitrage and the divergence. Over REST and WebSocket, in under a second.

Feed status
All feeds healthy
Updates today
3,041,882
p99 delivery
412ms
FOOTBALLArsenal v Chelsea1.91
TENNISGrand Slam Final1.90
NBACeltics v Nuggets2.14
NFLChiefs v Bills1.76
PREDICTIONElection — Cand. A2.38
MMAMain Card — Fighter B1.62
CRICKETTest Match Day 33.05
GOLFOpen Champ. — Outright9.50
HORSES14:40 Cheltenham4.33
ICE HOCKEYRangers v Bruins2.05
ESPORTSMajor — Team C1.44
RUGBYSix Nations2.60
BASEBALLYankees v Dodgers1.98
SNOOKERWorld Champ. QF1.33
FOOTBALLArsenal v Chelsea1.91
TENNISGrand Slam Final1.90
NBACeltics v Nuggets2.14
NFLChiefs v Bills1.76
PREDICTIONElection — Cand. A2.38
MMAMain Card — Fighter B1.62
CRICKETTest Match Day 33.05
GOLFOpen Champ. — Outright9.50
HORSES14:40 Cheltenham4.33
ICE HOCKEYRangers v Bruins2.05
ESPORTSMajor — Team C1.44
RUGBYSix Nations2.60
BASEBALLYankees v Dodgers1.98
SNOOKERWorld Champ. QF1.33
50+
Bookmakers & markets
Sportsbooks, exchanges and prediction markets
3M+
Odds updates daily
At-least-once delivery, deduplicated on ingest
30+
Sports covered
Football and tennis through to niche markets
80+
Services in production
Auto-scaled on Kubernetes, health-checked
Platform

Aggregation is the easy part. Knowing what the number means is the product.

Fifty feeds in four different shapes, normalised into one schema, priced against each other, and delivered before the market moves on.

01

Consensus pricing

Rather than another wall of raw prices, every market carries a single consensus line: where the market actually sits. See instantly whether a book is pricing above or below it, and by how much.

  • Bookmakers, exchanges and prediction markets analysed separately so different pricing models don't distort the line
  • Every consensus price carries a confidence score from source count, recency and historic reliability
  • Deviation per book, expressed in both decimal and implied probability
Tennis · contestId 4001
Grand Slam Final — Player A
Live
Consensus
1.96
Implied
51.0%
Confidence
0.91
SourceDeviation from consensus
SB 01
1.90
-3.06%
SB 07
2.02
+3.06%
EX 02
1.97
+0.51%
SB 12
1.88
-4.08%
PM 01
2.06
+5.10%
SB 23
1.93
-1.53%
EX 05
1.95
-0.51%
Best available price 2.06 at PM 01
5.10% over market
02

Arbitrage detection

Prices are monitored continuously across every connected book. When a discrepancy opens a window where backing all outcomes locks in profit regardless of result, it surfaces the moment it appears.

  • Exact profit margin and proportional stake allocation per outcome
  • Confidence rating derived from data quality and staleness
  • Pushed to the WebSocket feed in real time, before the market corrects
03

Prediction market divergence

Bookmakers price to manage liability and margin. Prediction markets price on crowd-sourced probability backed by real capital. When the two disagree, one of them knows something.

  • Continuous comparison of bookmaker consensus against prediction market pricing
  • Configurable divergence thresholds per sport and market type
  • Flagged discrepancies surfaced alongside historic convergence data
04

Sub-second delivery

Pull on demand over REST, or subscribe and receive only what changed. Binary delta updates keep payloads small so your systems stay in step without re-fetching the world.

  • Channel-based WebSocket subscriptions by sport, event or market
  • Binary deltas instead of full snapshots on every tick
  • Queue-backed pipeline that absorbs load through backpressure rather than dropping data
The API

Built to be integrated in an afternoon.

Authenticate with a bearer token, call one endpoint, and get a normalised book. Pull it on a schedule, or hold a socket open and let it push.

GET /v1/odds
curl https://api.oddsagg.com/v1/odds?genre=tennis&perPage=25 \
  -H "Authorization: Bearer $ODDSAGG_API_KEY"

{
  "status": "success",
  "data": {
    "meta": {
      "total": 103,
      "page": 1,
      "perPage": 25,
      "countsByGenre": { "all": 103, "football": 45, "tennis": 58 }
    },
    "contests": [
      {
        "contestId": 4001,
        "name": "Grand Slam Final",
        "runDate": "2026-05-15T18:00:00Z",
        "lastUpdate": "2026-05-14T17:45:00Z",
        "sportbookId": 1,
        "genre": "tennis",
        "status": { "auto": 1, "manual": 1 },
        "participants": [
          {
            "participantId": 7001,
            "name": "Player A",
            "odd": 1.90,
            "previousOdd": 1.85,
            "lastUpdate": "2026-05-14T17:30:00Z",
            "status": 1
          }
        ]
      }
    ]
  },
  "error": null
}

One envelope, always

Every response carries status, data and error. Success and failure have the same shape, so your client has one path to write and one path to test.

Predictable by design

camelCase fields, ISO-8601 timestamps, arrays that map straight into a render, and pagination plus aggregate counts consolidated into a single meta object.

Deltas, not snapshots

Subscribe once and receive only what moved. previousOdd ships alongside every price, so movement is renderable without holding your own history.

Coverage

Four kinds of source. One interface.

Each provider exposes data its own way. That is their problem, handled at ingest, behind a single unified interface. New sources are added without touching the core platform or your integration.

REST polling
Sportsbooks
Tier 1 and regional books
Private APIs
Exchanges
Back and lay, depth included
RabbitMQ
Premium feeds
Licensed data providers
Protocol readers
Prediction markets
Decentralised, on-chain
30+ sports and markets
  • Football
  • Tennis
  • Basketball
  • American Football
  • Baseball
  • Ice Hockey
  • Horse Racing
  • Cricket
  • Golf
  • MMA
  • Boxing
  • Rugby Union
  • Rugby League
  • Snooker
  • Darts
  • Table Tennis
  • Volleyball
  • Handball
  • Esports
  • Cycling
  • Motorsport
  • Athletics
  • Politics
  • Entertainment
  • + more on request
Reliability

Infrastructure you can put in front of money.

Over 80 services in production on Kubernetes, shipped through automated CI/CD with staged rollout and automatic rollback.

Auto-scaling
Capacity is provisioned within seconds under load and scaled back when it passes. Unhealthy instances are replaced without anyone being paged.
No dropped ticks
A queue-backed pipeline absorbs spikes through backpressure rather than shedding data, with at-least-once delivery and dedupe before persistence.
Observed end to end
Every service, queue and feed is monitored, with centralised logging that traces a single price from ingest through to your socket.
Locked down
Bearer auth with role-based access control, per-key metering, network policies, non-root containers and full audit logging.
Access

Three tiers. Priced on what you pull.

Usage is metered per API key, so consumption is visible and billing is straightforward. Tell us the shape of your workload and we will quote against it.

Pro

For single-product teams and independent operators.

  • REST access to odds and consensus pricing
  • Core sports coverage
  • Arbitrage feed, polled
  • 10 req/s, 1 API key
  • Email support
Request access
Most taken

Business

For platforms running live pricing in production.

  • Everything in Pro
  • WebSocket streaming with binary deltas
  • Full sport and market coverage
  • Real-time arbitrage and divergence alerts
  • 100 req/s, 5 API keys, 99.9% uptime target
  • Shared Slack channel
Request access

Enterprise

For operators who need the raw firehose and a contract behind it.

  • Everything in Business
  • Unmetered throughput and custom rate limits
  • Historical odds movement archive
  • Custom feed integrations on request
  • Dedicated infrastructure and SLA
  • Named engineering contact
Talk to us

Volume, historical archive access and custom feed integrations are quoted per engagement. Enterprise agreements include a dedicated environment and an SLA.

Get access

Start with a key, not a sales call.

Tell us what you are building and we will get you onto live data quickly. If the fit is not there, we will say so rather than book a discovery call.

  1. 01
    Tell us the workload

    Sports, markets, whether you need streaming, and rough volume. Two minutes.

  2. 02
    Sandbox key, same week

    A scoped key against live data with the full schema and documentation, so you can integrate before committing.

  3. 03
    Quote against actual usage

    Once you know what you are really pulling, we price it. No guessing up front, no per-seat surprises.

We use these details to scope access and get back to you. Nothing else, and no list.