MQTT WebSocket feed
An authenticated live connection to Pinnacle's own broker. Prices land in ~30–150 ms of the change — not polled on a 10-second loop like other APIs.
Sub-second market data straight off Pinnacle's own broker. Live and prematch, over REST, Server-Sent Events and raw WebSocket — with server-side drop alerts the moment a price falls 1% or more.
Betfair Exchange odds API — live & prematch exchange prices over REST and WebSocket, same terminal-grade feed. From $99/mo.
| SPT | Fixture | P1 | P2 | O/U | Clk |
|---|
MODULE 01 — What ships with the key
Full line depth ships on every plan — quarter lines, every period, team totals. Plans differ in rate limits and push access, never in what the data contains.
An authenticated live connection to Pinnacle's own broker. Prices land in ~30–150 ms of the change — not polled on a 10-second loop like other APIs.
Same response shape as the popular third-party Pinnacle APIs. Swap the BASE_URL and your existing code keeps working — no re-mapping, no rewrite.
12 sports with live markets at full period, spread and total depth. Soccer quarter lines (1.75 / 2.25 / 2.75 / 3.25) and quarter-ball handicaps included.
Per-key usage graph, plan status and subscription management in one panel. Counters refresh every 2 seconds, so you see burn as it happens.
Every Pinnacle MQTT frame plus the prematch REST snapshot, forwarded byte-identical. Subscribe per sport or per event and parse the wire yourself. Details ↓
Entity resolution that maps Pinnacle team and fixture names onto any other bookmaker's. “Man Utd” resolves to “Manchester United”; reversed fixtures get caught. Details ↓
Every new key opens with a 3-day full demo at 10 requests/second, then settles onto the free trial tier at 20 requests/minute — the key never expires. Paid keys run at 10 or 30 requests/second with unlimited total volume — no monthly call ceiling to plan around.
BTC, ETH, USDT, TRX and more through NowPayments. No accounts, no passwords, no card details sitting in someone's database.
MODULE 02 — Wire up in four lines
# pip install pinnodds
from pinnodds import Client, SPORTS
api = Client("YOUR_KEY")
for d in api.stream_drops(min_drop=5):
print(d["home"], "v", d["away"], d["sect"],
d["from_price"], "->", d["to_price"])
// npm install pinnodds
import { Client, SPORTS } from "pinnodds";
const api = new Client(process.env.PINNODDS_KEY);
for await (const d of api.streamDrops({ minDrop: 5 }))
console.log(d);
$ pip install pinnodds
$ npm install pinnodds
Zero-dependency Node client with TypeScript types. Python client is requests-only and fully typed. Reconnects and cursor handling built in.
Specials — player props, exact scores, futures — unlock with include_specials=1.
Add-on
Every Pinnacle MQTT frame and every prematch REST snapshot, forwarded to your socket byte-identical — nothing normalised, nothing dropped, including market opens, closes and settlements. Not the same as /odds-drop SSE: this delivers every frame, no filtering. For power users rebuilding Pinnacle's full state machine on their side.
Available on Pro, Pro + SSE and Scale. Prorated mid-cycle. Not offered on Stream.
+$99/ monthFirehose every event in Soccer, Tennis, Basketball, Hockey, Baseball, MMA, Boxing — or any combination.
Narrow to the specific five matches you're trading. Up to 200 events per stream. Snapshot plus live updates.
The rec and data fields pass through untouched. Your existing Pinnacle parser works as-is.
// connect
wss://pinnodds.com/ws/feed?key=$API_KEY
// subscribe
{ "type": "subscribe",
"streams": ["live", "prematch"],
"sport_ids": [1, 2], // Soccer + Tennis firehose
"event_ids": [1631005165] // plus this specific match
}
// receive (every frame, untouched)
{ "type": "live", "sport_id": 1,
"topic": "matchups/reg/sp/29/live/ld",
"op": "upd",
"rec": { /* full Pinnacle record, byte-identical */ } }
SportsMeld
An entity-resolution API that maps Pinnacle team and fixture names onto any other bookmaker's naming. It knows “Man Utd” is “Manchester United” but not “Man City”, and it clusters the same fixture across bookmaker feeds — the hardest part of building any odds-comparison or arb tool on top of this API.
8 sports · 99%+ precision · sub-millisecond cached lookups. Free 30-day scout-tier trial (15 req/s), no card. Pairs naturally with the drops stream when you are pricing across books.
Matching docsPOST /api/match — one reference name against up to 25 candidates: abbreviations, acronyms, transliterations, sponsor prefixes. Rejects U19 / Women / reserve mismatches.
POST /api/match-events — feed it slates from up to 5 books, get back matched clusters. A ±12h timestamp window stops reverse-fixture false merges.
Join pinnodds Pinnacle names to bet365, Betfair or any book you scrape — no more hand-written alias tables.
MODULE 03 — Terms
Pinnacle's own feed was €5,000/mo and is no longer sold to the public. Every paid plan here carries full line depth, all 12 sports, live plus prematch, and the panel with its usage graph. You are buying throughput and push access — never a thinner feed.
MODULE 04 — Counterparties
| pinnodds | Other Pinnacle-compatible APIsSportsGameOdds · Odds-API.io | Native Pinnacle B2B feed | |
|---|---|---|---|
| Update mechanism | Push — MQTT / WS / SSE | Polling loop; WS enterprise-only or +2× plan price | Push |
| Typical latency | 30–150 ms | Seconds — ~10 s poll cycle | Sub-second |
| Raw passthrough WS | +$99/mo, byte-identical | Not offered | Included |
| Server-side drop alerts | Yes — ≥5%, live + prematch | No | No |
| Team / fixture matching | SportsMeld — free 30-day trial | Not offered | Not offered |
| Line depth | Full on every plan | Often tiered by plan | Full |
| Prematch refresh | 5 s with since cursors | Poll on your own timer | Push |
| Onboarding | Key in seconds, email only, no Pinnacle account | Signup + credit card | Manual review, commercial contract |
| Billing | Crypto — no auto-renew | Card subscription | Invoice |
| Affiliate program | 30% lifetime commission | Not offered | Not offered |
| Entry price | $99/mo · free trial | $99–£99/mo (≈$125) | €5,000/mo |
Bar length is proportional to worst-case time-to-know on a price change.
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.
MODULE 05 — Query log
pip install pinnodds and npm install pinnodds give you REST plus drop streams with reconnects built in — zero-dependency Node with TypeScript types, and a typed requests-only Python client.include_specials=1. Plans differ in rate limits and push access, not in depth.Free 3-day full demo, no card, no Pinnacle account. If your code already speaks a Pinnacle-compatible API, you are one environment variable away from a sub-second feed.