Free Pinnacle Odds API: What You Get for $0 and Where It Stops

There is a genuinely free way to pull Pinnacle odds in JSON: a trial key with 100 requests a day, no card, no expiry. Here is exactly what it covers, how to spend those 100 calls well, and what only a paid plan gives you.
Short version: you can pull Pinnacle's live and prematch prices in JSON today for nothing. The free trial key needs no card, never expires, and gives you 100 REST requests a day across every sport and market. What it does not give you is push. If you need odds-drop alerts the second they happen, or the raw WebSocket frames, that is a paid plan. Everything below is about making the free tier do as much as it honestly can.
What "free" usually means in this market
Since Pinnacle withdrew its public API in July 2025, every "free Pinnacle API" you will find is a third-party feed with a free layer on top. The free layers come in three shapes, and they are not interchangeable:
- A demo key or sandbox. You get a response, but it is delayed, truncated to a couple of events, or both. Good for seeing the schema, useless for a model.
- A credit allowance. A few hundred credits a month on an aggregator. Each market you request costs credits, so a full Pinnacle board for one sport can eat a day's allowance in one call.
- A rate-limited real key. Live data, full schema, capped by requests rather than by data volume.
pinnodds is the third kind. The cap is on how often you ask, not on how much comes back, and that difference is what makes the tier usable.
What the free key includes
The trial key is a real key. It hits the same endpoints, returns the same payloads and sees the same prices as a paid key.
| Free trial | Paid plans | |
|---|---|---|
| Price | $0, no card, no expiry | from $99/mo |
| Rate limit | 20 requests/min, 100/day | 10 to 30 requests/sec, no daily cap |
Live markets (/kit/v1/markets) | yes | yes |
| Prematch fixtures and lines | yes | yes |
| Line depth | full, including quarter lines | full |
Specials (include_specials=1) | yes | yes |
Odds drops over REST (/api/drops) | yes | yes |
SSE drop stream (/odds-drop) | no | Stream, Pro + SSE, Scale |
Raw WebSocket (/ws/feed) | no | add-on or Scale |
So the question is not "is the free data worse". It is not. The question is whether 100 pulls a day is enough for what you are building.
Spending 100 requests well
The mistake people make on a capped key is treating it like a scraper: hit everything every minute, run out by breakfast, conclude the tier is useless. A few habits change that.
One call is a whole board. /kit/v1/markets?sport_id=1 returns every live soccer event with its moneyline, every spread, every total and every period. That is one request, not one per match. If you want to watch live soccer all evening, polling every fifteen minutes is 20 calls for a five-hour window.
Fetch fixtures once, lines on demand. For prematch, pull /kit/v1/prematch/fixtures?sport_id=5 once in the morning. That gives you the event ids for the day. Then call /kit/v1/prematch/lines?event_id=… only for the games you care about, when you care about them.
Use the drops buffer instead of diffing. You do not have to poll a board and compute what moved. /api/drops?mode=live&sport_id=1&min_drop_pct=5&max_age_sec=600 returns the price falls of the last ten minutes in one call, with the from and to prices and the no-vig fair price already attached. One request every ten minutes is 144 a day, so stretch it to every fifteen and you are inside the cap with room to spare.
Cache the sport list. /kit/v1/details and the sport ids do not change. Do not fetch them per run.
Here is a plan that stays under 100 and still gives you something real:
06:00 prematch fixtures, 2 sports 2 calls
08:00–23:00 live board for 1 sport, every 15 min ~60 calls
08:00–23:00 live drops, every 30 min ~30 calls
-----
92 calls
That is a working odds monitor for the price of nothing.
Where the free tier stops
Be clear about this part, because it is where "free" marketing usually goes quiet.
You cannot stream. The SSE endpoint keeps a connection open and pushes every qualifying drop within roughly 30 to 150 ms of Pinnacle moving the price. The WebSocket passthrough does the same for every frame. Both are paid, because an open connection is a standing cost we cannot hand out for free. If your edge depends on reacting inside a few seconds, the free key is for building and testing, not for running.
100 a day is a hard wall. The 101st request returns HTTP 429 with a window=day hint and the counter resets at midnight UTC. There is no burst allowance and no rollover.
20 a minute is a soft wall. Short bursts over it are also 429. Space your calls.
No historical odds. This is true of every plan, not just the free one. pinnodds is a live feed. If you need history, record the stream yourself.
When to pay
Three signals that you have outgrown the free key:
- You are polling a board to detect moves and wish you were being told about them. That is the Stream plan, $99/mo, SSE drops included.
- You need more than one sport at better than fifteen-minute resolution. That is Pro, $99/mo, 10 requests a second.
- You want the raw frames to build your own state. That is the WebSocket add-on or Scale.
Until one of those is true, stay free. There is no time limit on the key and nobody will email you about it.
Get a key
The key is issued from the panel in about a minute. No card, no Pinnacle account, no verification call. If you would rather look before you sign up, the live Pinnacle odds boards show the same feed in a browser, no key at all.
pinnodds is an independent service and is not affiliated with, endorsed by or connected to Pinnacle.
Frequently asked questions
Is there a free Pinnacle odds API?
Yes. pinnodds issues a free trial key with no card and no expiry. It is limited to 100 requests a day and 20 a minute, covers every sport and market on the live and prematch REST endpoints, and does not include the SSE or WebSocket push feeds.
Does the free key need a Pinnacle account?
No. pinnodds is an independent service that carries Pinnacle's market data. You never log in to Pinnacle, and the key works from countries where pinnacle.com itself is blocked.
What can I not do on the free tier?
Stream. Odds-drop alerts over Server-Sent Events and the raw WebSocket feed are paid features, because they hold a connection open and deliver thousands of price changes a day. The free key is REST only.
How far do 100 requests a day go?
Far enough to build and test an integration. One call to /kit/v1/markets returns every live event in a sport with all its prices, so a request is a whole board, not a single price. Polling one sport every 15 minutes is about 96 calls a day.
Can I see Pinnacle odds without any key at all?
Yes. The boards at pinnodds.com/pinnacle-odds show the current moneyline, spread and total for NFL, NBA, MLB, NHL, soccer, tennis and esports, refreshed every minute from the same feed the API serves.
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