Skip to main content
Read Hyperliquid and Lighter order books at the depth your job needs: L2 aggregated price levels on every venue, L3 individual orders on Lighter, and L4 resting orders with wallet attribution on Hyperliquid core, Spot, HIP-3, and HIP-4. Pick the venue family first, then the depth; each is a separate dataset with its own routes. Plans set capacity and how far back a request can reach, not which routes you can call. Whether a market has a given depth, and from when, depends on its venue family and symbol, so check the symbol’s coverage before you rely on a route.

Get an L2 snapshot

The path and symbol format change by venue. Lighter exposes an L3 individual-order book where Hyperliquid exposes L4.
Plain perp symbols such as BTC and ETH. Use the /l2 routes for full-depth aggregated L2 (request levels via depth) from 2026-03-11 01:03 UTC onward.
On Hyperliquid core and HIP-3, choose the route by job: Hyperliquid and HIP-3 native L2 routes mirror Hyperliquid’s source snapshot and top out at 20 levels per side. A request like depth=200 on /v1/hyperliquid/orderbook/BTC/history still returns at most 20 levels. For 200-level or full-depth aggregated Hyperliquid/HIP-3 L2, use the /l2 route family.

Request parameters

Use /history with start and end for a past window. timestamp is for snapshot-at-time routes, not history routes. Before a long historical window, check it with Data quality. The L2 snapshot returns the same envelope across venues:

Response fields

Responses use the { success, data, meta } envelope; the fields below are data. A price level is px (price), sz (total size), and n (order count). px, sz, mid_price, spread, and spread_bps are decimal strings, so parse them as decimals, not floats. n aggregates the orders at that level; L4 lists each one with its oid and user_address. Full field meanings live in the field dictionary, and Example responses has more payload shapes.

Choose a depth

L2Aggregated levels

Price levels with total size and order count (px, sz, n). The shape of the book.

L3Individual orders

Each order at a level, on Lighter. Order-level detail without full lifecycle.

L4All served resting-order levels

Resting orders with oid and user_address across all served levels, plus diffs to reconstruct the book.

Each depth has its own page with routes, parameters, an example, and the export schema:

L2 order book

Aggregated price levels (px, sz, n): the shape of the book, spreads, or a light history window. Native venue snapshots everywhere, and full-depth aggregated L2 on Hyperliquid core and HIP-3.

L3 order book

Individual orders on Lighter, without full lifecycle: up to 250 resting orders per side with order index and owner account index.

L4 order book

Every resting order on Hyperliquid families with oid and user_address, plus diffs and reconstruction: microstructure, queue position, or rolling the book forward from a checkpoint.
For file exports, use Export schemas. The Data Catalog keys keep L2, L3, L4, and order events separate.

Full-depth L2 from L4

Hyperliquid core and HIP-3 have a primary full-depth L2 route family derived from L4, served from 2026-03-11 01:03 UTC: The /l2/history routes return the checkpoint’s stored full depth and currently do not take a per-request depth override. Ask for a bounded start/end window and paginate with cursor.

L4 order-level book

L4 is the whole book, order by order: resting orders across all served levels with oid and user_address, with the fields needed for deterministic order-level reconstruction. The L4 routes are in the venue tabs above (/orderbook/{symbol}/l4, /l4/diffs, /l4/history). For what happened to each order around the book, use Order history and Order flow.
bids and asks are truncated above. That real snapshot carried 24,501 bids and 18,101 asks: the entire resting book, each order with its own oid and user_address.

L4 response fields

price and size are numbers in L4 payloads. L2 uses px/sz decimal strings; the Lighter L3 route instead uses numeric price, remaining_size, original_size, order_index, and owner_account_index fields. Check types per route.

Reconstruct from diffs

A snapshot is a checkpoint. To follow the book over time, take an l4 checkpoint, then apply l4/diffs in order (honoring the optional insert_before field on new-order diffs; see L4 order books), or pull l4/history for a window. diffs_applied: 0 means a clean checkpoint; a higher number means it was rolled forward from the last one. When sequence and gap handling matter, move to WebSocket L4 order book and WebSocket replay, or let SDK reconstruction hold local book state for you. A current L2 snapshot is enough to inspect the book or a spread. It is not the same dataset as a replayable L4 history window, which can be reconstructed the same way twice.

Stream or replay it

Hyperliquid core, Spot, and HIP-3 stream live books. Subscribe to orderbook for L2 and l4_diffs or l4_orders for order-level updates on Hyperliquid core. Spot and HIP-3 use prefixed L2 and L4 variants. Lighter streams live L2 books on lighter_orderbook; see Lighter WebSocket channels. Current Lighter L3 snapshots use REST, and lighter_l3_orderbook supports historical WebSocket replay but not live subscriptions. Both Lighter book channels support historical replay, and historical data is also available through REST and exports. HIP-4 streams hip4_l4_diffs and hip4_l4_orders; HIP-4 current order-book reads use REST, and stored hip4_orderbook history remains replayable. For sequence and gap handling, see WebSocket L4 order book and WebSocket replay.
The full channel matrix is on WebSocket channels.

Export in bulk

Order books export at three depths, delivered as Parquet with ZSTD compression: l2_orderbook ($3/GB, $5 minimum), l3_orderbook ($3/GB, $5 minimum), and l4_orderbook ($4/GB, $12.50 minimum). Keep L2, L3, and L4 in separate tables. Build a selection in the Data Catalog; columns and coverage keys are on Export schemas.

Next step

For per-order depth, diffs, and reconstruction, continue to L4 order book.
Last modified on October 6, 2026