Pinnacle NBA moneyline odds API in real time
Answer: PinnFeed's sport slug for NBA (and other basketball) is basketball. Poll GET /v1/odds?sport=basketball&market=moneyline&main=true on Free/Hobby, or subscribe on the WebSocket with "sports":["basketball"],"markets":["moneyline"],"main":true on Builder (€99/mo). There is no separate nba slug — filter by league.name in your client if you only want NBA.
REST snapshot (works on Free with 30 s delay)#
export PINNFEED_KEY="ps_live_..."
curl -sS -H "x-api-key: $PINNFEED_KEY" \
"https://pinnfeed.io/v1/odds?sport=basketball&market=moneyline&main=true&live=true&limit=20"
Each event carries league, home, away, and markets whose outcomes include decimal, american, fair, fairProb.
WebSocket subscribe (Builder)#
// Example Node fragment — needs Builder key
const ws = new WebSocket('wss://pinnfeed.io/v1/stream', {
headers: { 'x-api-key': process.env.PINNFEED_KEY },
});
ws.on('open', () => ws.send(JSON.stringify({
type: 'subscribe',
sports: ['basketball'],
markets: ['moneyline'],
main: true,
live: true,
specials: false,
})));
ws.on('message', (buf) => {
const msg = JSON.parse(buf);
if (msg.type === 'ping') ws.send(JSON.stringify({ type: 'pong' }));
// filter NBA: if (event.league?.name?.includes('NBA')) ...
});
Sports list: schema sport ids. Full client: Python/Node guide.
Trial CTA#
Real-time push needs Builder. 3-day trial; card required, charged after day 3 unless cancelled. Free key: signup.
Questions people ask#
Is the slug nba or basketball?#
basketball. PinnFeed's 13 sports use the slugs in the docs; NBA games arrive under basketball leagues.
Can Free stream live NBA moneylines?#
Free can poll /v1/odds with a 30 s delay and a 2-sport limit. Live WebSocket push starts at Builder.
Is this educational content for adults?#
Yes (18+). Odds tooling only — not betting tips.