pinnwire
v0.1.0
Published
Real-time Pinnacle odds API client — live + prematch odds, dropping-odds alerts (SSE), zero dependencies. Free demo key: 'demo'.
Maintainers
Readme
pinnwire
Real-time Pinnacle odds API client. Live + prematch odds for 13 sports, dropping-odds alerts, no-vig fair prices. Zero dependencies, Node 18+, TypeScript types included.
Pinnacle closed its public API in July 2025 — PinnWire is an independent real-time feed. The public demo key works with no signup:
const { Client, SPORTS } = require("pinnwire"); // or: import { Client } from "pinnwire"
const api = new Client("demo"); // public demo key — try it right now
const board = await api.markets(SPORTS.SOCCER); // live soccer odds, decimal
const drops = await api.drops({ mode: "live", min_drop_pct: 5 }); // what just dropped
console.log(drops.drops[0]); // { home, away, market, from, to, drop_pct, nvp, ... }Streaming drop alerts (paid plans)
const api = new Client(process.env.PINNWIRE_KEY);
for await (const d of api.streamDrops({ min_drop: 5 })) {
console.log(d.home, "v", d.away, d.from_price, "->", d.to_price, "fair:", d.nvp);
}Auto-reconnects with backoff. { prematch: true, recheck: 30 } streams prematch drops re-verified after 30s.
All methods
| Method | Endpoint |
| --- | --- |
| markets(sportId, opts) | live odds board |
| prematchFixtures(sportId, opts) | upcoming fixtures |
| details(eventId) | one event |
| prematchLines(eventId, opts) | compact full-game lines |
| drops(opts) | recent drops + no-vig fair price |
| streamDrops(opts) | SSE push alerts (async iterator) |
| health() | feed status |
include_specials: 1 unlocks player props, exact scores, futures. 429s are retried automatically honoring Retry-After.
Keys & pricing
demo = public key, 10 req/min, REST only. Free personal key (100/day forever, no card) at pinnwire.com. Paid plans from $89/mo. Full docs: pinnwire.com/docs.html · plain-text API reference for LLMs: pinnwire.com/llms-full.txt
18+ · data service, not a bookmaker · not affiliated with Pinnacle.
