Skip to main content
The bbo channel delivers only the best bid (buy-one) and best ask (sell-one) for a contract. 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. bbo is pushed when the top of the book changes, throttled per contract to at most one frame every 20 ms. Changes inside that interval are coalesced: when it ends, the latest state is pushed, so the last frame you receive always reflects the current top of book. Do not count frames as book changes. Pushing begins at the first book change after you subscribe — there is no snapshot on subscribe.

Subscribing

Replace "1" with the contract ID you want to track, passed as a string.

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.
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.
Each frame is the current top of book, not a delta — always act on the most recent one.