Skip to content
pinnapiPublic

About

Official Python & JavaScript SDKs for pinnapi.com — real-time Pinnacle odds, dropping-odds alerts & steam-move detection API. The drop-in alternative to the closed Pinnacle API.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

pinnapi SDK — real-time Pinnacle odds API for Python & JavaScript

PyPI npm CI License: MIT

Official client libraries for pinnapi.com — real-time Pinnacle odds, dropping-odds alerts, and steam-move detection over REST, Server-Sent Events, and WebSocket. Live and prematch, across 10+ sports, with ~15–40 ms frame-to-client latency.

Does Pinnacle still have a public API? No. Pinnacle closed its public API on July 23, 2025 — only bespoke commercial/academic access remains. pinnapi is an independent drop-in alternative to the Pinnacle API: the same familiar response shape, served from its own real-time feed. Swap the base URL and API key in existing Pinnacle-style client code; no Pinnacle account needed.

Get a free trial key in seconds at pinnapi.com — no card, no email verification; the key is your login.


Install

pip install pinnapi        # Python 3.8+  (requests only)
npm install pinnapi        # Node 18+     (zero dependencies, TypeScript types included)

Quickstart — Python

from pinnapi import Client, SPORTS

api = Client("YOUR_KEY")

# Live soccer markets — moneyline, spreads, totals, team totals, every period
events = api.markets(sport_id=SPORTS["soccer"])

# Prematch fixtures
fixtures = api.prematch_fixtures(sport_id=SPORTS["tennis"])

# Real-time odds-drop alerts (SSE) — fires the instant a price falls past your threshold
for drop in api.stream_drops(min_drop=5):
    print(f'{drop["home"]} v {drop["away"]} · {drop["market"]} '
          f'{drop["from"]} → {drop["to"]} (▼{drop["drop_pct"]}%)')

Quickstart — JavaScript / TypeScript

import { Client, SPORTS } from "pinnapi";

const api = new Client("YOUR_KEY");

const events = await api.markets({ sportId: SPORTS.soccer });

for await (const drop of api.streamDrops({ minDrop: 5 })) {
  console.log(`${drop.home} v ${drop.away} · ${drop.market}`,
              drop.from, "→", drop.to, `▼${drop.drop_pct}%`);
}

More runnable code in examples/.

Why Pinnacle odds?

Pinnacle is the market's reference price — a low-margin, high-limit book that moves its line instead of banning winners. That makes its odds the closest thing to a consensus "true" probability, which is why closing-line value (CLV) is measured against it. When Pinnacle's line breaks, the soft books take seconds to follow; everything in between is the window for arbitrage, +EV betting, and steam chasing. This feed is push, not poll — you hear about the move when it happens, not on your next request.

What's in the box

Surface Endpoint Use it for
REST markets GET /kit/v1/markets Live or prematch snapshots for a sport
REST event GET /kit/v1/details One live event, full structure
REST prematch GET /kit/v1/prematch/{fixtures,markets,lines} Pre-game boards
Drops buffer GET /api/drops "What just dropped" without an open connection
SSE streams /odds-drop, /odds-drop-prematch Real-time drop alerts (the point of the product)
WebSocket /ws/feed (add-on) Every raw Pinnacle frame, byte-identical

Sports: soccer, tennis, basketball, hockey, football, baseball, rugby, MMA, boxing, volleyball/handball, esports, golf. No-vig fair prices included.

FAQ

Is this an alternative to the closed Pinnacle API? Yes — drop-in compatible response shapes; migrate by swapping base URL + key.

How fast is it? ~15–40 ms from Pinnacle frame to your client over SSE/WebSocket. Polled aggregators are typically seconds stale.

Is there a free tier? A free trial key (no card) covers all REST endpoints at 100 requests/day. SSE drop streams are on paid plans, from $99/mo.

Historical odds? No — this is a real-time feed. Buffer the stream yourself, or query /api/drops for recent drops.

Docs? Human docs at pinnapi.com/docs · LLM-friendly single-file reference at pinnapi.com/llms-full.txt · guides on the blog.

Repository layout

python/       pip install pinnapi   — source, tests (unittest)
javascript/   npm install pinnapi   — source, types, tests (node --test)
examples/     runnable drop-alert bots in both languages

Contributing & support

Issues and PRs welcome — see CONTRIBUTING.md. Commercial support: info@pinnapi.com.

pinnapi is an independent service, not affiliated with or endorsed by Pinnacle. MIT licensed.

About

Official Python & JavaScript SDKs for pinnapi.com — real-time Pinnacle odds, dropping-odds alerts & steam-move detection API. The drop-in alternative to the closed Pinnacle API.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages