▾ Documentation

Hyperliquid indexer

Complete Hyperliquid perpetual trading data with nanosecond precision. Query every fill, funding payment, and TWAP execution over SQL (ClickHouse).

// updated 2026-06-04

Complete perpetual trading data with nanosecond precision. Query every fill, funding payment, and TWAP execution from the full Hyperliquid history in a SQL-queryable ClickHouse warehouse.

What's indexed

TableDescription
raw_node_fills_by_blockRaw, per-fill records as read from the node, ordered by block
agg_fulfilled_orderAggregated, per-order rollup of fills
view_perpetual_walletPer-wallet aggregate view across all positions
view_wallet_positionLatest position per wallet and market

Coverage: all perpetual markets, updated in real time. For exact row counts and the full column schema, see /hyperliquid/tables.

NOTE

For the full table and column schema reference, see /hyperliquid/tables. For ready-to-run query patterns, see /hyperliquid/examples.

Key features

Nanosecond timestamps

Every fill includes the exact nanosecond it occurred — not just block time. Useful for latency analysis, cross-venue arbitrage timing, and order-flow pattern detection.

Complete position context

Each trade includes entry/exit price, position size before and after, realized PnL, liquidation flags, and TWAP correlation.

Smart wallet discovery

Find wallets with consistent profitability patterns.

SELECT
    user,
    count(*)                                        AS trades,
    sum(closedPnl) / 1e6                            AS realized_pnl,
    sum(closedPnl) / nullIf(sum(abs(closedPnl)), 0) AS win_rate
FROM fills
WHERE time > now() - INTERVAL 30 DAY
GROUP BY user
HAVING trades > 100
ORDER BY realized_pnl DESC
LIMIT 50

Sample queries

Recent large fills

SELECT
    time,
    user,
    coin,
    side,
    px,
    sz,
    closedPnl / 1e6 AS pnl_usd
FROM fills
WHERE time > now() - INTERVAL 1 HOUR
  AND sz * px > 100000  -- > $100k notional
ORDER BY sz * px DESC
LIMIT 20

Funding rate history

SELECT
    toStartOfHour(time) AS hour,
    coin,
    avg(fundingRate)    AS avg_funding,
    sum(fundingRate)    AS cumulative_funding
FROM fundings
WHERE time > now() - INTERVAL 7 DAY
  AND coin = 'BTC'
GROUP BY hour, coin
ORDER BY hour

TWAP execution analysis

SELECT
    user,
    coin,
    count(*)  AS twap_fills,
    sum(sz)   AS total_size,
    avg(px)   AS avg_price,
    min(time) AS started,
    max(time) AS ended
FROM twaps
WHERE time > now() - INTERVAL 24 HOUR
GROUP BY user, coin
ORDER BY total_size DESC
LIMIT 20

Connection details

The Indexer is exposed over ClickHouse. Connect with standard tooling and run your own SQL.

NOTE

Connection details (host, port, credentials) are provisioned per-customer via Telegram @supanode_tgs. The database name is hyperliquid.

Python

import clickhouse_connect

client = clickhouse_connect.get_client(
    host='<your-host>',
    port=<your-port>,
    username='<your-username>',
    password='<your-password>',
    database='hyperliquid'
)

df = client.query_df("""
    SELECT * FROM fills
    WHERE time > now() - INTERVAL 1 HOUR
    LIMIT 1000
""")

DBeaver

  1. 1
    New connection

    Create a New Connection and select the ClickHouse driver.

  2. 2
    Host and port

    Enter your provisioned host (<your-host>) and port (<your-port>).

  3. 3
    Database

    Set the database to hyperliquid.

  4. 4
    Credentials

    Enter your provisioned username and password, then test the connection.

Next steps