IRONFLOW
SANDBOXDATA APILIVEPRICINGDOCSGET_API_KEY
GET_API_KEY
GUIDES · NOVEMBER 2026 · 4 MIN READ

Hyperliquid historical liquidations API

Hyperliquid's info API has no liquidations request. Liquidations are marked on fills, and the API returns fills one wallet at a time. Ironflow's GET /v1/liquidations returns every liquidation on every perp market since 25 May 2025, with no key for the last 24 hours.

API
GET https://api.ironflow.sh/v1/liquidations?market=BTC-PERP no key
MCP
get_liquidations on https://mcp.ironflow.sh/mcp
FILE
huggingface.co/datasets/ironflow/hyperliquid-liquidations free

Free key14 days of history at 60 requests a minute. Without a key, the API reaches 24 hours back.

By requesting a key you agree to the Terms and API terms; see the Privacy Policy. We may email you when your key keeps hitting its limits; you can opt out at any time.

CONTENTS
  1. The short version
  2. The numbers
  3. What Hyperliquid's API has
  4. Every liquidation over REST
  5. Full history as a download
  6. SQL
  7. How far back by plan
  8. Questions
  9. Related guides
  10. References

The short version#

  • Hyperliquid: no liquidations request. Per wallet only, through fills, capped at the 10,000 most recent.
  • Every wallet, any window: /v1/liquidations over REST, hl.liquidations in SQL, get_liquidations over MCP.
  • Everything at once: a free Parquet file per month, 25 May 2025 to 31 October 2026.

The numbers#

WindowHyperliquid liquidations
25 May 2025 to 31 Oct 20262,849,452 liquidations, $58.7 billion, 468 markets, 506,975 wallets
Busiest day10 Oct 2025: 109,790 liquidations, $7.2 billion
Largest$219.2 million, an ETH long, 31 Jan 2026
24 hours to 21:04 UTC, 12 Nov 202618,015 liquidations, $248.8 million, 92% of it longs. Largest: a $31.0 million BTC long

From our own nodes and Hyperliquid's fills archive. Each row is a fill Hyperliquid marked as a liquidation, counted once per liquidated position. Live totals are on the liquidations page.

What Hyperliquid's API has#

  • No request: none of the requests on its info endpoint pages returns liquidations. On testnet, {"type": "liquidations"} answers HTTP 422, Failed to deserialize the JSON body into the target type.
  • On fills: a liquidation fill has a liquidation field with liquidatedUser, markPx and method (WsFill). userFills and userFillsByTime return them for one wallet, at most its 10,000 most recent fills.
  • Live: the userEvents WebSocket pushes liquidations for wallets you subscribe to, one wallet per subscription.
  • Archive: node_fills_by_block in the requester-pays S3 bucket has every fill (historical data). You download, decompress and filter it yourself.

Every liquidation over REST#

bash
curl "https://api.ironflow.sh/v1/liquidations?market=BTC-PERP&limit=2"
json
{
  "data": [
    { "market": "BTC-PERP", "timestamp": 1794432775060, "block_number": 1217802798,
      "address": "0xa615...7fd9", "side": "buy", "price": "74712", "size": "0.00043",
      "realized_pnl": "-0.36249", "detection_method": "native", ... },
    ...
  ],
  "pagination": { "next_cursor": "MTc5NDQzMjgwNTAxMy0yMTQ=", "has_more": true },
  "poll_cursor": "MTc5NDQzMjgwNTAxMy0yMTQ=",
  "complete_until": 1794518415314
}

Rows come oldest first. Page with cursor, or poll for new rows with after=poll_cursor. This pulls a window and adds up the dollars:

python
import os
import time

import pandas as pd
import requests

KEY = os.environ.get("IRONFLOW_KEY")  # optional
headers = {"Authorization": f"Bearer {KEY}"} if KEY else {}
params = {"market": "BTC-PERP", "from": "-24h", "limit": 1000}  # "-14d" with a free key

rows = []
while True:
    r = requests.get("https://api.ironflow.sh/v1/liquidations", params=params, headers=headers, timeout=30)
    if r.status_code == 429:
        time.sleep(int(r.headers.get("Retry-After", 5)))
        continue
    r.raise_for_status()
    body = r.json()
    rows += body["data"]
    if not body["pagination"]["has_more"]:
        break
    params["cursor"] = body["pagination"]["next_cursor"]

df = pd.DataFrame(rows)
df["usd"] = df["price"].astype(float) * df["size"].astype(float)
print(len(df), "BTC liquidation fills,", round(df["usd"].sum() / 1e6, 1), "million USD")

Keyless on 12 November 2026 it printed 8070 BTC liquidation fills, 117.6 million USD.

  • market takes one market or up to 50 (BTC-PERP,ETH-PERP). Leave it out for every market. address filters one wallet.
  • Without a key, rows run 60 seconds behind live. A free key reads them live.
  • Endpoint reference: list liquidations.

Full history as a download#

One Parquet file per month on Hugging Face, no key. events has one row per liquidated position, fills one per fill. About 115 MB for all of events:

python
import pandas as pd

URL = "https://huggingface.co/datasets/ironflow/hyperliquid-liquidations/resolve/main/data/events/{}.parquet"
months = pd.period_range("2025-05", "2026-10", freq="M").strftime("%Y-%m")
events = pd.concat(pd.read_parquet(URL.format(m)) for m in months)

print(len(events), "liquidations,", round(events.notional_usd.sum() / 1e9, 1), "billion USD")
print(events.nlargest(5, "notional_usd")[["timestamp", "market", "position_side", "notional_usd"]])
text
2849452 liquidations, 58.7 billion USD
                           timestamp    market position_side  notional_usd
151899 2026-01-31 18:43:52.514+00:00  ETH-PERP          long  2.191728e+08
101307 2025-10-10 21:17:06.037+00:00  ETH-PERP          long  2.046711e+08
109987 2025-10-10 21:17:47.450+00:00  BTC-PERP          long  1.971612e+08
1551   2025-05-27 01:23:43.322+00:00  BTC-PERP          long  1.548190e+08
101447 2025-10-10 21:17:06.037+00:00  SOL-PERP          long  1.254634e+08

SQL#

Read-only ClickHouse SQL over hl.liquidations, the same rows. No key covers the last day:

bash
curl -X POST https://api.ironflow.sh/v1/query \
  -H "Content-Type: application/json" \
  -d '{"sql": "SELECT market, count() AS fills, round(sum(notional)) AS usd FROM hl.liquidations WHERE ts > now() - INTERVAL 1 DAY GROUP BY market ORDER BY usd DESC LIMIT 3"}'

On 12 November 2026 BTC-PERP led with $116.7 million, then the xyz:NVDA-PERP stock perp with $36.0 million. More queries are in the SQL guide.

How far back by plan#

AccessLiquidation historyLimit
No key24 hours30 requests a minute, 300 a day
Free key14 days60 a minute
Explorer, $49 for 30 days90 days100 a minute
Builder, $149 for 30 days1 year1,000 a minute
EnterpriseEverything since 25 May 202510,000 a minute
x402, no account1 year$0.005 a call, USDC on Base
Free dataset25 May 2025 to 31 Oct 2026No limit

Questions#

Does Hyperliquid's info API have a liquidations request?#

No. None of the requests on Hyperliquid's info endpoint pages returns liquidations. A liquidation is a fill with a liquidation field (liquidatedUser, markPx, method), and the API returns fills one wallet at a time, at most the 10,000 most recent.

Where can I get Hyperliquid historical liquidations?#

Ironflow's GET https://api.ironflow.sh/v1/liquidations returns every liquidation on every perp market since 25 May 2025, without a key for the last 24 hours. The full history to 31 October 2026 is a free Parquet dataset: 2,849,452 liquidations.

How many liquidations has Hyperliquid had?#

2,849,452 liquidated positions worth $58.7 billion from 25 May 2025 to 31 October 2026, across 468 markets and 506,975 wallets. The busiest day was 10 October 2025: 109,790 liquidations and $7.2 billion.

Can I get liquidations from Hyperliquid's S3 archive?#

Yes, by hand. node_fills_by_block in the requester-pays hl-mainnet-node-data bucket has every fill, with older periods in node_fills. Download the hours you need, decompress them and keep the fills with a liquidation field where the fill's address is the liquidated user.

Can an AI agent get Hyperliquid liquidation history?#

Yes. The get_liquidations and get_liquidation_summary tools on https://mcp.ironflow.sh/mcp answer with no key for the last 24 hours, and run_query takes SQL over hl.liquidations.

Related guides#

  • Hyperliquid liquidation data: history, live feed, levels and API
  • How to read the Hyperliquid liquidation map, and how it's built
  • Hyperliquid userFills limit: get more than 10,000 fills
  • Hyperliquid data sources compared

References#

  • Hyperliquid docs: Info endpoint. Every request type, and the userFills limits.
  • Hyperliquid docs: WebSocket subscriptions. WsFill and its liquidation field.
  • Hyperliquid docs: Historical data. The S3 buckets and node_fills_by_block.
  • Hugging Face: ironflow/hyperliquid-liquidations. The free monthly files.

Need more than 24 hours over the API? A free key gives 14 days, by email, no card.

Free key14 days of history at 60 requests a minute. Without a key, the API reaches 24 hours back.

By requesting a key you agree to the Terms and API terms; see the Privacy Policy. We may email you when your key keeps hitting its limits; you can opt out at any time.

ON THIS PAGE
  1. The short version
  2. The numbers
  3. What Hyperliquid's API has
  4. Every liquidation over REST
  5. Full history as a download
  6. SQL
  7. How far back by plan
  8. Questions
  9. Related guides
  10. References

Automated derivatives trading is high-risk: you can lose all of your funds. Ironflow is trading software, not financial advice, and never holds your funds. Not available to U.S. persons or in sanctioned jurisdictions. See Risk Disclosure.

Not affiliated with Hyperliquid or Pear Protocol.

IRONFLOW

© 2026 IRONFLOW

Product

IronboxAPI and MCPPricingNodesTerminal

Data

Live liquidationsLiquidation mapLiquidation heatmapHIP-4 outcomesTop tradersDatasets

Developers

DocsGuidesFree API keyStatusGitHub

Company

TermsPrivacyRiskAcknowledgements