Skip to content

pinnapi API Review 2026

pinnapi serves Pinnacle odds through REST, SSE drop alerts, and an optional raw WebSocket feed. A permanent free tier (100 requests/day, no card) makes it easy to start, with paid plans from $99/mo.

pinnapi at a Glance

pinnapi Logo
pinnapi
๐Ÿ’ฒ to ๐Ÿ’ฒ๐Ÿ’ฒ๐Ÿ’ฒ
Free Tier
Pregame Live Bet365 Pinnacle Closing SGP Futures Deeplinks Settlement Stats Schedules Websocket MCP Discord

Streaming from: Drops, $99/mo (SSE drop alerts); raw WebSocket from $198/mo

Green = available ยท amber = unverified or varies by plan ยท crossed out = not available. Pricing: ๐Ÿ’ฒ โ‰ˆ $20/mo up to ๐Ÿ’ฒ๐Ÿ’ฒ๐Ÿ’ฒ๐Ÿ’ฒ๐Ÿ’ฒ = $1,000+/mo. From our directory research.

pinnapi Coverage

From the provider's docs, checked : 1 book, 14 leagues, 7 markets, +4 other markets.

Global books

Boxing

Boxing
13 more leagues as the provider labels them
Baseball Basketball Cricket Esports Football Golf Handball Hockey MMA Rugby Soccer Tennis Volleyball
Markets by family
Family Markets
Mainlines 4
Game props 3
Other markets 4

Each market counts once, however many leagues carry it. Other markets are the provider's own market labels that we have not matched to our market names yet. The extra league labels come straight from the provider and are not matched to our league names yet. These labels still count in the totals.

Live odds: yes, per the provider's docs.

What pinnapi Is

pinnapi is a Pinnacle-sourced odds API that launched after Pinnacle closed its public API in July 2025. It delivers live and pre-game prices through REST endpoints, SSE streams for drop alerts, and an optional raw WebSocket feed. One source, one schema, no aggregation.

The headline feature is a permanent free tier: 100 requests per day, no card, no expiration. Most Pinnacle alternatives offer a time-limited trial. pinnapi lets you build against real data indefinitely at low volume, which suits prototyping and low-frequency models that poll a few times an hour. For background on why developers need Pinnacle access in the first place, see our Pinnacle API guide.

Coverage and Market Types

pinnapi lists 13 sport categories, all from Pinnacle's board:

  • US majors: NFL, NBA, MLB, NHL.
  • Global: soccer, tennis, cricket (T20, ODI and Test), rugby (union and league), golf, and volleyball/handball.
  • Combat sports: MMA and boxing.
  • Esports: Dota 2, CS2, and League of Legends.

Market types are moneylines, spreads, totals, and team totals across all periods. Player props and specials are available through an include_specials=1 flag. The directory marks pinnapi as having schedules, and the fixtures endpoint does return upcoming events with start times.

Compared to PinnOdds (a structurally similar competitor), pinnapi now lists cricket too, which PinnOdds added in July 2026, so both cover 13 sport categories (checked November 2026).

Delivery Modes: REST, SSE, WebSocket

The API surface mirrors the standard Pinnacle-alternative pattern. REST endpoints live under /kit/v1/ for live markets, pre-match fixtures, and single-event lookups. Auth works through an x-portal-apikey header, x-api-key header, or ?key= query parameter.

SSE streams push odds-drop alerts when a price moves beyond a configurable threshold (5% default). Separate streams cover live and pre-match markets. The site claims 15 to 40ms from price change to notification, which is a strong latency claim. We have not verified that number independently.

The raw WebSocket feed is a $99/mo add-on. You subscribe by sport ID or event ID (up to 200 per connection per stream) and receive snapshots followed by incremental updates with add, upd, and del operation codes. One connection per account.

Official SDKs cover Python (pip install pinnapi) and Node.js (npm install pinnapi). Both wrap the REST, drops buffer, and SSE interfaces.

pinnapi Pricing and the Free Tier

Four paid tiers plus the permanent free tier:

  • Free tier: 100 requests per day, no card, no expiration. The site says "free for as long as you're building," which makes this one of the most accessible entry points among Pinnacle-focused APIs.
  • Drops, $99/mo: SSE drop alerts for live and pre-match markets. REST calls are capped like the trial, at 20 a minute, 100 an hour and 100 a day.
  • REST, $99/mo: 10 requests per second, unlimited daily volume. No SSE drops.
  • Edge, $149/mo: 10 requests per second plus SSE drops. The site labels this "most popular."
  • Scale, $229/mo: 30 requests per second plus SSE drops.
  • Raw WebSocket, +$99/mo: Add-on for the REST, Edge and Scale plans, not Drops or the trial. Raw Pinnacle frames.

Quarterly billing saves roughly 16%, semi-annual roughly 24%. The plan names differ from PinnOdds (Drops/REST/Edge vs Stream/Pro/Pro+SSE) but the prices and rate limits are nearly identical, which is worth noting if you are comparing the two.

Getting an API Key

Use the Get a key button on the pinnapi home page. The free trial key needs no card, no email verification and no Pinnacle account. The key is also your login, because pinnapi has no passwords. Save it right away, because the signup returns the key once.

The trial allows 100 requests a day on REST endpoints, has no expiry, and cannot open SSE streams. Drops, Edge and Scale open them. Paid plans take a card through Stripe, or crypto through NowPayments for a fixed term with no auto-renewal (checked November 2026).

Send the key in the x-portal-apikey header, which the docs recommend. The x-api-key header and a ?key= query parameter also work, and the docs check them in that order. A missing key returns 401 with missing_key, and an unknown key returns 401 with invalid_key.

A First Request in Python

This sample is a plain requests call from the docs, checked November 2026. It asks GET /kit/v1/markets for prematch soccer (sport_id=1) and prints the first three events.

import os

import requests

resp = requests.get(
    "https://pinnapi.com/kit/v1/markets",
    params={"sport_id": 1, "event_type": "prematch"},
    headers={"x-portal-apikey": os.environ["PINNAPI_API_KEY"]},
)
resp.raise_for_status()
for event in resp.json()["events"][:3]:
    money_line = event.get("periods", {}).get("num_0", {}).get("money_line", {})
    print(event["league_name"], event["home"], "v", event["away"], money_line)

The reply holds an events list. Each event has league_name, home and away, plus a periods tree where num_0 is the full match. Its money_line carries decimal prices for home and away, plus draw when the market is three-way. The docs say some events lack some periods, so the sample falls back to empty dicts.

Rate Limits, Docs and SDKs

The trial and Drops plans allow 20 requests a minute, 100 an hour and 100 a day. REST and Edge allow 10 requests a second, and Scale allows 30, with no daily cap on any of the three. Over a limit, the call returns 429 with a Retry-After header and a body such as {"error":"rate_limited","window":"minute","limit":20,"retry_after_ms":41052}. Each SSE endpoint takes one connection per account, and a second connection evicts the first. Email info@pinnapi.com to raise that cap at no extra cost.

The official clients are pinnapi on PyPI and pinnapi on npm. Both raise a typed RateLimitError. The docs also link a Postman collection and a single-file reference at /llms-full.txt. GET /ping is a public liveness check, and /health needs a key. We found no status page or changelog. Support is on Telegram at @pinnapi_support.

Who pinnapi Is For

The permanent free tier and the SSE drop layer define the audience:

  • Developers prototyping a model or tool that needs a Pinnacle anchor. 100 free requests a day is enough to poll every 15 minutes across a handful of sports.
  • Drop-alert systems that notify users when Pinnacle moves a line. The SSE stream handles the detection and push, so you write the consumer, not the watcher.
  • +EV and arbitrage workflows using Pinnacle as fair value, with soft-book prices pulled from a separate aggregator.

Skip it if you need multi-book coverage, historical odds, or closing lines. pinnapi is a single-source feed with no archive. If your model grades itself against closing numbers, you will need a second provider for that data. Check the historical odds guide for options.

How It Compares to Other Pinnacle Feeds

The Pinnacle-alternative space has grown since the July 2025 closure, and several providers now offer similar REST/SSE/WebSocket stacks at similar price points. pinnapi's advantage is the permanent free tier. Many competitors offer a time-boxed trial (24 hours to a few days), which forces a buy-or-drop decision before you have fully tested. PinnOdds now matches it with its own free key at 100 requests/day.

The 15 to 40ms latency claim for SSE alerts, if accurate, would be fast. That number is self-reported and we have not benchmarked it. If latency is critical to your strategy, test pinnapi's SSE feed against a competitor's WebSocket on the same events and measure the delta yourself.

On coverage, both list 13 sport categories, cricket included. Feature-wise, pinnapi does not offer an entity-matching service like PinnOdds' SportsMeld. Both now have a permanent free key at 100 requests/day, so SportsMeld and SSE latency are likely the deciding factors between the two. Test pinnapi's free tier here.

Verdict

pinnapi is a solid Pinnacle feed with the lowest barrier to entry in the segment. The permanent free tier removes the time pressure that trials create, and the SSE drop-detection streams add value on top of raw snapshots. Official Python and Node SDKs make integration straightforward.

The caveats are the same as every single-source feed: no closing lines, no historical archive, no second book. The structural similarity to PinnOdds (identical endpoint paths, identical pricing, identical auth methods) is hard to miss and worth your own investigation. Take the free tier for a spin, validate the data and latency against your use case, and decide from there.

Last updated: ยท How providers get listed

Frequently Asked Questions

Yes. pinnapi offers a permanent free tier with 100 requests per day, no credit card required, and no expiration. The site describes it as "free for as long as you're building." You get access to live and pre-match Pinnacle odds through the REST endpoints.
Paid plans start at $99/mo. Drops ($99) gives SSE drop alerts. REST ($99) gives 10 requests per second with unlimited daily volume. Edge ($149) combines both. Scale ($229) increases throughput to 30 requests per second. A raw WebSocket add-on costs an extra $99/mo. Quarterly and semi-annual discounts are available.
pinnapi covers 13 sport categories sourced from Pinnacle: soccer, tennis, cricket, basketball, hockey, football, baseball, rugby, MMA, boxing, volleyball/handball, esports (Dota 2, CS2, LoL), and golf. Markets include moneylines, spreads, totals, team totals, and player props via a specials flag.
Yes, as a $99/mo add-on to the REST, Edge or Scale plan; Drops and the trial are not eligible. The raw WebSocket relays Pinnacle frames and supports subscribing by sport ID or event ID (up to 200 per connection). pinnapi also offers SSE (Server-Sent Events) streams for drop alerts, which are included in the Drops, Edge, and Scale plans.
For live and pre-game pricing, largely yes. pinnapi re-serves Pinnacle's odds after the July 2025 API closure. It does not replicate betting functionality, account management, or historical archives from the original Pinnacle API. See the full Pinnacle API guide for all alternatives.
Both serve Pinnacle odds through similar REST, SSE, and WebSocket interfaces at matching price points ($99 to $229/mo). Both have a permanent free key at 100 requests/day. pinnapi's main advantage is faster claimed SSE latency (15-40ms). Both cover the same 13 sports, cricket included, and PinnOdds also offers a SportsMeld entity-matching service.
Use the Get a key button on the pinnapi home page. The free trial key needs no card, no email verification and no Pinnacle account, and it works as your login. The signup returns it once, so save it. Send it in the x-portal-apikey header or as a ?key= parameter.
The trial and Drops plans allow 20 requests a minute, 100 an hour and 100 a day. REST and Edge allow 10 requests a second, and Scale allows 30, with no daily cap. Past a limit you get a 429 with a Retry-After header and a JSON body that names the window.

pinnapi Alternatives

Similar providers from the directory worth shortlisting alongside pinnapi.

Want to try Pinnacle odds for free?

The free tier gives you 100 requests a day with no card and no expiration. Pull live Pinnacle markets, validate the data, and upgrade when you need throughput.

Are You the Team Behind pinnapi?

Show developers you're independently listed on SportsAPIs.dev. Copy this badge onto your site. It links straight back to this profile.

Each of these works best on a reviews or "As cited on SportsAPIs.dev" page that your homepage links to, or in a testimonial strip on the homepage.

Badge

pinnapi is listed on SportsAPIs.dev
<a href="https://sportsapis.dev/apis/pinnapi" title="pinnapi on SportsAPIs.dev">
  <img src="https://sportsapis.dev/assets/images/badges/listed-on-sportsapis.svg"
       alt="pinnapi is listed on SportsAPIs.dev" width="220" height="48">
</a>

Text link

<a href="https://sportsapis.dev/apis/pinnapi">Read the pinnapi review on SportsAPIs.dev</a>

Review quote

<blockquote>
  Pinnacle odds with SSE drop alerts and a permanent free tier.
</blockquote>
<p><a href="https://sportsapis.dev/apis/pinnapi">SportsAPIs.dev review</a></p>

Want a Featured Partner spot or to update your listing? Partner with us โ†’