On this page
Since Pinnacle closed its public API on 23 July 2025, a "Pinnacle API key" in practice means a key from an independent service that relays Pinnacle's prices. This page uses pinnodds, our recommended feed, and gets you from nothing to a real JSON response in three steps. If you want to see the other options first, the alternatives comparison covers seven services.
Three steps to a working key
-
Step 1: sign up on pinnodds
Create a free account at pinnodds. Sign-up issues an API key in seconds and asks for neither a payment card nor a Pinnacle account.
The free tier has two shapes. The open-ended Trial is throttled to 20 requests a minute and 100 a day, which is plenty for this page. The 3-day full demo runs at 10 requests a second with the SSE stream enabled, which is what you want when you are ready to rehearse a production workload. Both are explained on the pricing page.
-
Step 2: copy your key from the panel
After sign-up, your key is shown in the pinnodds panel. The same key is your login to the panel, so store it as you would a password: in an environment variable or a secrets manager, never in source control.
-
Step 3: make your first request
Request the live soccer board with one curl command. Replace
YOUR_KEYwith the key from the panel; the response is JSON containing an array of events with their markets and decimal prices.curl -H "x-api-key: YOUR_KEY" \ "https://pinnodds.com/kit/v1/markets?sport_id=1&event_type=live"curl -H "x-api-key: YOUR_KEY" \ "https://pinnodds.com/kit/v1/prematch/fixtures?sport_id=2"curl -H "x-api-key: YOUR_KEY" \ "https://pinnodds.com/api/drops?mode=prematch&min_drop_pct=2&max_age_sec=3600"Output200 OK content-type: application/json
Sport id 1 is soccer. The full list is 1 Soccer, 2 Tennis, 3 Basketball, 4 Hockey, 5 American Football, 6 Baseball, 7 Rugby, 8 MMA, 9 Boxing, 10 Other, 11 Esports, 12 Golf and 13 Cricket. Note that these differ from the ids the old Pinnacle API used; the documentation archive has the mapping.
If nothing is live in your sport, ask for the prematch board instead (the second tab). Tennis usually has fixtures at any hour.
To see the odds-drop detection that most people come to pinnodds for, query the drop buffer (the third tab). This returns prematch drops of at least 2 percent from the last hour, each with the previous price, new price, no-vig price and percentage.
Three conventions to keep in mind while you read the output: prices are decimal, period 0 is the full match, and handicaps are given from the home side. Our guide on how to read Pinnacle lines explains the rest, including quarter lines and the no-vig price.
Next: SDKs and quickstarts
Official SDKs exist for Python and Node.js, and working examples for every transport are on pinnacleapi.dev. Each quickstart returns real prices in under a minute.
Python quickstart
One dependency, a board and a drop stream in about ten lines.
npm install pinnoddsNode.js quickstart
Zero dependencies, TypeScript types included.
Push over HTTPSSE stream
Consume drop alerts with curl or Python.
Push over socketWebSocket
Connect to the raw feed, subscribe, reconnect.
Worked examplesRecipes
End-to-end builds such as a Telegram drop-alert bot.
If you are choosing between polling and a stream, read polling vs push odds feeds before you pick a paid plan. The provider's own reference is at pinnodds.com/docs.
Migrating existing code? Get the kit
If you have code that called the old Pinnacle API, the migration kit maps each old endpoint to its replacement, lists the behavioral differences that bite in production, and ships Python and Node snippets for boards, deltas and drop streams. It is free and arrives by email.
What the feed shows right now
The widget below reads a copy of the pinnodds drop buffer that our server refreshes every minute. It is here to show what a first request returns, not as betting advice.
Pinnacle prices moving right now
| Match | Market | From | To | Drop | Age |
|---|
Source: pinnodds drop buffer, refreshed every minute. Decimal odds. Not betting advice.