Hyperliquid Liquidations: History by Wallet
Look up Hyperliquid liquidations for any address: every liquidated position, its market, method, mark price and size, as a query or a live stream.
The perpetuals page covers the market-wide liquidation feed. This page is the other direction: one address, its complete liquidation history.
That is the query you need to answer "was this position liquidated or did I close it", to reconstruct a blown-up account, or to fill the gap left when an export shows a position disappearing with no closing trade.
Every query on this page becomes a live feed by changing query to subscription — see real-time liquidation alerts below. To watch a set of wallets, the whole exchange, or follow the liquidated funds to other chains, see Build on this. Hyperliquid is included in every Bitquery plan alongside Solana, Ethereum, Base, BNB and Tron.
To query or stream data outside the Bitquery IDE, you need an API access token.
Follow the steps here: How to generate Bitquery API token ➤
Every liquidation of one address
LiquidatedUser is the address whose position was closed. Method is market for an open-market liquidation and backstop when the backstop vault takes over. Position.SizeBefore is the signed size that existed immediately before the liquidation — negative for a short.
Run it in the IDE: Hyperliquid Wallet Liquidation History ➤
query {
Hyperliquid {
PerpLiquidations(
limit: {count: 100}
orderBy: {descending: Block_Time}
where: {Liquidation: {LiquidatedUser: {is: "0x2b5dba3bc4cbb1b94d1e57fcbe0fbc82731ce5f2"}}, Block: {Time: {since_relative: {days_ago: 3}}}}
) {
Block { Time }
Liquidation {
Market { Symbol Kind }
Method
MarkPx
LiquidatedUser
Execution { Price Size Side Direction Hash }
Position { Leverage IsCross Side SizeBefore }
Fees { Fee FeeToken }
}
}
}
}
Sample response:
{
"Block": { "Time": "2026-09-04T09:58:14.257546Z" },
"Liquidation": {
"Market": { "Symbol": "SKR" },
"Method": "market",
"MarkPx": "0.024767",
"LiquidatedUser": "0x2b5dba3bc4cbb1b94d1e57fcbe0fbc82731ce5f2",
"Execution": { "Price": "0.024831", "Size": "2663.0", "Side": "Buy", "Direction": "Close Short" },
"Position": { "Leverage": 3, "IsCross": false, "Side": "Short", "SizeBefore": "-2663.0" },
"Fees": { "Fee": "0.028565", "FeeToken": "USDC" }
}
}
Execution.Direction reads Close Short because liquidating a short is a buy that closes it — the direction describes the effect on the liquidated position, not the trader's intent.
Liquidation totals per market
One row per market and method, with the number of liquidation events, the total size closed and the fees charged.
Run it in the IDE: Hyperliquid Wallet Liquidation Totals ➤
query {
Hyperliquid {
PerpLiquidations(
where: {Liquidation: {LiquidatedUser: {is: "0x2b5dba3bc4cbb1b94d1e57fcbe0fbc82731ce5f2"}}, Block: {Time: {since_relative: {days_ago: 3}}}}
) {
Liquidation { Market { Symbol } Method }
events: count
size: sum(of: Liquidation_Execution_Size)
fees: sum(of: Liquidation_Fees_Fee)
}
}
}
Liquidations over a date range
Bound the export to a tax year, a quarter, or the window around a specific market event.
Run it in the IDE: Hyperliquid Liquidations By Date Range ➤
query {
Hyperliquid {
PerpLiquidations(
limit: {count: 100}
orderBy: {ascending: Block_Time}
where: {
Liquidation: {LiquidatedUser: {is: "0x2b5dba3bc4cbb1b94d1e57fcbe0fbc82731ce5f2"}}
Block: {Time: {since: "2026-09-01T00:00:00Z", till: "2026-09-04T00:00:00Z"}}
}
) {
Block { Time }
Liquidation {
Market { Symbol }
Method
MarkPx
Execution { Price Size Side Direction }
Position { Leverage IsCross Side SizeBefore }
Fees { Fee FeeToken }
}
}
}
}
Backstop liquidations only
Filter on Method to isolate the liquidations the backstop vault absorbed rather than the open market. These carry different Execution.Direction values from ordinary liquidations — Auto-Deleveraging and Partial Borrow Liquidation both appear here.
Run it in the IDE: Hyperliquid Backstop Liquidations By Wallet ➤
query {
Hyperliquid {
PerpLiquidations(
limit: {count: 100}
orderBy: {descending: Block_Time}
where: {
Liquidation: {
LiquidatedUser: {is: "0x2b5dba3bc4cbb1b94d1e57fcbe0fbc82731ce5f2"}
Method: {is: "backstop"}
}
Block: {Time: {since_relative: {days_ago: 3}}}
}
) {
Block { Time }
Liquidation {
Market { Symbol }
Method
MarkPx
Execution { Price Size Side Direction }
Position { Leverage IsCross SizeBefore }
}
}
}
}
Real-time liquidation alerts for one wallet
Run it in the IDE: Hyperliquid Wallet Liquidation Stream ➤
subscription {
Hyperliquid {
PerpLiquidations(
where: {Liquidation: {LiquidatedUser: {is: "0x2b5dba3bc4cbb1b94d1e57fcbe0fbc82731ce5f2"}}}
) {
Block { Time }
Liquidation {
Market { Symbol }
Method
MarkPx
LiquidatedUser
Execution { Price Size Side Direction }
Position { Leverage IsCross Side SizeBefore }
}
}
}
}
Drop the where clause to stream every liquidation on the exchange, or swap the address for a list to watch a set of accounts.
Build on this
A one-off lookup answers "was I liquidated". The same cube, kept open as a stream, is what bots, risk desks and dashboards run on:
- Watch a list of wallets. Replace
iswithin: ["0x…", "0x…"]in the subscription above to get one stream for every account you care about — your own, a vault's, a set of market makers. - Exchange-wide liquidation feed. Drop the
whereclause and you have every liquidation on Hyperliquid in real time — the input for cascade detection, liquidation heatmaps and Telegram alerts. The perpetuals page has the market-wide variant. - Pair it with positions and funding. Stream
CurrentPositionsto see who is close to liquidation before it happens, andPerpFundingsfor what the position cost to hold. - Follow the money off Hyperliquid. The liquidated address is an ordinary EVM wallet. The same API key covers Solana, Ethereum, Base, BNB, Tron and Bitcoin, so "where did the collateral come from, and where did the rest go" is one more query — see Follow the wallet off Hyperliquid.
- Lowest latency. For production alerting, the same liquidations arrive over Kafka as protobuf (
hyperliquidcore.messages.proto).
Notes
Liquidatoris empty on open-market liquidations; it is populated when a specific liquidator address takes the position.- A single blow-up can produce several records — one per market the account held.
- To see what the position looked like before it was closed, pair
Position.SizeBeforehere with the fills on the Trades API and the funding it accrued on the Funding Payments API.
Ready to run this in production?
Get an API key and run these queries in minutes, or talk to us about plans and enterprise delivery.