Filter Pinnacle odds by league id
Answer: every event has league {id, name, group}. Look the id up once with /v1/events?sport=soccer&q=<league name>, then filter with league=<id> on /v1/odds, /v1/events and /v1/drops, or "leagues":[id] in a WebSocket subscribe. Several ids are comma-separated (league=1980,2627). Ids are Pinnacle's own, so they stay stable while names can vary.
1. Find the id#
curl -s "https://pinnfeed.io/v1/events?sport=soccer&q=premier&limit=50" \
-H "x-api-key: ps_live_your_key" | jq -r '.events[] | "\(.league.id)\t\(.league.name)\t\(.league.group)"' | sort -u
group is Pinnacle's grouping (usually the country or region), which helps tell apart leagues with similar names.
2. Filter REST#
curl -s "https://pinnfeed.io/v1/odds?sport=soccer&league=LEAGUE_ID&market=moneyline,total&main=true" \
-H "x-api-key: ps_live_your_key"
The same league parameter works on /v1/drops (biggest price drops in the last N minutes) to watch one competition only.
3. Filter the WebSocket (Builder)#
{"type":"subscribe","sports":["soccer"],"leagues":[LEAGUE_ID],"markets":["moneyline","spread","total"],"main":true}
The snapshot and every later delta only contain events and markets from those leagues. More options: subscribe filters.
Plans#
League filters work on every plan. Free covers 2 sports with a 30 s delay; Hobby 3 sports in real time over REST; Builder (€99/mo) all 13 sports plus WebSocket push. 3-day trial; a card is required and it is charged after day 3 unless you cancel. Free key · docs.
Educational content for adults (18+).
Competitions that share a sport slug#
Some competitions share a sport slug and only split on league id:
- WNBA has no dedicated slug. Games arrive in
sport=basketball(same slug as the NBA). Look them up withq=wnba, confirmleague.name, and filter by that id. Off-season the list can be empty. PinnFeed does not invent a WNBA fixture list. - EuroLeague is also
sport=basketball— there is noeuroleaguesport slug. Look them up withq=euroleague, confirmleague.name, and filter by that id. EuroCup and domestic leagues (Liga ACB, Lega Basket and others) have their own ids. Basketball moneylines have no draw; quarter and half markets come throughperiod. - College basketball is
sport=basketballas well — do not reuse an NBA or WNBA id. - College football is
sport=american-football, but it is a different league id from the NFL. There is noncaafsport slug. Look it up withq=ncaa(or a college query), confirmleague.name, and filter by that id. Saturday slates can be long — page/v1/oddswithlimit/offset.
Questions people ask#
Is there a list of all league ids?#
There is no separate leagues endpoint. Pull /v1/events for the sport and collect distinct league objects; that is the live list.
Do league ids cover cups and friendlies?#
Each competition Pinnacle lists has its own league id, so cups and friendlies have different ids from the domestic league.
Can I mix league and team filters?#
Yes. league= and q= combine: the event must match both. See odds by team name.