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
| Table | Description |
|---|---|
raw_node_fills_by_block | Raw, per-fill records as read from the node, ordered by block |
agg_fulfilled_order | Aggregated, per-order rollup of fills |
view_perpetual_wallet | Per-wallet aggregate view across all positions |
view_wallet_position | Latest 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.
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.
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
- 1New connection
Create a New Connection and select the ClickHouse driver.
- 2Host and port
Enter your provisioned host (
<your-host>) and port (<your-port>). - 3Database
Set the database to
hyperliquid. - 4Credentials
Enter your provisioned username and password, then test the connection.
Next steps
- Browse the full schema: /hyperliquid/tables
- Explore query patterns: /hyperliquid/examples
- Provision access or start a trial: @supanode_tgs