# Hyperliquid BBO - Best Bid and Offer

BBO is the lowest-bandwidth order-book view. It reports the best bid and best ask for each requested market, including price, resting size, and order count at each top level.

## Access

| Availability | Access                                            | Details                                                                                                                                           |
| ------------ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| Live         | [StreamBbo](https://www.dwellir.com/docs/hyperliquid/stream_bbo)         | Provides typed V3 updates for up to 20 coins.                                                                                                     |
| Live         | [Order Book WebSocket BBO](https://www.dwellir.com/docs/hyperliquid/bbo) | Provides the live JSON `bbo` channel.                                                                                                             |
| Archival     | [S3 Bucket](https://www.dwellir.com/docs/hyperliquid/historical-data)    | Historical top-of-book reconstruction requires a known snapshot or state seed followed by ordered book diffs; raw records alone are insufficient. |

## Live behavior

[StreamBbo](https://www.dwellir.com/docs/hyperliquid/stream_bbo) requires 1-20 coins after duplicate removal. It sends a typed initial current value for each requested coin, then sends another update only when that coin's top of book changes. `bid` or `ask` is unset when that side is empty, and ordering between different coins is unspecified.

BBO is a live view with no historical replay. Snapshot-style recovery can send the current value again after subscriber lag. If the RPC closes with `ABORTED`, reconnect to receive fresh current values.

## Sample data

This synthetic V3 protobuf payload visibly redacts the market identifier:

```protobuf
coin: "<redacted-market>"
time: 1785736814057
block_number: 1058646974
bid: { px: "114250.0" sz: "1.35" n: 4 }
ask: { px: "114251.0" sz: "0.82" n: 3 }
```

Treat each side as optional. An empty side is represented by an unset message field, not a zero-valued price level.

## Related pages

- [Order book WebSocket guide](https://www.dwellir.com/guides/order-book-server) — Build a resilient top-of-book and spread client.
- [L2 books](https://www.dwellir.com/docs/hyperliquid/data-catalog/derived/l2-book) — Move from top-of-book prices to aggregated market depth.
