Pinnacle API Alternative: What to Use in 2026

Pinnacle shut its public API in July 2025. Here's an honest look at every Pinnacle API alternative — scraping, aggregators, pinnodds — and when each one is the right buy.
Short version: Pinnacle closed its public API in July 2025, and you now have three realistic options — build and maintain your own scraper, buy a multi-book aggregator, or buy a dedicated Pinnacle feed. If Pinnacle's line is your model input, a dedicated feed wins; if you need forty books to find outliers, an aggregator wins. Mixing both is common and usually correct.
Below is what each option actually costs you in engineering time, and where each one falls apart.
What actually happened in July 2025
Pinnacle retired public access to its odds API. The endpoints that a generation of betting tools were built on stopped being available to new and existing integrators, and a lot of quiet infrastructure — arbitrage scanners, closing-line-value trackers, model calibration jobs — broke in the same week.
The data itself did not go anywhere. Pinnacle still prices the same markets, to the same line depth, with the same limits. What disappeared was the sanctioned front door. So every Pinnacle API replacement on the market today is, one way or another, an independent service carrying that market data rather than an official product.
Be clear-eyed about that. Nobody can sell you an official Pinnacle API today, and any vendor implying otherwise is selling you something else.
Option 1: scrape it yourself
This is the default instinct and it works — for about six weeks.
You will get a prototype running in a weekend. Then you meet the real cost, which is not the parsing:
- Session and token churn. Auth material rotates. Your job is now a maintenance contract, not a project.
- Geo and residential IP management. You will end up paying for proxies and paying attention to them.
- Reconnection semantics. Live odds arrive as deltas. A naive reconnect gives you a book state that is subtly, silently wrong — the worst failure mode in this domain, because your model keeps producing confident numbers.
- Line-depth completeness. It's easy to grab main lines and miss the quarter lines, which is where a lot of soccer edge lives.
Self-hosting is genuinely the right call in one scenario: you have one engineer whose actual job this is, you need the raw payload untouched for compliance or research reasons, and your volume is high enough that a per-seat feed doesn't pencil. Otherwise you are paying a senior salary to rebuild a commodity.
Option 2: a multi-book aggregator
Aggregators — the odds-comparison APIs that cover 30 to 60 sportsbooks — do something a single-book feed cannot, and they do it well.
They're the right buy when your product logic is cross-book:
- Arbitrage and middles, where you need two books disagreeing at the same moment.
- Best-price shopping and bet-placement routing for retail users.
- +EV screens against a soft-book universe, where the recreational book is the target and Pinnacle is only the reference.
- Broad market coverage across obscure leagues and books nobody else carries.
Where aggregators get weak is resolution on any single book. Coverage across dozens of books usually means polled snapshots on an interval, main lines prioritised, quarter lines thinned or absent, and no per-book stake limits. That's a reasonable engineering tradeoff for them — but if your entire model treats Pinnacle's no-vig price as truth, a 30-second snapshot of a smoothed main line is not the input you think it is.
I'd rather have one book at full depth, pushed, than forty books at low resolution — if and only if that one book is the one my model trusts.
Option 3: a dedicated Pinnacle feed
This is what pinnodds is. One book, full depth, pushed rather than polled.
Concretely, the surface is:
GET /kit/v1/markets— live or prematch, selected viaevent_type.GET /kit/v1/details, plus the prematch trio/kit/v1/prematch/fixtures,/kit/v1/prematch/markets,/kit/v1/prematch/lines.GET /api/dropswithmode=live|prematch— enriched odds-drop rows.wssraw passthrough at/ws/feed.- SSE drop alerts at
/odds-dropand/odds-drop-prematch. /healthand/pingfor your monitoring.
Auth is a single API key, sent as x-api-key: YOUR_KEY on REST or ?key= on the streams. The same key is your login — there's no separate console credential to lose.
# Live soccer markets, quarter lines included
curl -H "x-api-key: $PINNODDS_KEY" \
"https://pinnodds.com/kit/v1/markets?event_type=live"
# Enriched prematch drops, with a precomputed drop_pct
curl -H "x-api-key: $PINNODDS_KEY" \
"https://pinnodds.com/api/drops?mode=prematch"
Or with the official SDK — npm install pinnodds, pip install pinnodds, both low-dependency wrappers over the REST and SSE surface:
from pinnodds import Client
client = Client(api_key=os.environ["PINNODDS_KEY"])
for alert in client.odds_drops(mode="live"):
# sect = market, outcome = moving selection
# from_price -> to_price, plus limit and nvp
print(alert["sect"], alert["outcome"],
alert["from_price"], "->", alert["to_price"],
"limit", alert["limit"], "nvp", alert["nvp"])
Line depth is the part people underestimate
Every line Pinnacle prices comes through, including the quarter lines: soccer totals at 1.75 / 2.25 / 2.75 / 3.25, and quarter-ball handicaps at -0.75 / -1.25 / -1.75 / -2.25. Depth is identical on every plan — plans differ in rate limit and push access, not in what you can see.
That matters because a 2.25 total is not "roughly the 2.5". If you're deriving a fair line and interpolating from mains, you're inventing the shape of the curve instead of reading it.
Specials are opt-in for a reason
Pass include_specials=1 and player props, team props, exact scores, futures and outrights arrive as their own event rows, each carrying special, special_category, special_markets and a parent_id back to the parent fixture.
They're off by default because they dominate the payload. Soccer prematch is roughly 1,500 events without the flag and roughly 12,400 with it. Turn them on deliberately, and shape your ingest around the volume before you do.
The two drop shapes differ — know which one you want
This trips people up, so here it is plainly:
An SSE alert is the fast, thin form. Market in sect, moving selection in outcome, prices in from_price / to_price, event in id, plus limit (Pinnacle's max stake) and nvp (the no-vig fair price). It carries no drop percentage — you compute that yourself if you need it.
A REST /api/drops row is the enriched form: market, designation, from / to, event_id, and a precomputed drop_pct.
Use SSE when latency is the product. Use /api/drops when you want a clean, already-scored view for a dashboard or a backfill after a restart. The docs have the full field tables.
Side by side
| Self-scraping | Aggregator API | pinnodds | |
|---|---|---|---|
| Books covered | Pinnacle | 30–60 | Pinnacle |
| Delivery | You build it | Mostly polled REST | Pushed: WebSocket + SSE |
| Quarter lines | If you build for them | Often thinned | Full depth, every plan |
Stake limits (limit) | Available if you parse it | Usually absent | Included on drop alerts |
| No-vig price | Compute it | Sometimes | nvp on alerts |
| Props / futures | You build it | Varies | include_specials=1 |
| Ongoing maintenance | Yours, permanently | Vendor's | Vendor's |
| Best for | Research, full raw control | Arb, best-price, +EV vs soft books | Sharp-line modelling, drop detection |
Where this feed is the wrong tool
Being specific here saves us both a support ticket.
You need many books. pinnodds carries Pinnacle. If your product compares prices across a book universe, or your users place bets at whichever book is best right now, an aggregator is a better purchase than this and I'd tell you so on a sales call.
You need a historical odds archive. This is a real-time feed. There is no queryable history of past closing lines — if you want CLV backtests over last season, start recording now, or buy a historical dataset from someone who specialises in it.
You want push on the cheapest plan. SSE and WebSocket access sit on specific tiers. Pro starts at $99/mo, Pro + SSE is $149/mo, Scale is $229/mo. If your budget is polling-only, you can still read /api/drops on a schedule and get real value — but you're not getting the sub-second push, and that's the whole point of the product. Pricing is on the homepage.
You want an official relationship with Pinnacle. Not on offer. This is an independent service carrying the same market data, and if your compliance posture requires a first-party contract, no third party can give you one.
Your model doesn't care about sharp lines. If you're building a fantasy app or a content site, this is over-specified. Buy something broader and cheaper.
Picking — or combining
Decide by asking one question: is Pinnacle the input to my model, or one of many prices I display?
Input to the model — take the dedicated feed. You want the quarter lines, the nvp, the limit, and pushed updates. Poll-based snapshots corrupt the thing you're actually measuring.
One of many prices — take the aggregator. Breadth beats resolution for you and no amount of single-book precision fixes a missing book.
Both — which describes most serious operations — run the aggregator for the soft-book universe and pinnodds for the reference line. That's the shape I'd build: aggregator sets the candidate list, Pinnacle's no-vig price decides whether the candidate is real. Start with a free trial key and point it at your existing pipeline before you rewrite anything.
Takeaway
The single most valuable field in a Pinnacle API alternative isn't the price — it's limit. A drop on a market Pinnacle will take five figures on means something categorically different from a drop on a market capped low, and most feeds don't carry it at all. Log limit alongside from_price, to_price and nvp on every SSE alert from day one, gate your alerting on it, and you'll cut false positives before you've written a line of modelling code.
Frequently asked questions
Is there still a public Pinnacle API?
No. Pinnacle closed public access to its odds API in July 2025. Any Pinnacle API alternative available today is an independent service carrying the same market data, not an official product.
What is the best Pinnacle API replacement for live odds?
If Pinnacle's line is your model input, a dedicated pushed feed like pinnodds is the closest replacement — full line depth including quarter lines, a WebSocket passthrough at /ws/feed and SSE drop alerts. If you need many books rather than one book at high resolution, buy a multi-book aggregator instead.
Can I just scrape Pinnacle odds myself?
You can get a prototype working quickly, but the ongoing cost is session and token rotation, proxy management and correct delta reconnection. Silent state drift after a reconnect is the common failure, and it produces wrong numbers that look right.
Does pinnodds include quarter lines and player props?
Yes. Every line Pinnacle prices comes through, including soccer totals at 1.75 / 2.25 / 2.75 / 3.25 and quarter-ball handicaps at -0.75 to -2.25, on every plan. Props, exact scores, futures and outrights are opt-in via include_specials=1 because they dominate the payload.
How much does a Pinnacle odds API cost?
There is a free trial key with no card required. Paid plans start at $99/mo for Pro, $149/mo for Pro + SSE and $229/mo for Scale, with quarterly and semi-annual options. Plans differ in rate limit and push access, not in line depth.
Do odds-drop alerts include a drop percentage?
SSE alerts do not — they carry sect, outcome, from_price, to_price, id, limit and nvp, and you compute the percentage yourself. The REST /api/drops rows are the enriched form and include a precomputed drop_pct.
Get real-time Pinnacle odds in your code
The Pinnacle APIby pinnodds: live & prematch markets with instant odds-drop alerts over SSE and WebSocket. See plans and pricing, or get a free key in seconds — no card, no Pinnacle account.
Get your free API key