FEED LIVE SESSION 00:00:00 UTC SOCKETS 1 FRAMES 0
TRANSPORT REST / WSS / SSE RTT 148 MS V1
● pinnodds.com/kit/v1 — live + prematch, one key

The Pinnacle Odds API,
real-time and independent.

Pinnacle closed its own public API in July 2025. pinnodds is the independent, real-time replacement — the same live and prematch Pinnacle prices over REST, WebSocket and SSE, with dropping-odds detection built in.

No card. No Pinnacle account. One API key for REST + streams.

Push latency
30–150ms
Coverage
Live + PM
Sports
10+
Lines
Quarterincl
Live odds feed WSS /ws/feed
RTT 148MS · 0 FRAMES ❙❙ Paused

Module 01 — Overview

What the Pinnacle Odds API is

pinnodds is an independent service that carries Pinnacle's live and prematch market data and hands it to your code three ways. REST under /kit/v1/... returns the current markets on demand. A raw WebSocket passthrough at /ws/feed pushes every price change the instant Pinnacle's broker emits it. Server-Sent Events at /odds-drop (live) and /odds-drop-prematch (prematch) stream dropping-odds alerts as they fire.

Everything runs on one API key — send x-api-key: YOUR_KEY on REST calls and ?key=YOUR_KEY on the streams. Drop detection is first-class, not a bolt-on: alerts carry the no-vig fair price and Pinnacle's max stake, and the enriched /api/drops endpoint adds a precomputed drop percentage. See the API reference for the full schema, or the dedicated Pinnacle WebSocket API page if you only want the stream.

Module 02 — Surface

Endpoints

api surface pinnodds.com
GET/kit/v1/marketslive markets
GET/kit/v1/prematch/marketsprematch markets
GET/api/drops?mode=live|prematchenriched drops
SSE/odds-drop · /odds-drop-prematchdrop alerts
WSS/ws/feedraw passthrough
GET/healthstatus

Add ?sport_id=1 to scope a REST call to one sport, and include_specials=1 to pull props, exact scores and futures — soccer prematch alone jumps from roughly 1,500 to 12,400 events with specials on. Each special is its own event row with special, special_category, special_markets and parent_id.

Module 03 — Quickstart

Pull live odds in one request

Send your key as x-api-key and hit /kit/v1/markets. You get the current live state — every event, every market, every price — in one JSON response. Swap in /kit/v1/prematch/markets for pre-game.

terminal curl
# Live soccer markets — one authenticated GET
curl -H "x-api-key: YOUR_KEY" \
  "https://pinnodds.com/kit/v1/markets?sport_id=1"
markets.mjs Node · fetch
// Node.js — fetch current live Pinnacle markets
const res = await fetch(
  "https://pinnodds.com/kit/v1/markets?sport_id=1",
  { headers: { "x-api-key": "YOUR_KEY" } }
);
const { events } = await res.json();

for (const ev of events) {
  console.log(ev.id, ev.markets); // moneyline, spreads, totals…
}

Prefer not to write the HTTP layer yourself? The official SDKs wrap REST + SSE with one line of install: npm install pinnodds or pip install pinnodds. Full clients in Node, Python, Go and PHP — plus auth and the frame schema — are in the documentation.

Module 04 — Payload

What you get

F/01Depth

Quarter lines, every plan

Quarter-ball totals (1.75/2.25/2.75/3.25) and handicaps are included on every tier. Plans differ by rate limit and push access, not line depth.

F/02Signal

Drops with nvp + limit

SSE alerts carry from_price, to_price, no-vig fair price and Pinnacle's max stake. REST /api/drops adds a precomputed drop_pct.

F/03Coverage

Specials on demand

Pass include_specials=1 for props, exact scores and futures — soccer prematch expands from ~1,500 to ~12,400 events.

F/04SDKs

One-line install

npm install pinnodds and pip install pinnodds — low/zero-dependency clients that wrap REST and SSE.

F/05Phases

Live + prematch

Both phases across 10+ sports — soccer, tennis, basketball and more — moneyline, spreads, totals and team totals.

F/06Migration

Drop-in REST shape

The response shape follows the familiar Pinnacle client format, so moving over is mostly a base-URL and key change.

Module 05 — Trade-offs

Three ways to get Pinnacle odds

The official API is gone. That leaves scraping Pinnacle yourself — and owning every breakage — or a maintained feed. Here is the honest comparison.

  Official Pinnacle API Scrape it yourself pinnodds
AvailabilityClosed July 2025Breaks on every site changeLive now, maintained
Latency—Poll interval + parsing30–150 ms pushed
MaintenanceN/AYou own the breakageZero — we track Pinnacle
DropsNever offeredDiff it yourselfBuilt in: nvp + limit
SupportNoneYou, at 3amTelegram + email

pinnodds is Pinnacle-only by design — the sharp truth layer, not an odds-comparison grid. If you need many books, arbitrage against a soft book, or a historical archive, pair it with an aggregator; more on that in the blog.

Module 06 — Query log

Frequently asked questions

Is there still an official Pinnacle API?
No. Pinnacle closed its own public API in July 2025. pinnodds is an independent service that carries the same live and prematch Pinnacle market data over REST, WebSocket and SSE.
Is pinnodds affiliated with Pinnacle?
No. pinnodds is not affiliated with, endorsed by, or connected to Pinnacle. It is an independent real-time odds service that carries Pinnacle market data.
How fast is the Pinnacle Odds API?
Push delivery over WebSocket and SSE reaches you in roughly 30–150 ms as prices change. REST endpoints under /kit/v1 return the current live or prematch state on demand.
What does the Pinnacle Odds API cost?
Pro (REST) is $99/mo, Pro + SSE (push) is $149/mo, and Scale is $229/mo, with quarterly and semi-annual discounts up to about 24%. Grab a free trial key — no card required.
Do you have historical odds?
No. pinnodds is a real-time feed, not a historical archive. If you need history, record the /ws/feed WebSocket stream yourself and store it.
Which sports and markets does it cover?
10+ sports including soccer, tennis and basketball, on both live and prematch markets — moneyline, spreads, totals and team totals, with quarter lines on every plan. Specials such as props, exact scores and futures are available by passing include_specials=1.

Start pulling Pinnacle odds

Free key, no card required, and a 3-day full demo on request. One key for REST, WebSocket and SSE — you're live in minutes.

REST · WSS · SSE · 10+ sports · live + prematch · 30–150 ms