Answer · Python · REST
How to get Pinnacle odds in Python (REST)
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#
| Job | Use |
|---|---|
| Sheets, cron, research pull | REST (this page) |
| Steam bot, live book, Telegram alerts | WebSocket (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+).