FEED LIVE SESSION 00:00:00 UTC SOURCE BETFAIR EXCHANGE
TRANSPORT REST / WEBSOCKET FEEDS LIVE + PREMATCH V1
Back and lay prices, with the size behind them

Real-time Betfair
exchange odds,
as an API

Live and prematch exchange markets over REST and an optional WebSocket push stream. Plain JSON, one credential, and freshness stated on every single response — never implied.

Read the docs

No Betfair account, no app key, no exchange session. Your API key is your login.

Live stale after
15s
Prematch push
~10s
Peak rate
30/s
Feeds
2
livemap.json GET /betfair/v1/livemap
// GET /betfair/v1/livemap?feed=live&sports=soccer
{ "meta": { "feed": "live", "seq": 18422,
            "stale": false, "age_ms": 1180,
            "event_count": 312 },
  "liveMap": {
    "34627115": {
      "team1": "Arsenal", "team2": "Chelsea",
      "sport": "soccer",
      "tournament": "Premier League",
      "openTimestamp": "2026-08-15T19:00:00Z",
      "markets": [
        { "marketId": "1.248817",
          "name": "Match Odds",
          "runner": "Arsenal", "runnerId": 1,
          "backOdds": 1.94, "backSize": 1200,
          "layOdds": 1.96, "laySize": 900 },
        /* … one entry per runner … */
      ] } } }
stream frame WS /betfair/v1/stream
// inbound after subscribe — changed events only
{ "type": "update", "feed": "live",
  "meta": { "seq": 18423, "age_ms": 140, "stale": false },
  "changed": { /* eventId -> event */ },
  "removed": [] }
Live feedPrematch feedBack & layMarket sizes Events indexSingle eventSport filterGzip Seq cursorStaleness metaWebSocket pushCrypto billing

MODULE 01 — What ships with the key

Eight subsystems.
One credential.

Both feeds and every market carried on them ship with every plan. Plans differ in request rate and push access — never in what the data contains.

F/01Transport

Exchange prices over REST

One GET returns the whole board. /livemap for the full snapshot, /events for a cheap index, /events/{id} for a single fixture.

F/02Depth

Back and lay, with size

Every runner carries backOdds and layOdds plus the backSize and laySize sitting behind them — the spread and the liquidity, not just a mid price.

F/03Coverage

Live and prematch

Two independent feeds on one key, selected with ?feed=live or ?feed=prematch. Omit it and you get live — only an unrecognised value is an error.

F/04+$99/mo

WebSocket push stream

Snapshot on subscribe, then only what changed. Included in Pro + WS and Scale, or added to a plain Pro plan. Details ↓

F/05Freshness

Staleness is explicit

Every response carries meta.age_ms and meta.stale. Live is flagged after 15 s, prematch after 120 s. You never have to guess whether a price is current.

F/06Filtering

Filter and compress

Narrow the board to the sports you trade with ?sports=, and take the snapshot gzipped — the server compresses once per sequence and shares it across callers.

F/07Limits

Rate-limited per key

10 requests/second on Pro, 30 on Scale, with no monthly call ceiling to plan around. One concurrent WebSocket connection per key, on every plan.

F/08Billing

Crypto billing

BTC, ETH, USDT, TRX and more through NOWPayments. No cards, no auto-renew, no payment details sitting in someone's database.

MODULE 02 — Wire up in four lines

Plain HTTP. Nothing to install.

poll_livemap.py
# pip install requests
import requests

H = {"x-portal-apikey": "YOUR_KEY"}
r = requests.get("https://betfair-odds.com/betfair/v1/livemap",
                 params={"feed": "live", "sports": "soccer"},
                 headers=H).json()

for ev_id, ev in r["liveMap"].items():
    for m in ev["markets"]:
        print(ev["team1"], "v", ev["team2"],
              m["runner"], m["backOdds"], "/", m["layOdds"])
Endpoints betfair-odds.com
GET/betfair/v1/livemapfull snapshot
GET/betfair/v1/eventsindex
GET/betfair/v1/events/{id}one event
GET/betfair/v1/meentitlements
GET/betfair/v1/healthno auth
WS/betfair/v1/streampush feed
Auth

> x-portal-apikey: KEY
> x-api-key: KEY
> ?key=KEY

Any of the three works on every REST call. The same key authenticates the WebSocket stream.

?feed= takes live or prematch and defaults to live. Lapsed key? /me still answers and tells you why.

Add-on

WebSocket push stream

Stop polling. Authenticate, subscribe to the feeds and sports you care about, and take a snapshot followed by every change as it lands. Large snapshots arrive chunked at 512 KB carrying seq and final, so a client with a modest message limit never gets dropped mid-board — and a snapshot small enough to fit in one frame carries neither, so absence of seq means complete.

Included in Pro + WS and Scale. Sold separately only for adding push to a plain Pro plan — you are never billed for it twice. One concurrent connection per key.

+$99/ month
wss://…/betfair/v1/stream — handshake
// within 10s of connecting
→ { "action": "authenticate", "apiKey": "KEY" }
← { "type": "authenticated", "tier": "scale" }

→ { "action": "subscribe",
    "feeds": ["live", "prematch"],
    "sports": ["soccer"] }
← { "type": "subscribed", "feed": "live" }

← { "type": "snapshot", "feed": "live", "liveMap": {…} }
← { "type": "update", "changed": {…}, "removed": [] }
← { "type": "ping", "buffered_max_bytes": 0 }
→ { "action": "pong" }

Subscribe per feed

feeds takes live, prematch or both on one socket. unsubscribe drops a feed without tearing the connection down.

Subscribe per sport

Optional sports filter narrows the push to what you trade, so a soccer-only client never pays to receive the rest of the board.

Backpressure you can see

Every ping carries buffered_max_bytes — the highest send backlog since the last ping. Climbing across pings means your read loop is falling behind.

Protocol + example clients $99/MO ON PLAIN PRO · ALREADY INCLUDED IN PRO + WS AND SCALE · ONE CONNECTION PER KEY

MODULE 03 — Terms

Simple, honest pricing

Every paid plan carries both feeds, every market on them, back and lay with sizes, and the dashboard with its usage graph. You are buying throughput and push access — never a thinner feed.

Pro
$99
per month
Rate 10 req/s · unlimited volume
  • Live + prematch REST
  • Back and lay with sizes
  • Sport filtering + gzip
  • Dashboard + usage graph
  • WebSocket stream (+$99/mo)
Most taken Pro + WS
$149
per month
Rate 10 req/s · unlimited volume
  • Everything in Pro
  • WebSocket push stream
  • One concurrent connection
  • $49 cheaper than Pro + add-on
  • Dashboard + usage graph
Scale
$229
per month
Rate 30 req/s · unlimited volume
  • Everything in Pro + WS
  • Three times the request rate
  • Highest throughput tier
  • One concurrent connection
  • Priority Telegram support
WEBSOCKET ADD-ON +$99/MO — ONLY NEEDED ON A PLAIN PRO PLAN. ONE CONCURRENT WEBSOCKET CONNECTION PER KEY, EVERY PLAN. ALL PRICES USD PAID IN BTC / ETH / USDT / TRX VIA NOWPAYMENTS — NO AUTO-RENEW NO SELF-SERVE TRIAL — ASK ON TELEGRAM FOR A DEMO.
30%

Refer a customer — earn 30% of every payment they make

Forever, not just the first invoice. Renewals, upgrades, plan changes, all of it. Payouts in crypto, bank or PayPal once your unpaid balance reaches $50. If you run a tool, a community or a screen, your users are already asking where the prices come from.

  • Your link is ready the moment you sign up — find it in your dashboard
  • Track signups and earnings in real time
  • No vesting, no clawback, no cap on customers referred
  • Works whether you're a power user, an integrator or a creator
Open dashboard

MODULE 04 — Query log

Questions people actually ask.

What is the Betfair Odds API?
A real-time feed of Betfair exchange prices, resold as a developer API. You get back and lay odds with the sizes behind them, across live and prematch markets, over REST snapshots and an optional WebSocket push stream — as plain JSON, with no scraping on your side.
Do I need a Betfair account?
No. Your API key is the only credential you hold, and it doubles as your login to the dashboard. There is no Betfair login, no app key and no exchange session to keep alive.
How fresh is the data?
Live refreshes on a push cadence of roughly a couple of seconds; prematch refreshes about every ten seconds. Freshness is never implied — every response carries meta.age_ms and meta.stale, live is flagged stale after 15 s and prematch after 120 s, and GET /betfair/v1/health reports both feeds without a key.
Is there a free trial?
Not self-serve. Creating an account and getting your API key costs nothing, but Betfair access starts when you pick a plan. Demo access is granted manually by us — ask on Telegram with the email on your account and we'll enable it.
What does it cost, and how do I pay?
Pro is $99/mo at 10 req/s, Pro + WS is $149/mo with the push stream, Scale is $229/mo at 30 req/s with the stream included. Quarterly terms cost less per month. Payment is crypto through NOWPayments — BTC, ETH, USDT and others — with no auto-renew.

Point your BASE_URL here.

One key, one connection, and exchange prices with the liquidity behind them. Create an account in seconds — no Betfair login, no card on file.

Read the docs Telegram support

REST + WEBSOCKET · LIVE + PREMATCH · BACK AND LAY WITH SIZES