The Pinnacle API Closed. Here's How to Still Get Pinnacle Odds in 2026
Pinnacle shut its public API on 23 July 2025. This is a practical look at what actually replaced it, with the trade-offs of each path and a working migration.
The Pinnacle API Closed. Here's How to Still Get Pinnacle Odds in 2026
If you built anything on top of Pinnacle's public API, you already know the date: 23 July 2025, the morning the official endpoints went dark. For a lot of people that quietly broke a bot, a dashboard, or a model that had been running fine for years.
I work on a replacement, so take the framing with the appropriate grain of salt — there's a disclosure note at the top. What I want to do here is less of a pitch and more of a map: why Pinnacle's prices are worth chasing at all, what your real options are now, and how to migrate if you decide to.
Why Pinnacle prices are still worth the trouble
Pinnacle runs a low-margin, high-limit book. They make money on volume and on being right, not on shading prices against casual bettors. Two consequences matter for anyone building with odds data:
- The line is sharp. Pinnacle tends to move first and move correctly. If you want a reference price to judge whether a soft book is mispriced, this is the one most professionals anchor to.
- They don't limit winners the way recreational books do. So the price reflects real money, not a marketing budget.
That's the whole reason this is annoying enough to solve. A slower, softer book's API would be easy to get — it just wouldn't tell you much.
What changed, and what your options actually are
Since the shutdown — why it happened is a story of its own, and a useful predictor of what stays reliable — the landscape sorts into three buckets:
- Scrape it yourself. Technically possible, operationally miserable. You inherit anti-bot defenses, rotating markets, and the job of staying live during exactly the moments — kickoff, red cards, goals — when the data matters most and the site is hardest to read.
- Use a broad aggregator (e.g. The Odds API, OddsJam-style feeds). You get many books in one call, usually over REST polling. Great for coverage, weaker for speed and for Pinnacle-specific fidelity — though the free tiers are genuinely useful for research-grade work.
- Use a Pinnacle-focused feed that pushes updates as they happen. Narrower scope, but built for the latency-sensitive case.
There's no universally correct answer here. The right one depends almost entirely on whether you're optimizing for coverage or for speed.
The core problem with polling
Most aggregators hand you a REST endpoint you call on a timer. The hidden cost is staleness. If you poll every two seconds, your worst-case view of the market is two seconds old — plus the round trip. During a settled prematch market that's fine. During a live match, two seconds is several lifetimes; the move you're trying to catch has already happened and the soft books have followed.
Push delivery (Server-Sent Events or WebSocket) flips that: the server sends you the change the instant it sees it, so your latency is dominated by network transit rather than by your polling interval.
How pinnapi fits — and how fast it actually is
pinnapi is the Pinnacle-focused, push-first option in bucket three. It exposes the same data over REST, SSE, and WebSocket, live and prematch, across 10+ sports.
On speed: we measure roughly 15–40 ms from the moment a price changes upstream to the moment it lands on a connected client, on SSE/WebSocket. I'd rather you not take that on faith — the methodology is simple to reproduce, and your own number will vary by region and plan. If you only remember one thing, make it this: measure it yourself against your real deployment before you trust any vendor's figure, including ours.
A concrete swap
Authentication is an API key in a header. A REST snapshot looks like:
curl -H "x-portal-apikey: $PINNAPI_KEY" \
"https://pinnapi.com/kit/v1/markets?sport_id=1&event_type=live"
Subscribing to the push stream
const es = new EventSource(`https://pinnapi.com/odds-drop?key=${process.env.PINNAPI_KEY}&min_drop=5`);
es.onmessage = (e) => {
const payload = JSON.parse(e.data);
if (payload.type === "connected") return; // first frame is a handshake
for (const drop of payload) { // every frame is an array of drops
// drop = { sport, home, away, sect, outcome, from_price, to_price, nvp, ... }
handleDrop(drop);
}
};
Migration in practice
If you had working Pinnacle code before the shutdown, the migration is mostly mechanical:
- Point your market-snapshot calls at the REST endpoint and adjust the response mapping.
- Replace your polling loop with an SSE/WebSocket subscription for anything live.
- Keep a REST call on hand for recovery — after a disconnect, backfill state with one snapshot rather than replaying the stream.
Realistically this is an afternoon, not a rewrite, because the shape of the data (fixtures → markets → prices) is the same shape you were already handling.
When a generic aggregator is the better call
Being honest about the boundaries:
- If you need 30+ books for line shopping and you don't care about sub-second timing, a broad aggregator is simpler and probably cheaper than a specialist feed.
- If you only work prematch and refresh every few minutes, polling is completely fine and push delivery buys you nothing.
- If you need a book pinnapi doesn't cover, that's a hard requirement we can't meet.
The case for a Pinnacle-focused push feed is narrow and specific: you care about the sharpest line, and you care about time.
The takeaway
The shutdown didn't kill access to Pinnacle prices; it killed the easy version of it. Pick your replacement based on whether your edge comes from breadth or from speed. If it's speed, push delivery is the part that actually matters, and the number to scrutinize is end-to-end latency measured on your own infrastructure.
FAQ
Is there still a public Pinnacle API? No. Pinnacle closed public access on 23 July 2025. Current access is via third-party feeds — and so is the documentation.
Can I still access Pinnacle odds programmatically in 2026? Yes — through the three buckets above: specialist push feeds, broad aggregators, or scraping (not recommended). The trade-off that decides between them is coverage versus speed.
What's a drop-in replacement for the Pinnacle API? A Pinnacle-focused feed carrying the same fixtures → markets → prices shape, so your old parsing survives. That's the bucket pinnapi sits in — the migration section above is three steps, and it's usually an afternoon.
Do I need a Pinnacle account? No. pinnapi is independent and not affiliated with Pinnacle; your pinnapi key is all you need — every realistic option works account-free.
Can I test before paying? Yes — the free tier is 100 REST requests/day, no card required. Paid plans start at $99/mo.
--- Disclosure: pinnapi is our product. Where another tool fits your use case better, we've said so.
Get real-time Pinnacle odds in your code
Live & prematch markets with sub-second odds-drop alerts. Free trial key in seconds — no card.
Start free trial