Hyperliquid (HyperCore) is an L1 built to support an ecosystem of permisionless financial applications. The flagship native application is the Hyperliquid DEX, a fully onchain order book exchange.
hyperliquid.dex.trades
is recommended as it enriches the raw.trades
table with relevant trade & token metadataTable Name | Description |
---|---|
hyperliquid.raw.trades | Raw Hyperliquid spot & perpetual trades data This is available as a real-time Kafka stream without the extra_fields column. |
hyperliquid.dex.trades | Enriched Hyperliquid spot & perpetual trades data. |
hyperliquid.raw.tokens | List of tokens that are traded on Hyperliquid DEX, with token metadata such as token name and symbol. Currently only includes spot tokens. |
hyperliquid.assets.transfers | Token transfers on Hyperliquid L1. Currently only includes deposits & withdrawals for Arbitrum. (Coming Soon) Bitcoin, Ethereum, Solana. |
hyperliquid.raw.orders | Shows order status changes. So when an order goes from open, to filled, cancelled or any other possible status. See FAQ - Why are there missing orders in the raw.orders table? |
hyperliquid.raw.blocks | Blocks metadata. |
hyperliquid.raw.transactions | Transactions data for each block on Hyperliquid. |
Column Name | Description |
---|---|
market_type | The type of market for the trade, e.g. spot , perpetuals |
coin | A unique identifier for the asset being traded: • The coin for perpetuals is the standard token symbol, e.g. HYPE • The coin for spot tokens is an ID representing a pair of tokens based on Hyperliquid’s metadata, e.g. @4 (coin) represents token 5/token 0, which corresponds to JEFF/USDC The metadata is available from the info endpoint of Hyperliquid’s API |
token_a_symbol | The symbol of the first token in the trading pair |
token_b_symbol | The symbol of the second token in the trading pair. At the moment, this is always USDC |
amount | The quantity of token_a being traded (normalized) |
price | The execution price of token_a for the trade, in terms of token_b (usually USDC) |
usd_amount | The quantity of token_a being traded, in USD terms |
buyer_address | The address of the buyer in the trade |
seller_address | The address of the seller in the trade |
timestamp | The UTC timestamp of when the trade was executed |
transaction_hash | The transaction hash for the trade. There can be multiple trades (i.e. multiple records with different trade_id) for the same transaction_hash. *See notes for Null Transaction hash. |
trade_id | An identifier for the trade. Some historical trades share a tid of 0 |
unique_id | A unique identifier for each trade |
extra_fields | Additional information for each trade. See notes for more details. |
extra_fields
column contains additional information for each trade including fees and liquidation details. Some caveats to be aware of:extra_fields
are initially unavailable. We attempt to refetch all new trades via the Info endpoint, to source the extra_fields
. Given the 10k transaction limit on the API, it’s possible that some trades cannot be refetched.extra_fields
not populated with buyer or seller details: this means the trade could not be backfilled with additional information. These can be identified by extra_fields:source = 'api.hyperliquid.xyz/ws'
extra_fields
populated with one of the buyer or seller details: we were able to backfill details for one side of the trade (i.e. the buy side or sell side)extra_fields
populated with both buyer and seller details: we were able to backfill details for both sides of the tradeIs it possible to fetch all historical trades of <address>?
Why is the buyer or seller (sometimes both) in extra_fields in the trades table, but sometimes null?
Why are there missing orders in the raw.orders table?
2025-06-08 12:18:08.047
all order status are available.Up until 2025-06-08 12:18:08.047
the nodes did not expose orders when they were placed. This meant that an order with ‘open’ status did not show up, only subsequent status changes would be reflected in the table.How can I match orders, trades and transactions?