PinnFeed API Review 2026
PinnFeed pushes Pinnacle's live and pre-match prices over one filtered WebSocket and serves the same data over REST, with a no-vig price on every outcome. A free REST plan runs 30 seconds behind, and paid plans start at €29 a month.
PinnFeed at a Glance
Streaming from: Builder, €99/mo (about $115; 3 WebSocket connections, 3-day trial with card)
Green = available · amber = unverified or varies by plan · crossed out = not available. Pricing: 💲 ≈ $20/mo up to 💲💲💲💲💲 = $1,000+/mo. From our directory research.
What PinnFeed Is
PinnFeed is a self-serve API for Pinnacle odds. It reshapes Pinnacle's live and pre-match prices into one normalized schema and sends them two ways: a WebSocket that pushes each change as it happens, and a REST API for snapshots. A hosted MCP server lets an AI assistant read the same data.
Every outcome carries the American price, the decimal price and a no-vig fair price, and every market carries Pinnacle's maximum stake and its margin. That last detail matters more than it looks: max stake is a rough read on how much Pinnacle trusts a line.
You don't need a Pinnacle account. PinnFeed describes itself as an independent data service with no tie to Pinnacle or any bookmaker. It launched in November 2026, so the public track record is short, but the docs already cover the full protocol, the error codes and the limits per plan.
Coverage and Markets
PinnFeed carries 13 sports, each with a fixed id: soccer, tennis, basketball, hockey, American football, baseball, rugby, MMA, boxing, volleyball and handball, esports, golf and cricket.
Market depth depends on the plan:
- Free and Hobby: the main moneyline, spread and total of each event, for the sports you pick in the dashboard (two on Free, three on Hobby).
- Builder and above: all 13 sports, with moneyline, spread, total and team total for every period, plus alternate lines, props and futures.
Events come with a start time, a status and, for in-play games, the live score and clock when Pinnacle has them. Each in-play event points back to its pre-match record through parentId, so you can follow one game from the opening line to the final whistle. When we checked the public status endpoint on a Monday afternoon (14:30 UTC, November 9, 2026), it reported 73 live events, 8,168 pre-match events and about 33,000 open markets.
The WebSocket Stream and REST API
The stream lives at wss://pinnfeed.io/v1/stream. After you connect, you send a subscribe message that filters on the server side by sport, league, event, market type, live or pre-match, and main lines only. The server answers with a snapshot in parts of up to 400 events, then sends only the changes. Each change is an upsert with the full object or a remove with an id, so the client logic is a dictionary and two operations.
A few details show that someone thought about production use:
- Compression: frames over 1 KB are compressed, and the docs say snapshots shrink 5 to 10 times.
- Heartbeat: a ping every 20 seconds, and silent connections close after 60.
- Clear close codes: a slow reader that queues more than 16 MB gets close code 4008, so you know why you dropped.
- New filters on the fly: send
subscribeagain to change the filter and get a fresh snapshot, with no reconnect.
REST at https://pinnfeed.io/v1 mirrors the stream. /v1/odds returns events with their markets, /v1/events returns the fixture list, and both take the same filters. Pro adds a raw mode that forwards upstream frames untouched. For more on push feeds and polling, see our live odds guide.
Fair Prices, Drops and Closing Lines
Three extras sit on top of the raw prices:
- No-vig fair prices: every outcome carries
fairandfairProb, worked out by the multiplicative method (each implied probability divided by their sum). The raw prices stay in the payload, so you can apply the power or Shin method yourself. The pricing table lists fair prices on every plan, Free included. - Dropping odds:
GET /v1/dropsreturns the biggest price drops per outcome over a window of 1 to 60 minutes, with a minimum drop you set. It's a one-call steam detector. - Closing lines: at kick-off PinnFeed records every open market with its margin, max stake and fair prices.
GET /v1/closing/{eventId}returns one game, andGET /v1/closing?date=YYYY-MM-DDpages through a whole UTC day. Builder and above.
The closing archive starts on the day the service launched, so it's young. It grows every day, and Enterprise plans can export the whole archive as CSV or Parquet. If you backtest over past seasons today, pair PinnFeed with a historical odds source and let its closing records build forward.
MCP Server for AI Assistants
PinnFeed hosts an MCP server at https://pinnfeed.io/mcp, so Claude, ChatGPT, Cursor or VS Code can ask for odds in plain language. It has 8 tools, among them live and pre-match odds, event search, drops and closing odds. Your API key goes in an Authorization: Bearer header, or in the URL for clients that cannot send headers.
The server follows your plan. A free key gets delayed data, closing odds need Builder, and each tool call counts as one REST request. The docs give a setup line for each client. Our sports MCP servers page covers the wider field.
PinnFeed Pricing and the Free Plan
Prices are in euros and include VAT:
- Free, €0: REST only, 30 seconds behind, 2 sports, main lines, 1,000 requests a day. No card.
- Hobby, €29 a month: real-time REST, 3 sports, main lines, 2 requests a second.
- Builder, €99 a month: the WebSocket with 3 connections, all 13 sports and every market, 10 requests a second and closing-line history.
- Pro, €199 a month: 10 connections, raw upstream frames, 30 requests a second and priority support.
- Enterprise, custom: bulk closing exports, an SLA and a commercial licence to redistribute.
Hobby, Builder and Pro start with a 3-day free trial. A card is required at checkout and charged after day 3 unless you cancel. You can also prepay 1, 3 or 12 months in USDC, USDT, SOL or BTC, and crypto plans never renew on their own. The free plan is the easy first step: it shows you the schema and the fair prices before you pay for speed.
Getting an API Key
Get a free key on the sign-up page. You enter an email address, PinnFeed sends a link that works for 20 minutes, and the key appears on screen. There's no password and no card, and each email gets one free key (checked November 2026).
Keys start with ps_live_ and show only once, so copy yours straight away. An account can hold up to 20 active keys, one per project or server, and the plan limits count across all of them. Send the key in the x-api-key header. Authorization: Bearer works too, and ?key= covers browsers and WebSocket clients that cannot set headers.
Hobby, Builder and Pro each start with a 3-day free trial. You add a card at checkout, and Stripe charges it after day 3 unless you cancel. Your free key stays the same and gains the new limits when the trial starts.
A First Request in Python
This sample calls GET /v1/odds for soccer with main lines only. The answer holds a count and a list of events, each with home, away and its markets, and every outcome carries a decimal price and a no-vig fair price. It comes from the docs, checked November 2026.
import os
import requests
resp = requests.get(
"https://pinnfeed.io/v1/odds",
params={"sport": "soccer", "main": "true", "limit": 5},
headers={"x-api-key": os.environ["PINNFEED_API_KEY"]},
timeout=10,
)
resp.raise_for_status()
data = resp.json()
print(data["count"], "events")
for event in data["events"]:
for market in event["markets"]:
prices = [(o["name"], o["decimal"], o["fair"]) for o in market["outcomes"]]
print(event["home"], "v", event["away"], market["type"], prices)
On the Free plan, pick soccer as one of your two sports in the dashboard first, or the call returns 403 sport_not_in_plan. Free answers run 30 seconds behind and carry an X-Data-Delay-Seconds header.
Rate Limits, Docs and SDKs
REST limits are per key, as a token bucket that allows bursts of twice the rate. Free gets 1 request a second and 1,000 a day, reset at 00:00 UTC. Hobby gets 2 a second, Builder 10, Pro 30 and Enterprise 100, with no daily cap on paid plans. WebSocket connections count per account: 3 on Builder and 10 on Pro. Past a limit you get HTTP 429 with rate_limited or daily_quota, a Retry-After header in seconds and retryAfterMs in the body (checked November 2026).
There's no official SDK or OpenAPI spec. The docs carry examples in Python, Node.js, browser JavaScript and curl, plus guides for a stream client, a CLV tracker and a Telegram bot. GET /health needs no key and reports feed status, upstream lag and event counts. Support runs through email, with priority support on Pro.
Who PinnFeed Is For
PinnFeed suits anyone who treats Pinnacle as the reference price:
- Value bettors who compare soft-book prices with Pinnacle's no-vig fair price.
- Steam chasers who want dropping odds from one REST call or the live stream.
- CLV trackers who grade each bet against Pinnacle's closing price.
- Builders of AI tools who want odds inside Claude or ChatGPT through MCP.
- Hobby projects that fit in two sports and a 30-second delay, at no cost.
The pricing page allows commercial use inside your own product. Showing a few prices, fair odds or edges to your users is fine, but resale of the feed itself needs an Enterprise licence. PinnFeed covers one book, so if you need prices from several, pair it with an aggregator from the API directory.
Verdict
PinnFeed gets the basics of a Pinnacle feed right on day one. The protocol is simple, the docs are complete, and max stake, margin and a fair price ride along on every market. The free plan is generous enough to build against, and the 3-day trial lets you test the stream before the first charge.
The open question is time. The service and its closing archive are both brand new, so watch its uptime for a few weeks before you hang a production bot on it. Get a free key, pull a few snapshots, and decide from there.
Last updated: · How providers get listed
Frequently Asked Questions
PinnFeed Alternatives
Similar providers from the directory worth shortlisting alongside PinnFeed.
Want Pinnacle prices in your code today?
The free key takes an email address and no card. Pull delayed REST snapshots for two sports, then start the 3-day Builder trial when you want the live stream.
Are You the Team Behind PinnFeed?
Show developers you're independently listed on SportsAPIs.dev. Copy this badge onto your site. It links straight back to this profile.