Skip to main content
Every Bulk Exports file is Apache Parquet compressed with zstd. This page lists the columns of each file in the order they appear, for every data type and venue. It is generated from the definitions the export service uses to write the files and the README.md in each order. The README in your order describes the files you received and is authoritative.

How to read these tables

  • Timestamps. timestamp[ms, UTC] columns have millisecond precision in UTC. A file holds the rows whose timestamp falls on a UTC date from your start date through your end date, inclusive.
  • Row order. Rows are ordered by timestamp, except L4 order book changes and order events, which are ordered by (block_number, seq). Apply Lighter L2 changes in (timestamp, sequence) order.
  • Nulls. A column marked (nullable) can be null. Every other column always has a value, though a string can be empty and a number can be zero. Nullability is checked against how each column is written, not only against the README.
  • Sell side. Hyperliquid perpetual trades and liquidations files and Lighter trades files write a sell as S. The REST API and WebSocket return A for the same sell, so map S to A before joining a file to API data. HIP-3, Spot, and HIP-4 files use A.
  • Spot symbols. Spot files hold the venue’s wire-format coin (PURR/USDC or @<index>) in coin, not the dashed pair name (HYPE-USDC) used in the Data Catalog and REST paths.
  • Lighter trades end at the last finalized trade, the same boundary the REST trade routes report as meta.finalized_through.
  • File names. The main file for each market and data type is <symbol>_<data type>_<start>_to_<end>.parquet, with : and / in the symbol written as _. Companion snapshot files are named the same way with l4_checkpoints or l2_checkpoints as the data type; L4 checkpoints come in one file per 7 days of the range.

L2 Order Book (l2_orderbook)

L2 Order Book: Hyperliquid perpetuals

L2 order book snapshots (~1.2 second resolution). Rows are ordered by timestamp. bids and asks: JSON text: an array of price levels, best price first. Each level is an object with px (price as a decimal string), sz (total size at that price as a decimal string), and n (number of resting orders at that price). Example, with illustrative values:

L2 Order Book: Hyperliquid Spot

L2 order book snapshots for Hyperliquid spot pairs. Live coverage from 2026-05-05. Rows are ordered by timestamp. bids and asks: JSON text: an array of price levels, best price first. Each level is an object with px (price as a decimal string), sz (total size at that price as a decimal string), and n (number of resting orders at that price). Example, with illustrative values:

L2 Order Book: HIP-3

L2 order book snapshots for HIP-3 instruments. Rows are ordered by timestamp. bids and asks: JSON text: an array of price levels, best price first. Each level is an object with px (price as a decimal string), sz (total size at that price as a decimal string), and n (number of resting orders at that price). Example, with illustrative values:

L2 Order Book: HIP-4

HIP-4 L2 order book snapshots for outcome markets. Prices are implied probabilities in [0, 1]. Rows are ordered by timestamp. bids and asks: JSON text: an array of price levels, best price first. Each level is an object with px (price as a decimal string), sz (total size at that price as a decimal string), and n (number of resting orders at that price). Example, with illustrative values:

L2 Order Book: Lighter and Lighter on Robinhood Chain

L2 order book changes (event resolution): every individual price-level change. Delivered together with a second file of periodic full snapshots (l2_checkpoints). See Rebuilding order books for how to apply them. Rows are ordered by timestamp.

L2 Order Book: Lighter and Lighter on Robinhood Chain: l2_checkpoints snapshots file

Periodic full L2 order book snapshots (~1 minute intervals). See Rebuilding order books for how to combine it with the change file. Rows are ordered by timestamp. bids and asks: JSON text: an array of [price, size] pairs, both numbers, best price first. The snapshot holds every level of the book. Example, with illustrative values:

Individual-Order Book (L3) (l3_orderbook)

Individual-Order Book (L3): Lighter

L3 order-level orderbook snapshots with individual order IDs and sizes. Rows are ordered by timestamp. orders: JSON text: an array with one object per resting order, using short keys. Example, with illustrative values:

Order-Level Book (L4) (l4_orderbook)

Order-Level Book (L4): Hyperliquid perpetuals

L4 order-level orderbook diffs. Every order placed, modified, or removed from the book with user attribution. Rows are ordered by (block_number, seq).

Order-Level Book (L4): Hyperliquid perpetuals: l4_checkpoints snapshots file

Periodic L4 orderbook snapshots (~14 min intervals). Each data value holds the full order-level book as JSON text. Rows are ordered by timestamp. data: Plain JSON text, not compressed: [bids, asks]. Each side is an array of [user_address, order] pairs. Within a price level, orders are listed in queue order; sort by price yourself if you need the levels in order. Parse it with any JSON parser. Other order fields from the venue can appear in order. Example, with illustrative values:
To read it in Python:

Order-Level Book (L4): Hyperliquid Spot

Spot L4 order-level orderbook diffs with user attribution. Every order placed, modified, or removed from the spot book. Live coverage from 2026-03-10. Rows are ordered by (block_number, seq).

Order-Level Book (L4): Hyperliquid Spot: l4_checkpoints snapshots file

Periodic spot L4 orderbook snapshots. Each data field contains the full order-level book as JSON. Live coverage from 2026-03-11. Rows are ordered by timestamp. data: Plain JSON text, not compressed: [bids, asks]. Each side is an array of [user_address, order] pairs. Within a price level, orders are listed in queue order; sort by price yourself if you need the levels in order. Parse it with any JSON parser. Other order fields from the venue can appear in order. Example, with illustrative values:
To read it in Python:

Order-Level Book (L4): HIP-3

HIP-3 L4 order-level orderbook diffs with user attribution. Rows are ordered by (block_number, seq).

Order-Level Book (L4): HIP-3: l4_checkpoints snapshots file

Periodic L4 orderbook snapshots (~14 min intervals). Each data value holds the full order-level book as JSON text. Rows are ordered by timestamp. data: Plain JSON text, not compressed: [bids, asks]. Each side is an array of [user_address, order] pairs. Within a price level, orders are listed in queue order; sort by price yourself if you need the levels in order. Parse it with any JSON parser. Other order fields from the venue can appear in order. Example, with illustrative values:
To read it in Python:

Order-Level Book (L4): HIP-4

HIP-4 L4 order-level orderbook diffs with user attribution. price is an implied probability in [0, 1]. Rows are ordered by (block_number, seq).

Order-Level Book (L4): HIP-4: l4_checkpoints snapshots file

Periodic HIP-4 L4 orderbook snapshots (~60s intervals). Each data field contains the full order-level book as JSON. Rows are ordered by timestamp. data: Plain JSON text, not compressed: [bids, asks]. Each side is an array of [user_address, order] pairs. Within a price level, orders are listed in queue order; sort by price yourself if you need the levels in order. Parse it with any JSON parser. Other order fields from the venue can appear in order. Example, with illustrative values:
To read it in Python:

Order Events / TP/SL (l4_orders)

Order Events / TP/SL: Hyperliquid perpetuals

Complete order lifecycle events: place, fill, cancel, trigger, liquidation. Includes TP/SL, stop orders, and user attribution. Rows are ordered by (block_number, seq).

Order Events / TP/SL: Hyperliquid Spot

Spot order lifecycle events, including rejected orders. status is one of open, filled, canceled, selfTradeCanceled, badAloPxRejected, insufficientSpotBalanceRejected, iocCancelRejected, or minTradeNtlRejected. Live coverage from 2026-03-10. Rows are ordered by (block_number, seq).

Order Events / TP/SL: HIP-3

HIP-3 order lifecycle events with user attribution. Rows are ordered by (block_number, seq).

Order Events / TP/SL: HIP-4

HIP-4 order lifecycle events with user attribution. status values include open, filled, canceled, and insufficientSpotBalanceRejected. Rows are ordered by (block_number, seq).

Trades (trades)

Trades: Hyperliquid perpetuals

Individual trade fills with maker/taker attribution. Each trade produces two fills (one per side). crossed=true indicates the taker side. Rows are ordered by timestamp.

Trades: Hyperliquid Spot

Spot trade fills with maker/taker attribution and full fee breakdown. Each trade produces two fills (one per side). direction is Buy or Sell (spot semantics, not perp-style Open Long / Close Short). fee_token is open-set: USDC, PURR, HYPE, KHYPE, USOL, and other deployer tokens. History starts on 2025-03-22. Rows are ordered by timestamp.

Trades: HIP-3

HIP-3 trade fills with direction, maker/taker attribution, fee breakdown, realized PnL, and tx hash. Each trade produces two fills (one per side). Rows are ordered by timestamp.

Trades: HIP-4

HIP-4 trade fills for outcome markets. price is an implied probability in [0, 1]. is_settlement_fill=1 marks synthetic settlement-payout fills. Rows are ordered by timestamp.

Trades: Lighter and Lighter on Robinhood Chain

Trade fills with maker/taker attribution. Rows are ordered by timestamp.

Funding Rates (funding)

Funding Rates: Hyperliquid perpetuals

Funding rate snapshots. Rates are per-hour; multiply by 24 for daily or 8760 for annualized. Rows are ordered by timestamp.

Funding Rates: HIP-3

HIP-3 funding rate snapshots. Rows are ordered by timestamp.

Funding Rates: Lighter and Lighter on Robinhood Chain

Funding rate snapshots. Rows are ordered by timestamp.

Open Interest (oi)

Open Interest: Hyperliquid perpetuals

Open interest snapshots with mark price and volume. Rows are ordered by timestamp.

Open Interest: HIP-3

HIP-3 open interest snapshots. Rows are ordered by timestamp.

Open Interest: HIP-4

HIP-4 open interest snapshots. mark_price is an implied probability in [0, 1], NOT a USD price. No oracle_price column (HIP-4 outcomes have no oracle feed). Rows are ordered by timestamp.

Open Interest: Lighter and Lighter on Robinhood Chain

Open interest snapshots. Rows are ordered by timestamp.

Liquidations (liquidations)

Liquidations: Hyperliquid perpetuals

Individual liquidation events with user attribution. Rows are ordered by timestamp.

Liquidations: HIP-3

HIP-3 liquidation events. Rows are ordered by timestamp.

Rebuilding order books

An L4 order book export and a Lighter L2 order book export each come as a file of changes and a file of snapshots. Both cover the same UTC dates as your order: nothing from before your start date is included. So the first moment you can rebuild is the first usable snapshot in the files, not 00:00 UTC on your start date. To rebuild from a given time, include enough earlier history in your order to contain a usable snapshot before that time.

L4 order books

This applies to Hyperliquid perpetuals, Spot, HIP-3, and HIP-4. Checkpoint files come in one file per 7 days of your range; a window with no checkpoints has no file.
  1. Pick a checkpoint. Use one whose last_block_number is greater than 0 and whose data does not contain the text _backfilled. Skip any other checkpoint: a 0 means the checkpoint has no block number to start from, and _backfilled marks a checkpoint that was rebuilt later rather than recorded.
  2. Load its book from data.
  3. Apply changes in (block_number, seq) order, starting with the first change whose block_number is greater than the checkpoint’s last_block_number. Changes in that block or earlier are already in the checkpoint. new places an order of size new_size, update sets its remaining size to new_size, and remove deletes it.
Align by block number, never by timestamp. A checkpoint’s timestamp is when it was written, which is after the block it reflects, so changes with an earlier timestamp can still come after it. Each change carries the order’s full new size, so applying a change the checkpoint already reflects does no harm, but skipping one leaves the book wrong. Checkpoint block numbers are exact from 2026-06-07 02:21 UTC. Earlier ones were filled in afterwards. Those that could be repaired are at or below the true block, which is safe; the rest may be above it, which skips changes. The files do not say which is which, so when you start from a checkpoint recorded before 2026-06-07 02:21 UTC, check the rebuilt book against the next checkpoint before relying on it. Some new orders join their price level ahead of orders already waiting there. The change file does not record that position, so after a rebuild the order of orders within a level can differ from the venue’s queue. Prices and sizes are exact.

Lighter L2 order books

This applies to Lighter and Lighter on Robinhood Chain. The l2_checkpoints file holds a full-book snapshot about once a minute for each market.
  1. Load a snapshot from bids and asks.
  2. Apply the changes whose timestamp is after the snapshot’s timestamp, in (timestamp, sequence) order. Each change sets a price level’s total size; a size of 0 removes the level.
A snapshot is taken right after the changes of the update it is stamped with, so changes with the same timestamp are already in it. If a second update arrived in the same millisecond, its changes share the snapshot’s timestamp but are not in it, and the files cannot tell them apart; the affected levels are corrected by their next change.
Last modified on October 6, 2026