Free trial · 7 days

Get a free key

We email you a link; opening it shows your API key. Then message @oddspush on Telegram and we activate your 7-day free trial. No card.

By continuing you agree to the Terms and the Privacy Policy.

Already have a key?

Lost your key?

Coverage

Pinnacle odds for 13 sports

Last updated

OddsPush streams Pinnacle's live odds for 13 sports over one WebSocket, with a REST API for the current book. Each sport has a sport_id: subscribe to the ones you want and you get moneyline, spreads, totals, team totals and lines by period, depending on the sport, as Pinnacle publishes them.

Pinnacle odds by sport: soccer, tennis, esports and more

The 13 sports are Soccer, Tennis, Basketball, Hockey, American Football, Baseball, Rugby, MMA, Boxing, Volleyball and handball, Esports, Golf and Cricket. Every plan, the free trial included, covers all of them. The id in the first column is the one you put in sports and read back in data.sport_id.

sport_id Sport Markets Periods Live Pre-match board
1 Soccer Moneyline, Spread / handicap, Totals, Team totals, By period Half Yes On request
2 Tennis Moneyline, Spread / handicap, Totals, Team totals, By period Set Yes On request
3 Basketball Moneyline, Spread / handicap, Totals, Team totals, By period Quarter, half Yes On request
4 Hockey Moneyline, Spread / handicap, Totals, Team totals, By period Period Yes On request
5 American Football Moneyline, Spread / handicap, Totals, Team totals, By period Quarter, half Yes On request
6 Baseball Moneyline, Spread / handicap, Totals, Team totals, By period Innings Yes On request
7 Rugby Moneyline, Spread / handicap, Totals, By period Half Yes On request
8 MMA Moneyline, Totals — Yes On request
9 Boxing Moneyline, Totals — Yes On request
10 Volleyball, handball Moneyline, Spread / handicap, Totals, Team totals, By period Set, half Yes On request
11 Esports Moneyline, Spread / handicap, Totals, Team totals, By period Map Yes On request
12 Golf Moneyline — Yes On request
13 Cricket Moneyline, Totals — Yes On request

Use data.sport_id in your code. The number inside topic is Pinnacle's own sport id and does not match this table.

  • Pinnacle soccer odds are sport_id 1: moneyline, spread / handicap, totals, team totals, plus lines by period (half).
  • Pinnacle tennis odds are sport_id 2: moneyline, spread / handicap, totals, team totals, plus lines by period (set).
  • Pinnacle esports odds are sport_id 11: moneyline, spread / handicap, totals, team totals, plus lines by period (map).

Live and pre-match Pinnacle odds

Coverage is live markets for 13 sports. The full pre-match board: on request. Some pre-match prices already travel on the live stream, on the pre channel.

  • pre carries pre-match prices for some upcoming matchups: open markets with versions, like ld. It is not the full pre-match board.
  • A snapshot leaves out a pre-match event priced only on pre unless you ask for pre; otherwise it arrives with its first update on your channels.
  • Over REST, GET /v1/membership lists, per sport id, the pre-match events about to go live.

Odds channels: ld, both, dz, pre and other

An update belongs to one channel, the last segment of its topic: matchups/reg/sp/29/live/ld is ld, matchups/reg/sp/29/pre is pre. Any other last segment is other.

Channel Is it the price? What it carries
ld Yes Live delay. The price Pinnacle displays. Source of truth.
both Yes Both. Displayed prices too, mostly for events that never appear on ld. Read it with ld or you lose whole matches.
dz Volatile Danger zone. Moments of risk: goal threat, break point, imminent suspension. Keep it in a book of its own.
pre Pre-match Pre-match. Pre-match prices for some upcoming matchups, as they travel on the live stream: open markets with versions, like ld. Not the full pre-match board.
other No Other. Any other last segment. Rare. channels never filters these updates out: they reach you whenever their sport or event matches. List other to get their markets in a snapshot.

Subscribe to one sport

After login, one subscribe picks the sport and the channels. By default it also brings a snapshot of what it adds, so you get the current state and every change after it. Set channels, always: without it every channel arrives, dz included.

subscribe · soccer JSON
{"type": "subscribe", "sports": [1], "channels": ["ld", "both"], "snapshot": true}
subscribe · tennis JSON
{"type": "subscribe", "sports": [2], "channels": ["ld", "both"], "snapshot": true}

Subscriptions add up, so send one per sport or list several ids in sports. Over REST, the same filter is a query parameter:

curl Terminal
$ curl -s -H "x-token: $ODDSPUSH_KEY" "https://feed.oddspush.com/v1/events?sport_id=1&channel=ld"
< {"n": 2, "events": [{"event_id": 1638780974, "sport_id": 1, "ld": 3, …}, …]}

Every message, field and close code is in the docs, with full subscribe rules. For a working client, see Pinnacle odds in Python; if you are weighing options, read the Pinnacle API alternative. Paid plans start at $69 a month: see pricing.

All 13 sports, real prices, on your own bot. No card.

Try it free for 7 days

OddsPush is not affiliated with, endorsed by or sponsored by Pinnacle.