Football odds feed from Pinnacle
Answer: PinnFeed's sport=soccer feed carries Pinnacle football markets: moneyline (1X2), spread (Asian handicap), total goals and team totals, for each period Pinnacle prices, prematch and in-play. Poll GET /v1/odds?sport=soccer on any plan, or get every change pushed over the WebSocket on Builder (€99/mo).
REST#
export PINNFEED_KEY="ps_live_..."
curl -sS -H "x-api-key: $PINNFEED_KEY" \
"https://pinnfeed.io/v1/odds?sport=soccer&market=moneyline,spread,total&main=true&limit=50"
Filter by league id (list leagues from GET /v1/events?sport=soccer), live=true or live=prematch, or q= for a team name.
WebSocket (Builder)#
{ "type": "subscribe", "sports": ["soccer"], "markets": ["moneyline", "spread", "total"], "main": true }
You get subscribed, then snapshot frames, then delta frames as prices move. The server pings every 20 seconds; answer with {"type":"pong"}. Client: Python, Node reconnect.
Market pages#
| Market | How to request it | Longer page |
|---|---|---|
| 1X2 / moneyline | sport=soccer&market=moneyline | (covered above) |
| Asian handicap | sport=soccer&market=spread — not a separate type | (covered above) |
| Total goals | sport=soccer&market=total | (covered above) |
| Corners | see the corners page | soccer corners |
| Opening and closing | Builder /v1/closing | football open/close, European closing lines |
Plans#
Free: 30-second delay, pick 2 sports, main markets. Hobby (€29/mo): real-time REST. Builder: WebSocket, all markets, props and closing-line history. Paid plans: 3-day trial; a card is required and it is charged after day 3 unless you cancel.
Educational content for adults (18+). No tips, no guaranteed profit.
Filter by competition#
When Pinnacle lists a competition it appears in the soccer feed. Look the id up once with /v1/events?sport=soccer&q=…, confirm league.name and league.group, then filter /v1/odds, /v1/drops or a Builder subscribe with that league id. q= is a search, not a unique key.
| Competition | Typical q= | What to watch for |
|---|---|---|
| Premier League | premier | Confirm the English top flight in league.name. |
| La Liga | liga | Many leagues contain "Liga" (Spain's second tier and other countries). Use group. Copa del Rey and European nights have their own ids. Kick-off times are UTC; convert to Europe/Madrid. |
| Serie A (Italy) | serie a | Italy and Brazil both have a Serie A — filter by id, not the name. Serie B and Coppa Italia have their own ids. Kick-off times are UTC; convert to Europe/Rome. |
| Bundesliga | bundesliga | Also matches Germany's second tier and Austria's top flight. DFB-Pokal is a separate id. Kick-off times are UTC; convert to Europe/Berlin. Early prices often carry a lower maxStake. |
| Brasileirão | brazil | Do not search Serie A alone. Série B, state championships and Copa do Brasil have their own ids. Kick-off times are UTC; convert to America/Sao_Paulo. |
| Champions League | champions | Other competitions can contain "Champions" — confirm the id. Tournament-winner outrights, when listed, are specials on Builder and Pro (special + participants); pass specials=false to hide them. Free and Hobby get main markets only. |
| Ligue 1 | ligue | Also matches Ligue 2 and some French-speaking leagues; try q=france if needed. Coupe de France and European nights have their own ids. Kick-off times are UTC; convert to Europe/Paris. |
| MLS | mls | If that finds nothing, try q=usa. Playoffs and cups can be separate ids. The slug is soccer, so moneylines include the draw. Kick-off times are UTC; convert to the user's US time zone. |
| J-League | j-league or japan | J2, J3 and cups can share the search; pick J1 by league.name. Names are usually romanized English. Kick-off times are UTC; convert to Asia/Tokyo. Asian handicap is the spread market (quarter lines included). |
| Copa Libertadores | libertadores | Qualifying rounds may be a separate id from the group stage; Copa Sudamericana is a different competition. Each leg of a two-legged tie is its own event: the moneyline is 90 minutes of that leg, not who goes through. Kick-off times are UTC; convert to America/Sao_Paulo or America/Argentina/Buenos_Aires. |
Reuse the numeric id afterwards rather than matching on the name every time. The same pattern is documented with working code in filter by league id.
Soccer market types#
Soccer market types on this feed:
- Moneyline is three-way (
home/draw/away). The catalog slug issoccer; American football isamerican-football. - Asian handicap arrives as
spread(there is no separateasian_handicaptype). Each outcome haspointsfor the line. Quarter and half handicaps useperiod. - Totals are
total(andteam_totalwhere Pinnacle offers them). Usemain=truefor the main line; leave it unset on Builder to receive alternates. - Period markets (halves, and other periods Pinnacle prices) share the same types with
period≠ 0. There is nomarket=periodfilter — read the period field.
Questions people ask#
Does the feed include scores?#
Events carry score, clock and status fields where Pinnacle provides them. PinnFeed is an odds feed, not a stats provider: no lineups or player data.
Which leagues are covered?#
Whatever Pinnacle prices. List current leagues and events with GET /v1/events?sport=soccer.
Other bookmakers?#
No. PinnFeed carries Pinnacle only. See multi-book vs Pinnacle-only.