Skip to main content
The bbo channel delivers only the best bid (buy-one) and best ask (sell-one) for a contract on every block. If your application only needs the spread or top-of-book price — for example, to display a mid-price or check whether an order would cross — bbo is significantly more bandwidth-efficient than subscribing to the full l2Book.

Subscribing

Replace "1" with the numeric contract ID you want to track.

Push message format

Field reference

number
Server send timestamp in Unix milliseconds. Use this for latency measurement and event ordering across channels.
string
The contract ID this update belongs to.
number
Block timestamp in Unix milliseconds at which this top-of-book snapshot was captured.
number
The same monotonically increasing version counter used by l2Book for the same asset. You can use this to correlate bbo messages with l2Book messages or to deduplicate when multiple updates arrive for the same block.
object | null
Best bid. null when there are no resting bids on the book.
  • px (string) — Best bid price (raw).
  • sz (string) — Total size available at the best bid (raw).
  • n (number) — Number of orders resting at the best bid price.
object | null
Best ask. null when there are no resting asks on the book.
  • px (string) — Best ask price (raw).
  • sz (string) — Total size available at the best ask (raw).
  • n (number) — Number of orders resting at the best ask price.

Comparing bbo and l2Book

  • You only need to display or act on the top-of-book price.
  • You are building a price ticker, mid-price display, or spread monitor.
  • You want to minimise data transfer on mobile or metered connections.
  • You are subscribing to many assets simultaneously and bandwidth matters.
Both bbo and l2Book share the same bookVersion counter for a given asset. If you subscribe to both on the same connection, you can use bookVersion to verify they are in sync and to detect any gaps.