Live Pinnacle odds and drop alerts, pushed to your bot in milliseconds over REST, SSE, and WebSocket. When the sharpest line in the world moves, you're on the soft book before it follows.
Pinnacle is the sharpest book in the world — when its line breaks, the soft books haven't moved yet, and that gap is your bet. Most odds APIs poll on a timer, so you only hear about the move on their next request — by then the window is closing. We push the instant the line breaks, so you're on it while it's still open.
The value lives in the gap between Pinnacle moving and the soft book following. Here's how we put you on the right side of it.
One feed for sharp prices. We watch every market on Pinnacle and surface the move the moment the line breaks.
No tick timers, no polling. Every price change is checked the instant it lands — MQTT push for in-play, version-diffed REST for prematch — so an alert fires the moment a market actually moves.
In-play push and pre-game polling run side by side, sharing the same detection engine.
Margin-stripped probabilities and handicap-aware comparison on every leg.
Same response schema as the engine you already run. Swap the base URL and go.
REST kit endpoints for snapshots, a Server-Sent-Events stream for drop alerts, and a raw WebSocket passthrough of every Pinnacle frame. Pick the surface that fits your stack — they all read from the same store.
Sign up, get an API key instantly, and authenticate every request with a single header.
We hold a live mirror of every Pinnacle market — in-play and prematch — and diff every update as it arrives.
The instant a price falls past your threshold, the alert hits your SSE stream, WebSocket, or REST poll.
Plain HTTP and a token. No SDK lock-in, no ceremony.
# live markets for soccer curl https://pinnapi.com/kit/v1/markets \ -H "x-portal-apikey: $KEY" \ --data-urlencode "sport_id=1" \ --data-urlencode "event_type=live" # → array of events with all markets + periods
const es = new EventSource( "https://pinnapi.com/odds-drop?token=$TOKEN"); es.onmessage = (e) => { const drops = JSON.parse(e.data); // { market, from_price, to_price, drop_pct… } drops.forEach(bet => trade(bet)); };
Monthly pricing below — quarterly and semi-annual terms save up to 24%. Full matrix in the dashboard.
Spin up a key and have live Pinnacle drops streaming into your stack in minutes.