Skip to content

Bookmakers

The SDK can stream from any combination of supported bookmakers in a single connection. One source is wired up today; more are reserved in the type system as we add them.

A sharp Asian sportsbook with deep liquidity and tight margins.

  • Sports: basketball (NBA + international leagues currently in active coverage; football and tennis on the roadmap).
  • Markets: moneyline, handicap, total — all periods (full match, halves, quarters, overtime).
  • Player props: planned (basketball player props over/under — points, rebounds, assists, threes, etc.).
  • Liquidity: quote.size exposed when the bookmaker reports it.
  • Update cadence: WebSocket-driven, sub-second on active markets.
  • Order book: not exposed (top-of-book quote only).

These identifiers exist in the Bookmaker type but are not produced by the gateway today: winamax, betclic, parions_sport, unibet, stake. They will appear in events as we wire each one up — your code’s narrowing on bookmaker will continue to compile.

If you’d like priority on a specific bookmaker, open an issue on the SDK repo.

The Bookmaker type is a TypeScript string-literal union, so your editor autocompletes the valid values:

import type { Bookmaker } from 'realtimeodds'
const sources: Bookmaker[] = ['ps3838']
const events = [...client.snapshot().sportEvents.values()]
.filter(ev => sources.includes(ev.bookmaker))

Every bookmaker-emitted event id has the form:

vmid:<bookmaker>:<external_id>

You can parse the bookmaker out of an id, but event.bookmaker is exposed as a computed property — there is no need to do it yourself.

This is alpha. Coverage of leagues and markets within each bookmaker is expanding actively. Today we focus on parity for NBA on ps3838 because that’s where the use cases land first. Football and tennis will follow, alongside additional bookmakers.