On the wire · 15:06:50 UTC Live 131 · Prematch 8,506 · Markets 35,133 Vol. I · No. 1 · Monday 9 November 2026 wss://pinnfeed.io/v1/stream
PinnFeed
Answer · Python · REST

How to get Pinnacle odds in Python (REST)

Updated · PinnFeed · 1 min read

Answer: pip install requests, set PINNFEED_KEY, call GET https://pinnfeed.io/v1/odds with header x-api-key. Free works immediately (30 s delay, 2 sports). For a live in-memory book, use the WebSocket Python example on Builder instead.

Snapshot in ~15 lines#

import os, requests

KEY = os.environ["PINNFEED_KEY"]
r = requests.get(
    "https://pinnfeed.io/v1/odds",
    params={"sport": "soccer", "market": "moneyline", "main": "true", "limit": 20},
    headers={"x-api-key": KEY},
    timeout=15,
)
r.raise_for_status()
for ev in r.json().get("events", []):
    m = next((x for x in ev["markets"] if x["type"] == "moneyline"), None)
    if not m:
        continue
    prices = {o["name"]: (o["decimal"], o["fair"]) for o in m["outcomes"]}
    print(ev["home"], "v", ev["away"], prices)

Other useful endpoints: /v1/sports, /v1/events, /v1/drops, /v1/closing/{id} (Builder+). Reference: REST docs.

When to prefer the WebSocket#

JobUse
Sheets, cron, research pullREST (this page)
Steam bot, live book, Telegram alertsWebSocket (example)

Trial CTA#

Free key · Builder for push (3-day trial; card required, charged after day 3 unless cancelled).

Questions people ask#

Do I need websockets on Free?#

No. Free is REST-only by design.

Where is pagination?#

limit and offset on list endpoints — see REST.

Is this educational content for adults?#

Yes (18+).

The WebSocket plan: Builder, €99/mo.

Real-time Pinnacle odds pushed over one WebSocket, all 13 sports, every market, no-vig fair odds and closing lines. 3 days free, cancel in one click.

Form K-1 · Free API key

Get your free API key.

No password. We email you a link; click it and your key is on screen.

One free key per email. Link valid for 20 minutes.