BitqueryBitqueryData Store
HyperliquidTradesOrdersEvents

Hyperliquid

HyperCore fills, order statuses, L4 book diffs, oracle pushes, ledger events, TWAPs and CoreWriter actions, block by block, as Parquet.

Coverage
Latest monthto Sep 23, 2026 · yesterday
Tables
7Parquet, one prefix each
Columns
156across 7 tables
Coverage ends yesterday, UTC

Overview

Hyperliquid data from the HyperCore L1 order-book exchange, not HyperEVM: seven event tables recorded per block and joined on Block_Number. The fills table carries one row per counterparty per match with ClosedPnl, Fee, StartPosition and a taker flag, so maker and taker attribution and per-wallet realized PnL come straight out of the file. The order_statuses table keeps every order that never traded, including cancels and rejects, and book_diffs holds per-order L4 deltas rather than L2 snapshots, so the book can be rebuilt at any block.

Hyperliquid's own S3 archive publishes L2 snapshots and asset contexts and nothing else. This dataset is the shape a quant or data engineer needs for execution analysis: money and sizes are decimal strings, addresses and hashes are 0x-prefixed hex, and Block_Time is epoch nanoseconds while Fill.Time and Order.Timestamp are epoch milliseconds. Key matches on (Block_Number, Coin, Tid); Hash is not a join key because one L1 transaction spans many matches.

Use cases

  • Order-book microstructure research at L4: queue position, order lifetime, cancel and reject rates
  • Per-wallet realized PnL, fees and liquidation history from both sides of every fill
  • Backtests that decode with the same schema as Bitquery's live Hyperliquid stream
  • Funding, oracle and mark-price studies across plain perps, HIP-3 markets and spot

7 tables

156 columns · free sample for each table

fills

25 columns

One row per counterparty per match: price, size, direction, realized PnL, fees, taker flag and liquidation details. A match appears twice, keyed by (Block_Number, Coin, Tid). Time is epoch milliseconds.

hyperliquid/fills<start_block>_<end_block>.parquet200 blocks per file
Browse columns Sample fileSample updated Sep 2, 2026

order_statuses

25 columns

One row per order status change: open, canceled, filled, triggered and every *Rejected state, with time in force, reduce-only, trigger and TP/SL bracket fields. Time is epoch nanoseconds.

hyperliquid/order_statuses<start_block>_<end_block>.parquet200 blocks per file
Browse columns Sample fileSample updated Sep 2, 2026

book_diffs

12 columns

L4 order-book deltas: one row per new, update or remove of a single order, with owner, order id, price and size.

hyperliquid/book_diffs<start_block>_<end_block>.parquet200 blocks per file
Browse columns Sample fileSample updated Sep 2, 2026

oracle_updates

11 columns

One row per oracle push: the mark, oracle and external perp price inputs and results for every coin the validator set or a HIP-3 deployer priced.

hyperliquid/oracle_updates<start_block>_<end_block>.parquet200 blocks per file
Browse columns Sample fileSample updated Sep 2, 2026

misc_events

38 columns

Ledger updates (deposits, withdrawals, sends, transfers, vault flows), funding payments, bridge events, delegations, validator rewards and gossip. InnerType says which; only that group's columns are filled.

hyperliquid/misc_events<start_block>_<end_block>.parquet200 blocks per file
Browse columns Sample fileSample updated Sep 2, 2026

twap_statuses

18 columns

One row per TWAP order status change: activated, finished, terminated or error, with size executed so far and notional.

hyperliquid/twap_statuses<start_block>_<end_block>.parquet200 blocks per file
Browse columns Sample fileSample updated Sep 2, 2026

core_writer_actions

27 columns

Actions written into HyperCore from HyperEVM contracts through the CoreWriter precompile: spot sends, orders, vault and class transfers, staking, with the HyperEVM transaction hash.

hyperliquid/core_writer_actions<start_block>_<end_block>.parquet200 blocks per file
Browse columns Sample fileSample updated Sep 2, 2026

Schema reference

copies a column name
156 columns
fills25 columnsOne row per counterparty per match: price, size, direction, realized PnL, fees, taker flag and liquidation details. A match appears twice, keyed by (Block_Number, Coin, Tid). Time is epoch milliseconds.
ColumnTypeDescription
Block2
Block_NumberUInt64HyperCore block number; the join key across all seven tables
Block_TimeUInt64Block time, epoch nanoseconds
Other23
UserStringAccount address, 0x-prefixed hex
CoinStringMarket: plain perp (HYPE), HIP-3 perp (xyz:DRAM), spot (@107) or outcome token (#1890)
SideStringB for bid (buy), A for ask (sell)
PxDecimalPrice, decimal string
SzDecimalSize in base units, decimal string
StartPositionDecimalSigned position before the fill (negative is short), in base units
DirStringDirection label: Open Long, Close Short, Buy, and so on
ClosedPnlDecimalRealized PnL of this fill in USDC
FeeDecimalFee paid, negative when the maker received a rebate
FeeTokenStringToken the fee was paid in, usually USDC
HashStringL1 transaction hash, 0x-prefixed hex; not a join key, one transaction spans many events and TWAP trades carry 32 zero bytes
OidUInt64Order id
TidUInt64Trade id; the match key with Block_Number and Coin, appearing once per side
CrossedBoolTrue when this side was the taker
TimeUInt64Fill time, epoch milliseconds
CloidStringClient order id, 0x-prefixed hex
TwapIdUInt64TWAP id when the order is a TWAP child, else null
BuilderFeeDecimalBuilder fee charged on the fill, else null
LiquidationMapLiquidation details (liquidated user, mark price, method) when the fill was a liquidation, else null
BuilderStringBuilder address when the order came through a builder, else null
DeployerFeeDecimalHIP-3 deployer fee charged on the fill, else null
PriorityGasNullable(String)Priority gas attached to the order, else null
ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Sample file
order_statuses25 columnsOne row per order status change: open, canceled, filled, triggered and every *Rejected state, with time in force, reduce-only, trigger and TP/SL bracket fields. Time is epoch nanoseconds.
ColumnTypeDescription
Block2
Block_NumberUInt64HyperCore block number; the join key across all seven tables
Block_TimeUInt64Block time, epoch nanoseconds
Other6
UserStringAccount address, 0x-prefixed hex
StatusStringopen, canceled, filled, triggered, or one of the *Rejected states such as badAloPxRejected
TimeUInt64Status time, epoch nanoseconds
HashStringL1 transaction hash, 0x-prefixed hex; not a join key, one transaction spans many events and TWAP trades carry 32 zero bytes
BuilderStringBuilder address when the order came through a builder, else null
ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Order17
Order_CoinStringMarket: plain perp (HYPE), HIP-3 perp (xyz:DRAM), spot (@107) or outcome token (#1890)
Order_SideStringB for bid (buy), A for ask (sell)
Order_LimitPxDecimalLimit price, decimal string
Order_SzDecimalRemaining size at this status, in base units
Order_OrigSzDecimalOriginal size when the order was placed, in base units
Order_OidUInt64Order id
Order_TimestampUInt64Order placement time, epoch milliseconds
Order_OrderTypeStringLimit, Market, Stop Market, Take Profit Limit, and so on
Order_TriggerConditionStringTrigger condition for trigger orders, N/A otherwise
Order_TriggerPxDecimalTrigger price, 0.0 for non-trigger orders
Order_IsTriggerBoolTrue for stop and take-profit orders
Order_IsPositionTpslBoolTrue when the order is a position-level take-profit or stop-loss
Order_ReduceOnlyBoolTrue when the order can only reduce a position
Order_CloidStringClient order id, 0x-prefixed hex
Order_TifStringTime in force: Gtc, Ioc, Alo, or FrontendMarket
Order_ChildrenArrayChild TP/SL bracket orders attached to this order
Order_ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Sample file
book_diffs12 columnsL4 order-book deltas: one row per new, update or remove of a single order, with owner, order id, price and size.
ColumnTypeDescription
Block_NumberUInt64HyperCore block number; the join key across all seven tables
Block_TimeUInt64Block time, epoch nanoseconds
UserStringAccount address, 0x-prefixed hex
OidUInt64Order id
CoinStringMarket: plain perp (HYPE), HIP-3 perp (xyz:DRAM), spot (@107) or outcome token (#1890)
SideStringB for bid (buy), A for ask (sell)
PxDecimalPrice, decimal string
KindStringnew, update or remove
SzDecimalSize of a new order, in base units; null for update and remove
OrigSzDecimalSize before an update, in base units; null otherwise
NewSzDecimalSize after an update, in base units; null otherwise
ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Sample file
oracle_updates11 columnsOne row per oracle push: the mark, oracle and external perp price inputs and results for every coin the validator set or a HIP-3 deployer priced.
ColumnTypeDescription
Block_NumberUInt64HyperCore block number; the join key across all seven tables
Block_TimeUInt64Block time, epoch nanoseconds
UpdateClassStringWho pushed the update: Validator or Deployer (HIP-3 markets)
MarkPxInputsArrayCoin and price pairs used as mark price inputs
SpotPxInputsArrayCoin and price pairs from spot markets
ExternalPerpPxInputsArrayCoin and price pairs from external perp venues
OraclePxs_CoinToMarkPxArrayResulting mark price per coin with LastUpdateTime and DailyPx
OraclePxs_CoinToOraclePxArrayResulting oracle price per coin with LastUpdateTime and DailyPx
OraclePxs_CoinToExternalPerpPxArrayResulting external perp price per coin with LastUpdateTime and DailyPx
OraclePxs_ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Sample file
misc_events38 columnsLedger updates (deposits, withdrawals, sends, transfers, vault flows), funding payments, bridge events, delegations, validator rewards and gossip. InnerType says which; only that group's columns are filled.
ColumnTypeDescription
Block2
Block_NumberUInt64HyperCore block number; the join key across all seven tables
Block_TimeUInt64Block time, epoch nanoseconds
Other10
TimeUInt64Event time, epoch nanoseconds
HashStringL1 transaction hash, 0x-prefixed hex; not a join key, one transaction spans many events and TWAP trades carry 32 zero bytes
InnerTypeStringWhich event this row is: LedgerUpdate, Funding, CDeposit, CWithdrawal, Delegation, ValidatorRewards or Gossip
FundingMapFunding payment details when InnerType is Funding, else null
CDepositMapBridge deposit details when InnerType is CDeposit, else null
CWithdrawalMapBridge withdrawal details when InnerType is CWithdrawal, else null
DelegationMapStaking delegation details when InnerType is Delegation, else null
ValidatorRewardsMapValidator reward details when InnerType is ValidatorRewards, else null
GossipMapGossip event details when InnerType is Gossip, else null
ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
LedgerUpdate2
LedgerUpdate_UsersArrayAccounts touched by the ledger update
LedgerUpdate_ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
LedgerUpdate_Delta24
LedgerUpdate_Delta_TypeStringLedger delta type: send, deposit, withdraw, accountClassTransfer, subAccountTransfer, vaultDeposit, and so on
LedgerUpdate_Delta_UserStringAccount the delta applies to
LedgerUpdate_Delta_AmountDecimalAmount moved, in the token's units
LedgerUpdate_Delta_TokenStringToken moved, for example USDC
LedgerUpdate_Delta_UsdcDecimalUSDC amount for deltas denominated in USDC, else null
LedgerUpdate_Delta_UsdcValueDecimalUSD value of the delta
LedgerUpdate_Delta_DestinationStringReceiving account for sends and transfers
LedgerUpdate_Delta_DestinationDexStringDestination HIP-3 dex for cross-dex transfers, empty otherwise
LedgerUpdate_Delta_SourceDexStringSource HIP-3 dex for cross-dex transfers, empty otherwise
LedgerUpdate_Delta_FeeDecimalFee charged on the delta
LedgerUpdate_Delta_FeeTokenStringToken the fee was charged in, empty when no fee
LedgerUpdate_Delta_NativeTokenFeeDecimalFee charged in the native token
LedgerUpdate_Delta_NonceUInt64Nonce of the originating action
LedgerUpdate_Delta_ToPerpBoolFor account class transfers: true when moving spot to perp, else null
LedgerUpdate_Delta_OperationNullable(String)Operation label for vault and staking deltas, else null
LedgerUpdate_Delta_InterestAmountDecimalInterest component for lending deltas, else null
LedgerUpdate_Delta_VaultStringVault address for vault deltas, else null
LedgerUpdate_Delta_BasisDecimalCost basis for vault withdrawals, else null
LedgerUpdate_Delta_ClosingCostDecimalClosing cost for vault withdrawals, else null
LedgerUpdate_Delta_CommissionDecimalVault leader commission, else null
LedgerUpdate_Delta_NetWithdrawnUsdDecimalNet USD withdrawn from a vault, else null
LedgerUpdate_Delta_RequestedUsdDecimalUSD requested in a vault withdrawal, else null
LedgerUpdate_Delta_IsDepositBoolTrue for deposit-type deltas, else null
LedgerUpdate_Delta_ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Sample file
twap_statuses18 columnsOne row per TWAP order status change: activated, finished, terminated or error, with size executed so far and notional.
ColumnTypeDescription
Block_NumberUInt64HyperCore block number; the join key across all seven tables
Block_TimeUInt64Block time, epoch nanoseconds
TimeUInt64Status time, epoch nanoseconds
TwapIdUInt64TWAP order id
State_CoinStringMarket: plain perp (HYPE), HIP-3 perp (xyz:DRAM), spot (@107) or outcome token (#1890)
State_UserStringAccount address, 0x-prefixed hex
State_SideStringB for bid (buy), A for ask (sell)
State_SzDecimalTotal TWAP size, in base units
State_ExecutedSzDecimalSize executed so far, in base units
State_ExecutedNtlDecimalNotional executed so far, in USDC
State_MinutesUInt64TWAP duration in minutes
State_TimestampUInt64TWAP start time, epoch milliseconds
State_ReduceOnlyBoolTrue when the TWAP can only reduce a position
State_RandomizeBoolTrue when sub-order timing is randomized
State_ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
StatusStringactivated, finished, terminated or error
StatusErrorNullable(String)Error text when Status is error, else null
ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Sample file
core_writer_actions27 columnsActions written into HyperCore from HyperEVM contracts through the CoreWriter precompile: spot sends, orders, vault and class transfers, staking, with the HyperEVM transaction hash.
ColumnTypeDescription
Block2
Block_NumberUInt64HyperCore block number; the join key across all seven tables
Block_TimeUInt64Block time, epoch nanoseconds
Other4
UserStringSystem address that emitted the action, 0x-prefixed hex
NonceUInt64Action nonce
EvmTxHashStringHyperEVM transaction hash that triggered the action, 0x-prefixed hex
ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Action21
Action_TypeStringAction type, for example SystemSpotSendAction, LimitOrderAction, VaultTransferAction
Action_DestinationStringDestination address for send actions, else null
Action_TokenUInt64Token index for send actions, else null
Action_WeiUInt64Amount in wei for send actions, else null
Action_DestinationDexOrSpotNullable(String)Destination dex or spot for transfers, else null
Action_SourceDexOrSpotNullable(String)Source dex or spot for transfers, else null
Action_FromSubAccountStringSub-account the action came from, else null
Action_NtlDecimalNotional for USD class transfers, else null
Action_ToPerpBoolFor class transfers: true when moving to perp, else null
Action_GroupingNullable(String)Order grouping (na, normalTpsl, positionTpsl) for order actions, else null
Action_OrdersArrayOrders placed by an order action, empty otherwise
Action_AgentAddressStringAgent address for approve-agent actions, else null
Action_AgentNameNullable(String)Agent name for approve-agent actions, else null
Action_SignatureChainIdNullable(String)Chain id the action was signed for, else null
Action_HyperliquidChainNullable(String)Mainnet or Testnet, else null
Action_ValidatorStringValidator address for staking actions, else null
Action_IsUndelegateBoolTrue for undelegate actions, else null
Action_ActionNonceUInt64Nonce inside the signed action, else null
Action_BuilderStringBuilder address for approve-builder-fee actions, else null
Action_MaxFeeRateNullable(String)Maximum builder fee rate approved, else null
Action_ExtraMapForward-compatibility map; non-empty when the node emitted a field not yet modelled
Sample file

Ask an AI about this data

Send this dataset’s full schema to an assistant and ask it anything. It reads the plain-text brief first, so the answer comes from the real column list rather than a guess.

Start with

Opens a new chat with the question filled in. Nothing about you is sent to Bitquery, and the assistant sees only the public brief.

Delivery

Parquet files, delivered as signed download links by email after payment, in this layout:

# fills — 200 blocks per file
hyperliquid/fills<start_block>_<end_block>.parquet

# order_statuses — 200 blocks per file
hyperliquid/order_statuses<start_block>_<end_block>.parquet

# book_diffs — 200 blocks per file
hyperliquid/book_diffs<start_block>_<end_block>.parquet

# oracle_updates — 200 blocks per file
hyperliquid/oracle_updates<start_block>_<end_block>.parquet

# misc_events — 200 blocks per file
hyperliquid/misc_events<start_block>_<end_block>.parquet

# twap_statuses — 200 blocks per file
hyperliquid/twap_statuses<start_block>_<end_block>.parquet

# core_writer_actions — 200 blocks per file
hyperliquid/core_writer_actions<start_block>_<end_block>.parquet
  1. Download a free sampleNo email needed.
  2. Pay nowName, work email and licence check.
  3. Pay the invoiceBy card or bank transfer.
  4. Get signed linksThe team prepares the export and emails the links.

Price

Latest month
Aug 23, 2026 → Sep 23, 2026
$250one-time, USD
  • All 7 tables, 156 columns
  • Parquet files in the layout under Delivery
  • Signed download links by email
  • Licensed under the Data License
Pay now

FAQ

13 questions
What is included in the Hyperliquid dataset?

Seven Parquet tables from HyperCore: fills, order_statuses, book_diffs, oracle_updates, misc_events, twap_statuses and core_writer_actions, with 156 documented columns. Every row carries Block_Number and Block_Time, so the tables join on block without a separate blocks table. HyperEVM transactions and contract events are not part of this bundle.

How big is it?

Large, and driven by book activity. In a measured 1,000-block slice (about 73 seconds) we counted 142,955 order statuses, 89,241 book diffs and 1,552 fills. Scaled to a day that is roughly 170 million order statuses, 105 million book diffs and 1.8 million fills; exact row counts and sizes come with the delivery manifest, and these figures are estimates.

How is this different from Hyperliquid's free S3 archive?

Hyperliquid's archive holds L2 book snapshots and asset contexts, uploaded roughly monthly, and states that no other historical data is provided that way. This dataset is L4: each book_diffs row names the order and the address behind it, and fills, rejects, cancels, funding and ledger events are all included.

How do I compute a wallet's realized PnL?

Filter fills on User, then sum ClosedPnl and Fee. Each match appears twice, once per counterparty, so filtering by one User never double counts. Crossed tells you whether that side was the taker, and StartPosition is the signed position before the fill (negative is short).

Which markets does Coin cover?

Plain perps such as HYPE, HIP-3 perps with a dex prefix such as xyz:DRAM, spot pairs by index such as @107, and outcome tokens such as #1890, all in the same stream. Filter on the prefix to separate them.

Why are there two time units?

Because the node emits them that way and we keep the values as emitted. Block_Time, OrderStatus.Time and misc_events.Time are epoch nanoseconds; Fill.Time and Order.Timestamp are epoch milliseconds. Divide by 1e9 or 1e3 respectively when converting to timestamps.

What does a non-empty Extra column mean?

The node emitted a field that the schema does not model yet, and we kept it rather than dropping it. Extra is empty on nearly every row. When a new field appears it lands there first, so nothing is silently lost between schema versions.

How do I load a file?

With DuckDB: SELECT * FROM read_parquet('fills/*.parquet'). With pandas: pd.read_parquet('fills/'). Parse Px, Sz, Fee and the other money columns with Decimal rather than float; they are stored as decimal strings on purpose.

Does this match the live stream?

Yes. These field definitions are the ones Bitquery's Hyperliquid Kafka topics use, so a backtest reading this archive and a production consumer reading the live stream decode with the same code.

Can I buy just part of it?

Yes. The same tables are sold as three smaller datasets: Hyperliquid Trades (fills and TWAP statuses), Hyperliquid Order Book (order statuses, L4 book diffs and oracle updates) and Hyperliquid Ledger and Funding (ledger events and CoreWriter actions). This bundle is all seven tables in one purchase.

How far back does it go?

30 days. HyperCore history is kept as a rolling 30-day window, so a purchase covers the 30 days up to yesterday and there is no longer window to buy. For a continuous feed beyond that, ask about the live stream.

How is the data delivered, and how current is it?

As flat Parquet files under a stable S3 layout, one prefix per table and one file per 200-block range, with a JSON manifest listing every file and its sha256. Signed HTTPS links are emailed once the files are prepared. Refreshed daily with T+1 latency; a purchase made today includes everything up to yesterday.

Can I try before I buy?

Yes. Every table links to a public sample Parquet file from a real 1,000-block slice, and the sample repository on GitHub shows the first records of each table as readable JSON. No email address required.