Moon Dev/API Docs
GitHubGet API Key

Hyperliquid Data Layer API

Real-time liquidation tracking, whale monitoring, smart money signals, and position analytics.

Base URL: https://api.moondev.com
Version: 1.0
Updated: 2026-01-14
Quick Startcopy & run

Copy-paste this to test your API key instantly:

curl "https://api.moondev.com/api/ticks/btc.json?api_key=YOUR_API_KEY"

Or in Python:

import requests

data = requests.get(
    "https://api.moondev.com/api/ticks/btc.json",
    headers={"X-API-Key": "YOUR_API_KEY"}
).json()

print(f"BTC Price: ${data['latest_price']:,.2f}")

Need an API key?

Common Errors & Fixes
ErrorCauseFix
401 UnauthorizedMissing or invalid API keyAdd ?api_key=YOUR_KEY to URL or use X-API-Key header
404 Not FoundUppercase symbol (BTC.json)Use lowercase: btc.json not BTC.json
404 Not FoundMissing .json extensionAdd .json: /api/ticks/btc.json
🤖

Moon Dev AI

NEW!

Proprietary Trading AI - 5 Years of Quant Knowledge

Black box. Proprietary model trained on 5 years of quantitative trading research, backtesting strategies, and real trading experience. If you're an algorithmic trader using any other AI, you're cooked.

🔐 Black Box

Proprietary model. No details. Just results.

📈 5 Years of Alpha

RBI system, backtesting, bot building, real trading edge.

⚡ Built for Traders

Not a generic chatbot. Built by a trader, for traders.

🔗 Endpoints

EndpointAuthDescription
GET /api/ai/healthNoHealth check
POST /api/ai/v1/chat/completionsYesChat completions
POST /api/ai/chatYesSimple chat

🎯 Quick Test

Verify the AI is live:

curl https://api.moondev.com/api/ai/health
🔑 Key Details (Read This First!)
  • Base URL: https://api.moondev.com/api/ai/v1
  • Model: moondev-ai (always use this exact model name)
  • Auth Header: Authorization: Bearer YOUR_API_KEY

💻 cURL

curl -X POST "https://api.moondev.com/api/ai/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "moondev-ai",
    "messages": [{"role": "user", "content": "How do I build a trading bot?"}],
    "max_tokens": 500
  }'

🐍 Python (requests)

import requests

response = requests.post(
    "https://api.moondev.com/api/ai/v1/chat/completions",
    headers={
        "Content-Type": "application/json",
        "Authorization": "Bearer YOUR_API_KEY"
    },
    json={
        "model": "moondev-ai",
        "messages": [{"role": "user", "content": "What is the RBI system?"}],
        "max_tokens": 500
    }
)

print(response.json()["choices"][0]["message"]["content"])

🐍 Python (OpenAI SDK)

If you already use the OpenAI SDK, just change the base_url and api_key:

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.moondev.com/api/ai/v1"
)

response = client.chat.completions.create(
    model="moondev-ai",
    messages=[{"role": "user", "content": "What is the RBI system?"}],
    max_tokens=500
)

print(response.choices[0].message.content)

📤 Response

{
  "id": "gen-xxx",
  "choices": [
    {
      "message": {
        "role": "assistant",
        "content": "..."
      },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 1289,
    "completion_tokens": 500,
    "total_tokens": 1789
  }
}
⚙ Specs
  • Context Length: 200,000 tokens
  • Model Name: moondev-ai (required in request body)
  • Auth: Authorization: Bearer YOUR_API_KEY header
⚠ This Is War

If you're trading with ChatGPT or any generic AI, you're bringing a butter knife to a sword fight. Moon Dev AI was built from the trenches - 5 years of live trading, thousands of backtests, hundreds of bots. No other AI has this edge.

Authentication

All /api/* endpoints require authentication via API key.Need an API key?

Method 1: Query Parameter

?api_key=YOUR_API_KEY

Method 2: Header (Recommended)

X-API-Key: YOUR_API_KEY

Error Response (401)

{
  "error": "Unauthorized",
  "message": "Valid API key required. Use ?api_key=YOUR_KEY or X-API-Key header"
}

Rate Limits & Caching

SettingValue
Rate Limit60 requests/second sustained, burst up to 200
Response FormatJSON (Content-Type: application/json)

Health & Info

EndpointAuthDescription
GET /healthNoHealth check
GET /NoAPI info and endpoint listing
{"status": "ok", "service": "hyperliquid-data-layer"}

Market Data

Drop-in replacements for Hyperliquid API calls. All requests go through Moon Dev's local node.

These endpoints replace metaAndAssetCtxs, l2Book, clearinghouseState, userFills, and candleSnapshot.

Prices (All 228 Coins)

EndpointDescription
GET /api/pricesAll prices, funding rates, and OI for 228 coins (replaces metaAndAssetCtxs)
GET /api/price/{coin}Quick single-coin price with bid/ask/spread (e.g., /api/price/BTC)

Orderbook

EndpointDescription
GET /api/orderbook/{coin}L2 orderbook with ~20 levels each side (replaces l2Book)

Account & Fills

EndpointDescription
GET /api/account/{address}Full account state for any wallet (replaces clearinghouseState)
GET /api/fills/{address}?limit=NTrade fills in Hyperliquid-compatible format (replaces userFills)

Candles (OHLCV)

EndpointDescription
GET /api/candles/{coin}?interval=1hOHLCV candles (intervals: 1m, 5m, 15m, 1h, 4h, 1d)

All coin symbols are case-insensitive (e.g., BTC, btc, Ada all work).

Candle intervals: 1m, 5m, 15m, 1h, 4h, 1d. Optional query params: start_time and end_time (millisecond timestamps).

Response Example (/api/prices)

{
  "count": 228,
  "timestamp": "2026-01-14T12:00:00Z",
  "prices": {
    "BTC": "94500.50",
    "ETH": "3250.25",
    "SOL": "185.30"
  },
  "funding_rates": {
    "BTC": "0.0001",
    "ETH": "0.00008"
  },
  "open_interest": {
    "BTC": "125000.5",
    "ETH": "850000.2"
  }
}

Response Example (/api/price/BTC)

{
  "coin": "BTC",
  "timestamp": "2026-01-29T15:37:44Z",
  "best_bid": "85324.0",
  "best_ask": "85325.0",
  "best_bid_size": "0.00036",
  "best_ask_size": "5.7609",
  "mid_price": "85324.5",
  "spread": "1.0",
  "spread_bps": 0.12
}

Response Example (/api/orderbook/BTC)

{
  "symbol": "BTC",
  "best_bid": "94500.00",
  "best_ask": "94501.00",
  "mid_price": "94500.50",
  "spread_bps": "0.11",
  "bid_depth": 20,
  "ask_depth": 20,
  "levels": [
    [
      {"px": "94500.0", "sz": "2.5"},
      {"px": "94499.0", "sz": "1.2"}
    ],
    [
      {"px": "94501.0", "sz": "1.8"},
      {"px": "94502.0", "sz": "3.1"}
    ]
  ]
}

Response Example (/api/candles/BTC?interval=1h)

{
  "coin": "BTC",
  "interval": "1h",
  "start_time": 1738166257000,
  "end_time": 1738252257000,
  "count": 72,
  "candles": [
    {
      "timestamp": 1738166400000,
      "open": "85234.5",
      "high": "85890.2",
      "low": "85100.0",
      "close": "85654.3",
      "volume": 150.5,
      "trades": 1234
    }
  ]
}

Migration Cheatsheet

Old Hyperliquid CallNew Moon Dev API
{"type": "metaAndAssetCtxs"}GET /api/prices
{"type": "l2Book", "coin": "BTC"}GET /api/orderbook/BTC
{"type": "clearinghouseState", "user": "0x..."}GET /api/account/0x...
{"type": "userFills", "user": "0x..."}GET /api/fills/0x...
{"type": "candleSnapshot", ...}GET /api/candles/BTC?interval=1h

Python Example

import requests

API_KEY = "your_api_key"
BASE_URL = "https://api.moondev.com"
headers = {"X-API-Key": API_KEY}

# Get all prices (replaces metaAndAssetCtxs)
prices = requests.get(f"{BASE_URL}/api/prices", headers=headers).json()
print(f"BTC: ${prices['prices']['BTC']}")
print(f"Loaded {prices['count']} coins")

# Quick price check
btc = requests.get(f"{BASE_URL}/api/price/BTC", headers=headers).json()
print(f"Mid: ${btc['mid_price']} | Spread: {btc['spread_bps']} bps")

# Get orderbook (replaces l2Book)
book = requests.get(f"{BASE_URL}/api/orderbook/BTC", headers=headers).json()
print(f"Best Bid: ${book['best_bid']} | Best Ask: ${book['best_ask']}")

# Get account state (replaces clearinghouseState)
wallet = "0x1234567890abcdef..."
account = requests.get(f"{BASE_URL}/api/account/{wallet}", headers=headers).json()
print(f"Account Value: ${account['marginSummary']['accountValue']}")

# Get candles
candles = requests.get(
    f"{BASE_URL}/api/candles/BTC?interval=1h",
    headers=headers
).json()
print(f"Latest close: ${candles[-1]['c']}")

Core Data

EndpointDescription
GET /api/positions.jsonTop 50 positions across ALL symbols — crypto + HIP3 combined (1s updates)
GET /api/positions_crypto.jsonTop 50 positions — crypto perps only (BTC, ETH, SOL, …)
GET /api/positions_hip3.jsonTop 50 positions — HIP3 only (xyz:GOLD, cash:USA500, …)
GET /api/positions/all.jsonAll 182 symbols with top 50 positions each — combined (90s updates)
GET /api/positions/all_crypto.jsonAll 134 crypto symbols with top 50 positions each
GET /api/positions/all_hip3.jsonAll 48 HIP3 symbols with top 50 positions each
GET /api/whales.jsonRecent whale trades ($25k+, buys & sells)
GET /api/buyers.jsonRecent buyers only ($5k+, HYPE/SOL/XRP/ETH)
GET /api/depositors.jsonAll Hyperliquid depositors - canonical address list
GET /api/whale_addresses.txtPlain text list of whale addresses

Crypto / HIP3 Position Separation

Position data is now available in separate crypto and HIP3 feeds in addition to the existing combined files. Classification rule: any coin with a : in its name (e.g. xyz:GOLD, cash:USA500) is HIP3. All others (e.g. BTC, ETH) are crypto.

FilePositionsSymbols
positions.json (combined)~4,477182
positions_crypto.json~3,516134
positions_hip3.json~96148

Update frequency: Top-50 files (positions*.json) update every ~1s via priority scan. Per-symbol files (all*.json) update every ~90s on full scan. Original endpoints are unchanged — fully backward compatible.

Response Example (positions_crypto.json)

{
  "updated_at": "2026-03-03T14:52:38.731Z",
  "total_positions": 3516,
  "total_longs": 50,
  "total_shorts": 50,
  "min_position_value": 10000,
  "price_source": "websocket",
  "longs": [
    {
      "address": "0x...",
      "coin": "BTC",
      "value": 1250000.50,
      "entry_price": 85000.0,
      "current_price": 86500.0,
      "liq_price": 82000.0,
      "distance_pct": 5.20,
      "leverage": 10.0,
      "size": 14.705882,
      "pnl": 22058.82
    }
  ],
  "shorts": [ ... ]
}

longs and shorts are sorted by distance_pct ascending (closest to liquidation first). Each array contains up to 50 positions.

Response Example (all_crypto.json)

{
  "updated_at": "2026-03-03T14:51:42.000Z",
  "min_position_value": 10000,
  "total_symbols": 134,
  "symbols": {
    "BTC": {
      "total_positions": 892,
      "total_longs": 510,
      "total_shorts": 382,
      "total_long_value": 450000000.00,
      "total_short_value": 280000000.00,
      "longs": [ ... ],
      "shorts": [ ... ]
    },
    "ETH": { ... }
  }
}

Symbols are sorted by total_positions descending. Each symbol contains up to 50 longs + 50 shorts.

Whale Watcher Expansion: 75 Symbols

Whale discovery now watches 75 symbols across native perps and HIP-3 dexes (previously 3). Whale threshold: $25,000+ per trade.

CategoryCountExamples
Always-watch (native perps)7BTC, ETH, SOL, HYPE, XRP, ZEC, FARTCOIN
Top volume (native perps)23PAXG, PUMP, SUI, DOGE, ASTER, LINK, XMR, MON, BNB, kPEPE, UNI, ENA, ...
HIP-3 Commodities14xyz:SILVER, xyz:GOLD, xyz:COPPER, xyz:CL, xyz:NATGAS, flx:OIL, ...
HIP-3 Indices8xyz:XYZ100, cash:USA500, km:USTECH, vntl:MAG7, vntl:SEMIS, vntl:ROBOT
HIP-3 Stocks18xyz:TSLA, xyz:NVDA, xyz:GOOGL, xyz:PLTR, xyz:META, xyz:AAPL, cash:NVDA, ...
HIP-3 FX2xyz:EUR, xyz:JPY
HIP-3 Pre-IPO3vntl:SPACEX, vntl:OPENAI, vntl:ANTHROPIC

HIP-3 perps live on separate dexes within Hyperliquid. Symbol format: dex:NAME (e.g., xyz:SILVER, cash:USA500). Whale addresses discovered from HIP-3 trades are added to the same whale address pool.

Position Scanner: 200 Threads

All 22,500+ discovered whale wallets are scanned continuously. Position tracking is wallet-based — calling clearinghouseState for a wallet returns all positions across both native perps and HIP-3 markets automatically. No per-symbol config needed.

  • 200 scan threads (full wallet scans)
  • 30 priority threads (fast updates for top positions)
  • Adding more watched symbols increases the whale address pool over time, not the per-wallet scan cost

Response Example (depositors.json)

{
  "updated_at": "2026-01-14T12:00:00Z",
  "stats": {
    "total_count": 125000,
    "total_deposited": 2500000000
  },
  "depositors": [
    {
      "address": "0x1234567890abcdef...",
      "amount": 50000,
      "timestamp": "2026-01-14T11:30:00Z"
    }
  ]
}

The depositors endpoint contains every wallet that has ever bridged USDC to Hyperliquid - the canonical address list.

Tick Data

Historical tick data for all 129 tracked symbols.

⚠️ IMPORTANT: Symbols MUST be lowercase. BTC.json returns 404. Use btc.json

Available symbols (lowercase only):

0g, 2z, aave, ace, ada, aero, aixbt, apex, apt, ar, arb, aster, atom, avax, avnt, axs, banana, bch, bera, bio, blast, blur, bnb, btc, cake, cc, celo, crv, dash, doge, dot, eigen, ena, eth, ethfi, fartcoin, fet, fil, fogo, gas, grass, hbar, hemi, hmstr, hype, icp, init, inj, io, ip, jto, jup, kaito, layer, ldo, linea, link, lit, ltc, manta, me, mega, melania, meme, merl, met, mina, mnt, mon, moodeng, morpho, move, near, ondo, op, ordi, paxg, pendle, pengu, pol, popcat, prompt, pump, purr, pyth, render, resolv, rune, s, saga, sand, sei, skr, sky, sol, spx, stable, stbl, strk, stx, sui, super, syrup, tao, tia, ton, trump, trx, uni, virtual, vvv, wct, wif, wld, wlfi, xai, xlm, xmr, xpl, xrp, zec, zen, zerebro, zeta, zk, zro, kbonk, kpepe, kshib

EndpointExampleDescription
GET /api/ticks/{symbol}.json/api/ticks/btc.jsonCurrent/latest ticks
GET /api/ticks/{symbol}_10m.json/api/ticks/btc_10m.jsonLast 10 minutes
GET /api/ticks/{symbol}_1h.json/api/ticks/btc_1h.jsonLast 1 hour
GET /api/ticks/{symbol}_4h.json/api/ticks/btc_4h.jsonLast 4 hours
GET /api/ticks/{symbol}_24h.json/api/ticks/btc_24h.jsonLast 24 hours
GET /api/ticks/{symbol}_7d.json/api/ticks/btc_7d.jsonLast 7 days
GET /api/ticks/latest.jsonLatest tick data for all 129 assets
GET /api/ticks/stats.jsonTick collection statistics and metadata

Replace btc with any of the 129 symbols listed above.

Examples

# Get BTC tick data (last hour)
curl "https://api.moondev.com/api/ticks/btc_1h.json?api_key=YOUR_KEY"

# Get ADA tick data (last 24 hours)
curl "https://api.moondev.com/api/ticks/ada_24h.json?api_key=YOUR_KEY"

# Get TRUMP tick data (last 7 days)
curl "https://api.moondev.com/api/ticks/trump_7d.json?api_key=YOUR_KEY"

Response Example (stats.json)

{
  "generated_at": "2026-01-29T15:37:44Z",
  "symbols": ["0G", "2Z", "AAVE", "ACE", "ADA", "...129 total"],
  "collector_stats": {
    "ticks_collected": 1552,
    "ticks_saved": 1552,
    "errors": 0,
    "started_at": "2026-01-06T19:03:35Z"
  },
  "db_size_mb": 0.16,
  "symbol_stats": {
    "BTC": {
      "tick_count": 251,
      "min_price": 91950.5,
      "max_price": 92296.0,
      "last_price": 92256.5
    }
  }
}

Response Example (btc_1h.json)

{
  "symbol": "BTC",
  "generated_at": "2026-01-06T19:17:38Z",
  "duration": "1h",
  "tick_count": 251,
  "latest_price": 92256.5,
  "ticks": [
    {"timestamp": 1767726130918, "price": 91950.5, "datetime": "2026-01-06T19:02:10Z"}
  ]
}

Blockchain Events

EndpointDescription
GET /api/events.jsonReal-time decoded blockchain events from Hyperliquid L1
{
  "updated_at": "2026-01-06T19:17:00Z",
  "stats": {
    "total_events": 2424,
    "events_by_type": {
      "Transfer": 1200,
      "Swap": 500,
      "Approval": 200,
      "Deposit": 150,
      "Withdrawal": 100
    }
  },
  "recent_events": [
    {
      "block_number": 23863116,
      "tx_hash": "0x...",
      "event_type": "Transfer",
      "contract": "0x5555555555555555555555555555555555555555",
      "timestamp": "2026-01-06T19:17:00Z"
    }
  ]
}

Contract Registry

EndpointDescription
GET /api/contracts.jsonComplete registry of Hyperliquid EVM smart contracts
{
  "generated_at": "2026-01-06T18:54:45Z",
  "chain": "hyperliquid_evm",
  "chain_id": 999,
  "total_contracts": 27,
  "high_value_count": 12,
  "key_contracts": {
    "system_treasury": "0x2222222222222222222222222222222222222222",
    "whype": "0x5555555555555555555555555555555555555555",
    "core_trading": "0x8549fd7ffc092f8366e416e129a622ec060104ea",
    "deposit_bridge": "0x5ed8551f90acc6395810d8274b019bf13ef1f696",
    "oracle": "0x200302c99d93ae1a024ecf9475df7d71b125efed"
  },
  "liquidation_contracts": ["0x8549...", "0x2003..."],
  "trading_alpha_contracts": ["0x8549...", "0x2180..."],
  "contracts": [
    {
      "address": "0x2222222222222222222222222222222222222222",
      "name": "Hyperliquid System Treasury",
      "type": "system",
      "description": "System treasury holding 954M+ HYPE",
      "is_high_value": true,
      "monitoring_priority": 10
    }
  ]
}

Hyperliquid Liquidations

Real-time liquidation data from Hyperliquid DEX.

EndpointDescription
GET /api/liquidations/stats.jsonLiquidation monitoring statistics
GET /api/liquidations/scan_summary.jsonRecent liquidation scan results
GET /api/liquidations/10m.jsonLast 10 minutes
GET /api/liquidations/1h.jsonLast 1 hour
GET /api/liquidations/4h.jsonLast 4 hours
GET /api/liquidations/12h.jsonLast 12 hours
GET /api/liquidations/24h.jsonLast 24 hours
GET /api/liquidations/2d.jsonLast 2 days
GET /api/liquidations/7d.jsonLast 7 days
GET /api/liquidations/14d.jsonLast 14 days
GET /api/liquidations/30d.jsonLast 30 days
{
  "scan_timestamp": "2026-01-06T19:00:00Z",
  "blocks_scanned": 500,
  "total_alerts": 150,
  "critical_count": 5,
  "warning_count": 25,
  "alerts": [
    {
      "timestamp": "2026-01-06T18:55:00Z",
      "block_number": 23863000,
      "tx_hash": "0x...",
      "contract_name": "Core Trading",
      "alert_type": "trade_executed",
      "level": "info"
    }
  ]
}

Alert Levels: info, warning, critical

HIP3 Liquidations (TradFi Assets)

Real-time liquidation data for traditional finance assets trading on Hyperliquid. Includes stocks, commodities, indices, and forex pairs.

Asset Categories

CategoryAssetsApprox OI
StocksTSLA, NVDA, AAPL, META, MSFT, GOOGL, AMZN, AMD, INTC, PLTR, COIN, HOOD, MSTR, ORCL, MU, NFLX, RIVN, BABA~$100M+
CommoditiesGOLD, SILVER, COPPER, CL (Oil), NATGAS, URANIUM~$125M
IndicesXYZ100 (Nasdaq proxy)~$120M
FXEUR, JPY~$3M

Get HIP3 Liquidations

EndpointDescription
GET /api/hip3_liquidations/10m.jsonLast 10 minutes
GET /api/hip3_liquidations/1h.jsonLast 1 hour
GET /api/hip3_liquidations/24h.jsonLast 24 hours
GET /api/hip3_liquidations/7d.jsonLast 7 days

Response Fields

FieldTypeDescription
symbolstringAsset symbol (TSLA, GOLD, etc.)
sidestringlong or short
sizenumberPosition size
pricenumberLiquidation price
value_usdnumberUSD value of liquidation
categorystringstocks, commodities, indices, or fx
timestampnumberEvent timestamp (Unix ms)

Get HIP3 Liquidation Stats

EndpointDescription
GET /api/hip3_liquidations/stats.jsonAggregated statistics for HIP3 liquidations

Stats Response Fields

FieldTypeDescription
total_countnumberTotal liquidation count
total_volumenumberTotal USD volume liquidated
long_countnumberNumber of long liquidations
short_countnumberNumber of short liquidations
long_volumenumberUSD volume of long liquidations
short_volumenumberUSD volume of short liquidations
by_categoryobjectBreakdown by category (stocks, commodities, indices, fx)
by_symbolobjectBreakdown by individual symbol
top_symbolsarrayTop symbols by liquidation volume

Example Request

curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_liquidations/1h.json

Python SDK Usage

from api import MoonDevAPI

api = MoonDevAPI()

# Get HIP3 liquidation stats
stats = api.get_hip3_liquidation_stats()
print(f"Total liquidations: {stats['total_count']}")
print(f"Total volume: ${stats['total_volume']:,.0f}")

# Get HIP3 liquidations for different timeframes
liqs_10m = api.get_hip3_liquidations("10m")   # Last 10 minutes
liqs_1h = api.get_hip3_liquidations("1h")     # Last 1 hour
liqs_24h = api.get_hip3_liquidations("24h")   # Last 24 hours
liqs_7d = api.get_hip3_liquidations("7d")     # Last 7 days

# Process liquidation data
for liq in liqs_1h:
    print(f"{liq['symbol']} {liq['side'].upper()} ${liq['value_usd']:,.0f} @ ${liq['price']}")

Use Cases

  • Risk Management - Monitor liquidation activity across traditional finance assets to gauge market stress
  • Trading Signals - High liquidation volume in one direction may indicate squeeze potential
  • Market Analysis - Track which asset categories are seeing the most liquidation activity
  • Alert Systems - Build alerts for large liquidations on specific symbols

Rate limit: 3,600 requests per minute. Data updates in real-time. Historical data available up to 7 days.

Ready to start building? Get your API key here.

HIP3 Market Data (Multi-Dex)

Real-time tick data for every HIP3 symbol on HyperLiquid — currently 136 symbols across 7 dexes, up from the previous top-10-by-volume cap. New symbols are auto-discovered as HyperLiquid lists them, with no config changes required. All data is served on-demand from our SQLite tick store at request time, so the API scales to thousands of symbols without pre-generating files.

🌙 Why this beats the HyperLiquid Data API

  • HyperLiquid 1m candles — max 3.6 days of history
  • HyperLiquid 5m candles — max 17 days of history
  • Moon Dev API (starting 2026-04-26) — unlimited days going forward, every tick, every HIP3 symbol. Want 30-second bars? We have every tick — roll your own resolution.

Coverage at a Glance

Symbol count136 (live count — grows automatically)
Dexes trackedxyz (XYZ), flx (Felix), vntl (Ventuals), hyna (HyENA), km (Kinetiq), cash (dreamcash), para (Paragon)
Categoriesstocks, indices, commodities, FX, crypto, pre-IPO, other
Trading hours24/7 (HyperLiquid is always open — no market-hours gaps, even for equity-named perps)
Tick resolutionevery trade on the venue (~500ms heartbeat target)
Retention30 days of raw ticks per symbol
Freshnesssub-second (queried live from the tick DB)

Categories

CategoryExamples
StocksTSLA, NVDA, HIMS, AAPL, META, COIN
IndicesXYZ100, USA500, USTECH, SMALL2000
CommoditiesGOLD, SILVER, CL, OIL, NATGAS, COPPER
FXEUR, JPY
CryptoBTC, ETH, SOL, HYPE, XMR
Pre-IPOOPENAI, ANTHROPIC, SPACEX

Symbol Format: {dex}:{ticker} (e.g., xyz:TSLA, hyna:BTC, km:US500, vntl:OPENAI)

Get All HIP3 Symbols & Prices (Auto-Discovery)

The /meta endpoint auto-discovers dexes via perpDexs (5-min cache), so newly added HyperLiquid dexes appear automatically — no config changes required.

EndpointDescription
GET /api/hip3/metaReturns all 136 symbols with current prices, categories, and per-dex active/delisted counts
GET /api/hip3/candles/symbolsSame coverage, organized by category
GET /api/hip3/meta?include_delisted=trueInclude delisted symbols
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3/meta

Get Tick Collector Stats

EndpointDescription
GET /api/hip3_ticks/stats.jsonReturns tick collector statistics across all 136 symbols / 7 dexes
{
  "generated_at": "2026-04-26T15:39:48Z",
  "market_type": "HIP3",
  "collection_method": "WebSocket Streaming",
  "dexes": ["xyz", "flx", "vntl", "hyna", "km", "cash", "para"],
  "symbol_count": 136,
  "by_category": {
    "stocks": ..., "indices": ..., "commodities": ...,
    "fx": ..., "crypto": ..., "pre_ipo": ..., "other": ...
  }
}

Get Individual Symbol Tick Data

EndpointDescription
GET /api/hip3_ticks/{dex}_{ticker}.jsonReturns tick data for a specific symbol

XYZ Dex (27) - Stocks, Commodities, FX

curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/xyz_tsla.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/xyz_nvda.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/xyz_gold.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/xyz_eur.json

FLX Dex (7) - Stocks, XMR, Commodities

curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/flx_xmr.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/flx_gold.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/flx_oil.json

VNTL Dex (7) - Pre-IPO & Indices

curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/vntl_openai.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/vntl_anthropic.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/vntl_spacex.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/vntl_mag7.json

HYNA Dex (12) - Crypto

curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/hyna_btc.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/hyna_eth.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/hyna_hype.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/hyna_sol.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/hyna_fartcoin.json

KM Dex (5) - US Indices

curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/km_us500.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/km_ustech.json
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3_ticks/km_small2000.json

Python SDK Usage

from api import MoonDevAPI

api = MoonDevAPI()

# Get all HIP3 symbols with prices
meta = api.get_hip3_meta()
for sym in meta['symbols']:
    print(f"{sym['dex']}:{sym['ticker']} = ${sym['price']}")

# Get tick stats
stats = api.get_hip3_tick_stats()
print(f"Symbols: {stats['symbol_count']}")
print(f"Ticks received: {stats['collector_stats']['ticks_received']}")

# Get tick data by dex:ticker
tsla = api.get_hip3_ticks("xyz", "tsla")      # Tesla
openai = api.get_hip3_ticks("vntl", "openai") # OpenAI Pre-IPO
btc = api.get_hip3_ticks("hyna", "btc")       # Bitcoin
sp500 = api.get_hip3_ticks("km", "us500")     # S&P 500

Example Dashboard

python examples/21_hip3_market_data.py               # All 58 symbols with prices
python examples/21_hip3_market_data.py xyz tsla      # Tesla ticks
python examples/21_hip3_market_data.py vntl openai   # OpenAI Pre-IPO ticks
python examples/21_hip3_market_data.py hyna btc      # Bitcoin ticks
python examples/21_hip3_market_data.py km us500      # S&P 500 ticks

Legacy Endpoints (Still Supported)

The following endpoints from the original HIP3 Market Data are still available:

EndpointDescription
GET /api/hip3/candles/symbolsList all symbols organized by category
GET /api/hip3/pricesAll prices at once
GET /api/hip3/price/{coin}Single symbol price
GET /api/hip3/candles/{coin}?interval=OHLCV candles (1m, 5m, 15m, 1h, 4h, 1d)
GET /api/hip3/ticks/{coin}?duration=Raw tick data (10m, 1h, 4h, 24h, 7d)

List All HIP3 Symbols

EndpointDescription
GET /api/hip3/candles/symbolsReturns all 136 HIP3 symbols organized by category and dex
{
  "count": 136,
  "categories": {
    "stocks": ["xyz:TSLA", "xyz:NVDA", "xyz:HIMS", ...],
    "commodities": ["xyz:GOLD", "xyz:SILVER", "xyz:CL", "flx:OIL", ...],
    "fx": ["xyz:JPY", "xyz:EUR"],
    "indices": ["xyz:XYZ100", "cash:USA500", "km:USTECH", ...],
    "crypto": ["hyna:BTC", "hyna:ETH", "hyna:HYPE", ...],
    "pre_ipo": ["vntl:OPENAI", "vntl:ANTHROPIC", "vntl:SPACEX"]
  }
}

Get All HIP3 Prices

EndpointDescription
GET /api/hip3/pricesReturns current prices for all 136 HIP3 symbols
{
  "generated_at": "2026-04-26T15:39:48Z",
  "market_type": "HIP3",
  "dexes": ["xyz", "flx", "vntl", "hyna", "km", "cash", "para"],
  "prices": {
    "xyz:HIMS":    {"dex": "xyz",  "ticker": "HIMS",    "price": 30.399, "category": "other"},
    "xyz:TSLA":    {"dex": "xyz",  "ticker": "TSLA",    "price": 431.64, "category": "stocks"},
    "cash:USA500": {"dex": "cash", "ticker": "USA500",  "price": 6780.6, "category": "indices"},
    "vntl:OPENAI": {"dex": "vntl", "ticker": "OPENAI",  "price": 412.5,  "category": "pre_ipo"}
  }
}

Get Single Symbol Price

EndpointDescription
GET /api/hip3/price/{coin}Returns current price for a single HIP3 symbol

The dex and ticker fields are now split out as top-level keys, so consumers don't need to parse the colon-qualified symbol string.

curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/hip3/price/HIMS
{
  "symbol": "xyz:HIMS",
  "dex": "xyz",
  "ticker": "HIMS",
  "price": 30.399,
  "category": "other",
  "market_type": "HIP3",
  "timestamp": "2026-04-26T15:39:48.793000+00:00"
}

Get OHLCV Candles

EndpointDescription
GET /api/hip3/candles/{coin}?interval={interval}Returns OHLCV candle data for any HIP3 symbol
ParamDefaultDescription
coinrequiredSymbol (TSLA, GOLD, EUR, XYZ100, etc.)
interval5mCandle interval: 1m, 5m, 15m, 1h, 4h, 1d
startTimeautoStart timestamp (Unix ms)
endTimenowEnd timestamp (Unix ms)
curl -H "X-API-Key: YOUR_KEY" "https://api.moondev.com/api/hip3/candles/TSLA?interval=1h"
[
  {
    "t": 1737288000000,
    "T": 1737291599999,
    "s": "TSLA",
    "i": "1h",
    "o": "430.50",
    "h": "432.20",
    "l": "429.80",
    "c": "431.90",
    "v": "0",
    "n": 245
  }
]

Candle Response Fields

FieldDescription
tOpen time (Unix ms)
TClose time (Unix ms)
sSymbol
iInterval
oOpen price
hHigh price
lLow price
cClose price
vVolume
nNumber of ticks in candle

Get Raw Tick Data

EndpointDescription
GET /api/hip3/ticks/{coin}?duration={duration}Returns raw tick-by-tick price data for any HIP3 symbol
ParamDefaultDescription
coinrequiredSymbol (TSLA, GOLD, EUR, XYZ100, etc.)
duration1hTime window: 10m, 1h, 4h, 24h, 7d
limit10000Max ticks to return
startTime-Start time (Unix ms), overrides duration
endTime-End time (Unix ms)
curl -H "X-API-Key: YOUR_KEY" "https://api.moondev.com/api/hip3/ticks/GOLD?duration=1h"
{
  "symbol": "GOLD",
  "duration": "1h",
  "tick_count": 112,
  "latest_price": 4672.40,
  "ticks": [
    {
      "t": 1737288000000,
      "p": 4671.50,
      "dt": "2026-01-19T13:00:00.000000+00:00"
    },
    {
      "t": 1737288003000,
      "p": 4671.80,
      "dt": "2026-01-19T13:00:03.000000+00:00"
    }
  ]
}

Python SDK Usage

from api import MoonDevAPI

api = MoonDevAPI()

# Get all HIP3 symbols by category
symbols = api.get_hip3_symbols()
print(f"{symbols['count']} symbols available")
print(f"Stocks: {symbols['categories']['stocks']}")
print(f"Commodities: {symbols['categories']['commodities']}")

# Get all HIP3 prices at once
prices = api.get_hip3_prices()
print(f"TSLA: ${prices['prices']['TSLA']['price']}")
print(f"GOLD: ${prices['prices']['GOLD']['price']}")

# Get single symbol price
tsla = api.get_hip3_price("TSLA")
print(f"TSLA: ${tsla['price']} ({tsla['category']})")

# Get OHLCV candles
candles = api.get_hip3_candles("TSLA", interval="5m")
for c in candles[-5:]:
    print(f"O:{c['o']} H:{c['h']} L:{c['l']} C:{c['c']}")

# Get 1-hour candles for GOLD
gold_candles = api.get_hip3_candles("GOLD", interval="1h")

# Get daily candles
daily = api.get_hip3_candles("NVDA", interval="1d")

# Get raw tick data
ticks = api.get_hip3_ticks("TSLA", duration="1h")
print(f"{ticks['tick_count']} ticks, latest: ${ticks['latest_price']}")

# Get 24h of tick data
ticks_24h = api.get_hip3_ticks("GOLD", duration="24h")

# Custom time range (Unix ms)
ticks = api.get_hip3_ticks("EUR", start_time=1737280000000, end_time=1737290000000)

Use Cases

  • Technical Analysis - Build charts and indicators using OHLCV candles
  • Algorithmic Trading - Use tick data for high-frequency strategies
  • Cross-Asset Analysis - Compare crypto with TradFi assets on same platform
  • Price Alerts - Monitor tick-by-tick price changes for specific assets
  • Backtesting - Historical candle data for strategy testing

Like what you see? Grab your API key and start building.

Data Collection Details

  • Polling Interval: 500ms (only stores price changes)
  • Auto-Discovery: New symbols detected every 5 minutes
  • Candle Intervals: 1m, 5m, 15m, 1h, 4h, 1d
  • Tick Durations: 10m, 1h, 4h, 24h, 7d

Rate limit: 3,600 requests per minute. Data updates at 500ms intervals. Tick data stored only on price changes.

HIP3 Funding

Funding rate analysis for both crypto perps and HIP3 tokenized assets (stocks, commodities, ETFs) across xyz and cash dexes. Includes top positive/negative rates, tracked symbols, and 24h history.

Available Endpoints

EndpointDescription
GET /api/hlp/fundingFunding rates for crypto perps only
GET /api/hlp/funding/hip3Funding rates for HIP3 tokenized assets (stocks, commodities, ETFs)

HIP3 Funding

Returns funding rate analysis for HIP3 tokenized assets across xyz and cash dexes. Symbols are prefixed with the dex name — xyz:GOLD, cash:USA500, cash:TSLA, etc. This matches the convention used by the positions scanner.

curl "https://api.moondev.com/api/hlp/funding/hip3?api_key=YOUR_KEY"

Response Example

{
  "timestamp": "2026-03-07T13:54:05.479635+00:00",
  "top_positive_funding": [
    { "coin": "xyz:BRENTOIL", "rate_pct": 0.024, "annualized": 26.31 },
    { "coin": "xyz:URNM", "rate_pct": 0.0239, "annualized": 26.12 }
  ],
  "top_negative_funding": [
    { "coin": "xyz:HYUNDAI", "rate_pct": -0.0642, "annualized": -70.31 },
    { "coin": "xyz:NATGAS", "rate_pct": -0.0368, "annualized": -40.25 }
  ],
  "current_rates": {
    "xyz:GOLD": { "rate_pct": 0.0006, "annualized": 0.68 },
    "xyz:TSLA": { "rate_pct": -0.0009, "annualized": -0.93 },
    "cash:USA500": { "rate_pct": 0.0, "annualized": 0.0 }
  },
  "all_rates": {
    "xyz:BRENTOIL": {
      "rate_pct": 0.024,
      "annualized": 26.31,
      "mark_price": 71.42,
      "oi_value": 152340.50
    }
  },
  "history_24h": [
    {
      "time": "2026-03-07T13:00:00+00:00",
      "coin": "xyz:GOLD",
      "rate": 0.000006,
      "annualized": 0.68,
      "price": 2920.5
    }
  ]
}

Response Fields

FieldDescription
top_positive_fundingTop 10 symbols with highest (most positive) funding rates
top_negative_fundingTop 10 symbols with lowest (most negative) funding rates
current_ratesRates for tracked HIP3 symbols (GOLD, SILVER, TSLA, NVDA, AAPL, USA500, etc.)
all_ratesEvery HIP3 symbol with rate, annualized %, mark price, and open interest value
history_24hUp to 100 recent funding rate snapshots for tracked symbols
rate_pctFunding rate as percentage (per 8-hour period)
annualizedAnnualized funding rate as percentage

Python Example

import requests

API_KEY = "your_api_key"
BASE_URL = "https://api.moondev.com"

# Get HIP3 funding rates
hip3_funding = requests.get(
    f"{BASE_URL}/api/hlp/funding/hip3",
    headers={"X-API-Key": API_KEY}
).json()

print(f"Timestamp: {hip3_funding['timestamp']}")

# Top positive funding (longs paying shorts)
print("\nTop Positive Funding:")
for item in hip3_funding["top_positive_funding"][:5]:
    print(f"  {item['coin']}: {item['rate_pct']}% ({item['annualized']:.1f}% annualized)")

# Top negative funding (shorts paying longs)
print("\nTop Negative Funding:")
for item in hip3_funding["top_negative_funding"][:5]:
    print(f"  {item['coin']}: {item['rate_pct']}% ({item['annualized']:.1f}% annualized)")

# Check specific symbols
for coin, data in hip3_funding["current_rates"].items():
    print(f"  {coin}: {data['annualized']:.2f}% annualized")

Data updates every ~15 seconds. The existing /api/hlp/funding endpoint is unchanged and continues to serve crypto perps only.

HIP3 Tick Data (All Symbols)

Tick-level data and server-computed OHLCV candles for every HIP3 symbol on HyperLiquid — currently 136 symbols across 7 dexes (xyz, flx, vntl, hyna, km, cash, para). As of 2026-04-26, the previous top-10-by-volume cap is gone. New symbols are auto-discovered as HyperLiquid lists them. Data is served on-demand from our SQLite tick store at request time, candles are computed live from those ticks, and retention is 30 days of raw ticks per symbol.

🌙 Why this matters

HIP3 tick data on traditional venues costs thousands per month per symbol. Because we run a HyperLiquid node, every HIP3 symbol — stocks, commodities, FX, indices, crypto, pre-IPO — is available through one API at no marginal cost, 24/7, with sub-second freshness and OHLCV at any interval.

  • HyperLiquid Data API: 1m candles capped at 3.6 days, 5m candles capped at 17 days.
  • Moon Dev API: from 2026-04-26 forward, unlimited days back per tick, every tick. Want 30-second bars? We have every trade — roll your own bucket.

Endpoints

All endpoints require api_key as a query param or X-API-Key header.

EndpointDescription
GET /api/hip3/candles/symbolsList all currently tracked symbols, intervals, and categories
GET /api/hip3/ticks/{coin}?duration=1hRaw tick data for a symbol (durations: 10m, 1h, 4h, 24h, 7d)
GET /api/hip3/candles/{coin}?interval=5mOHLCV candles computed from ticks (intervals: 1m, 5m, 15m, 1h, 4h, 1d)
GET /api/hip3/price/{coin}Latest price for a single symbol
GET /api/hip3/pricesLatest prices for all tracked symbols

Symbol Lookup

Three symbol formats are accepted — bare ticker, full dex:ticker, or non-xyz dex prefix. Bare tickers auto-resolve to the correct dex.

# Bare ticker (resolves to correct dex automatically)
curl "https://api.moondev.com/api/hip3/ticks/CL?duration=1h&api_key=YOUR_KEY"

# Full dex:ticker format
curl "https://api.moondev.com/api/hip3/ticks/xyz:CL?duration=1h&api_key=YOUR_KEY"

# Non-xyz dex
curl "https://api.moondev.com/api/hip3/ticks/cash:USA500?duration=1h&api_key=YOUR_KEY"

1. List Available Symbols

curl "https://api.moondev.com/api/hip3/candles/symbols?api_key=YOUR_KEY"

Response Example

{
  "count": 136,
  "dexes": ["xyz", "flx", "vntl", "hyna", "km", "cash", "para"],
  "intervals": ["1m", "5m", "15m", "1h", "4h", "1d"],
  "by_category": {
    "stocks":      ["xyz:TSLA", "xyz:NVDA", "xyz:HIMS", "..."],
    "indices":     ["xyz:XYZ100", "cash:USA500", "km:USTECH", "..."],
    "commodities": ["xyz:CL", "xyz:GOLD", "xyz:SILVER", "flx:OIL", "..."],
    "fx":          ["xyz:EUR", "xyz:JPY"],
    "crypto":      ["hyna:BTC", "hyna:ETH", "hyna:HYPE", "..."],
    "pre_ipo":     ["vntl:OPENAI", "vntl:ANTHROPIC", "vntl:SPACEX"]
  },
  "market_type": "HIP3"
}

2. Raw Tick Data

Durations: 10m, 1h, 4h, 24h, 7d

curl "https://api.moondev.com/api/hip3/ticks/CL?duration=1h&api_key=YOUR_KEY"

Response Example

{
  "symbol": "xyz:CL",
  "category": "commodities",
  "market_type": "HIP3",
  "duration": "1h",
  "tick_count": 1842,
  "start_time": 1741611600000,
  "end_time": 1741615200000,
  "latest_price": 87.89,
  "ticks": [
    {"t": 1741611600500, "p": 87.65, "dt": "2026-03-10T13:00:00+00:00"},
    {"t": 1741611601000, "p": 87.66, "dt": "2026-03-10T13:00:01+00:00"}
  ]
}

3. OHLCV Candles (computed from ticks)

Intervals: 1m, 5m, 15m, 1h, 4h, 1d. Optional params: startTime, endTime (Unix ms).

curl "https://api.moondev.com/api/hip3/candles/CL?interval=5m&api_key=YOUR_KEY"
curl "https://api.moondev.com/api/hip3/candles/cash:USA500?interval=1h&api_key=YOUR_KEY"

Response Example

[
  {
    "t": 1741611600000, "T": 1741611899999,
    "s": "CL", "i": "5m",
    "o": "87.65", "h": "87.92", "l": "87.60", "c": "87.89",
    "v": "0", "n": 42
  }
]

4. Latest Price (single symbol)

The dex and ticker fields are split out as top-level keys, so consumers don't need to parse the colon-qualified symbol string.

curl "https://api.moondev.com/api/hip3/price/HIMS?api_key=YOUR_KEY"

Response Example

{
  "symbol": "xyz:HIMS",
  "dex": "xyz",
  "ticker": "HIMS",
  "price": 30.399,
  "category": "other",
  "market_type": "HIP3",
  "timestamp": "2026-04-26T15:39:48.793000+00:00"
}

5. All Latest Prices

curl "https://api.moondev.com/api/hip3/prices?api_key=YOUR_KEY"

Response Example

{
  "generated_at": "2026-04-26T15:39:48+00:00",
  "market_type": "HIP3",
  "dexes": ["xyz", "flx", "vntl", "hyna", "km", "cash", "para"],
  "prices": {
    "xyz:HIMS":     {"dex": "xyz",  "ticker": "HIMS",     "price": 30.399, "category": "other"},
    "xyz:CL":       {"dex": "xyz",  "ticker": "CL",       "price": 87.89,  "category": "commodities"},
    "cash:USA500":  {"dex": "cash", "ticker": "USA500",   "price": 6780.6, "category": "indices"},
    "vntl:OPENAI":  {"dex": "vntl", "ticker": "OPENAI",   "price": 412.5,  "category": "pre_ipo"},
    "hyna:BTC":     {"dex": "hyna", "ticker": "BTC",      "price": 96420,  "category": "crypto"}
  }
}

Tick + Candle Query Params

All parameters are strictly validated. Invalid input returns HTTP 400 with a helpful message — no silent fallbacks. Unknown symbols return HTTP 404 with a pointer to /api/hip3/candles/symbols.

ParameterValid valuesError on invalid
duration10m, 1h, 4h, 24h, 7d400 Invalid duration 'X'. Supported: 10m, 1h, 4h, 24h, 7d
interval1m, 5m, 15m, 1h, 4h, 1d400 Invalid interval. Supported: 1m, 5m, 15m, 1h, 4h, 1d
limitinteger 1..100000 (default 10000 ticks / 200 candles)400 Invalid limit X. Must be 1..100000
orderasc or desc (default asc)400 Invalid order 'X'. Use 'asc' or 'desc'
startTime / endTimeUnix ms (overrides duration when provided)

Quick Examples

# Live HIMS price
curl "https://api.moondev.com/api/hip3/price/HIMS?api_key=KEY"

# Last hour of HIMS ticks
curl "https://api.moondev.com/api/hip3/ticks/HIMS?duration=1h&api_key=KEY"

# 1-minute HIMS candles for the last 7 days
NOW=$(($(date +%s)*1000)); WEEK=$((NOW - 7*86400*1000))
curl "https://api.moondev.com/api/hip3/candles/HIMS?interval=1m&startTime=$WEEK&endTime=$NOW&api_key=KEY"

# All current HIP3 prices (136 symbols across 7 dexes)
curl "https://api.moondev.com/api/hip3/prices?api_key=KEY"

# Pre-IPO exposure via Ventuals
curl "https://api.moondev.com/api/hip3/price/vntl:OPENAI?api_key=KEY"
curl "https://api.moondev.com/api/hip3/price/vntl:ANTHROPIC?api_key=KEY"

Key Notes

  • All 136 symbols — the previous top-10 cap was removed on 2026-04-26; every HIP3 symbol on HyperLiquid is now tracked
  • Auto-discovery — new symbols and dexes are picked up automatically via perpDexs (5-min cache) — no config changes required
  • 7 dexes — xyz, flx, vntl, hyna, km, cash, para
  • 24/7 trading — HyperLiquid never closes, so equity-named perps trade through nights and weekends
  • 30-day raw tick retention — every trade for the last 30 days, per symbol
  • Bare ticker lookups — pass just HIMS, CL, or USA500; ambiguous tickers (e.g. GOLD on xyz/flx/km) require the full dex:ticker form
  • Server-computed candles — built live from stored ticks; pick any standard interval, or pull raw ticks and bucket them yourself (e.g. 30s)
  • Beats the HyperLiquid Data API — their 1m candle history caps at ~3.6 days and 5m at ~17 days; we keep going from 2026-04-26 forward

Migration Notes

  • No breaking changes. Legacy /api/hip3_ticks/{dex}_{symbol}_{duration}.json static files continue to publish for the top 10 by volume for backward compatibility.
  • New consumers should use the on-demand endpoints above — they cover every symbol, return live data, and support time-window queries.
  • If you previously parsed xyz:HIMS client-side to extract the dex, you can now read dex and ticker directly from the price response.

Multi-Exchange Liquidations

Real-time liquidation data from multiple exchanges: Binance, Bybit, OKX, and HyperLiquid. Get individual exchange data or combined aggregated stats across all exchanges.

Update Frequency

  • Live endpoints (10m - 5d): Updated every 30 seconds
  • Archive endpoints (7d - 30d): Updated every 15 minutes

Combined (All Exchanges) - Live

EndpointDescription
GET /api/all_liquidations/stats.jsonCombined stats from all exchanges
GET /api/all_liquidations/10m.jsonLast 10 minutes
GET /api/all_liquidations/1h.jsonLast 1 hour
GET /api/all_liquidations/4h.jsonLast 4 hours
GET /api/all_liquidations/12h.jsonLast 12 hours
GET /api/all_liquidations/24h.jsonLast 24 hours
GET /api/all_liquidations/2d.jsonLast 2 days
GET /api/all_liquidations/5d.jsonLast 5 days

Combined (All Exchanges) - Archive

EndpointDescription
GET /api/all_liquidations/7d.jsonLast 7 days (15-min updates)
GET /api/all_liquidations/14d.jsonLast 14 days (15-min updates)
GET /api/all_liquidations/30d.jsonLast 30 days (15-min updates)

Binance Liquidations

EndpointDescription
GET /api/binance_liquidations/stats.jsonBinance stats (24h volume, counts, top coins)
GET /api/binance_liquidations/10m.jsonLast 10 minutes
GET /api/binance_liquidations/1h.jsonLast hour
GET /api/binance_liquidations/24h.jsonLast 24 hours
GET /api/binance_liquidations/7d.jsonLast 7 days
GET /api/binance_liquidations/30d.jsonLast 30 days

Bybit Liquidations

EndpointDescription
GET /api/bybit_liquidations/stats.jsonBybit stats (24h volume, counts, top coins)
GET /api/bybit_liquidations/10m.jsonLast 10 minutes
GET /api/bybit_liquidations/1h.jsonLast hour
GET /api/bybit_liquidations/24h.jsonLast 24 hours
GET /api/bybit_liquidations/7d.jsonLast 7 days
GET /api/bybit_liquidations/30d.jsonLast 30 days

OKX Liquidations

EndpointDescription
GET /api/okx_liquidations/stats.jsonOKX stats (24h volume, counts, top coins)
GET /api/okx_liquidations/10m.jsonLast 10 minutes
GET /api/okx_liquidations/1h.jsonLast hour
GET /api/okx_liquidations/24h.jsonLast 24 hours
GET /api/okx_liquidations/7d.jsonLast 7 days
GET /api/okx_liquidations/30d.jsonLast 30 days

Response Example (all_liquidations/stats.json)

{
  "updated_at": "2026-01-09T12:00:00Z",
  "exchanges": ["binance", "bybit", "okx"],
  "combined": {
    "total_liquidations": 45000,
    "total_value_usd": 380000000,
    "long_liquidations": {
      "count": 25000,
      "value_usd": 215000000
    },
    "short_liquidations": {
      "count": 20000,
      "value_usd": 165000000
    }
  },
  "by_exchange": {
    "binance": {"count": 18000, "value_usd": 165000000},
    "bybit": {"count": 15000, "value_usd": 125000000},
    "okx": {"count": 12000, "value_usd": 90000000}
  },
  "top_liquidated_coins": [
    {"symbol": "BTC", "value_usd": 125000000, "count": 9500},
    {"symbol": "ETH", "value_usd": 85000000, "count": 8200},
    {"symbol": "SOL", "value_usd": 45000000, "count": 5100}
  ]
}

Response Example (binance_liquidations/1h.json)

{
  "exchange": "binance",
  "timeframe": "1h",
  "generated_at": "2026-01-09T12:00:00Z",
  "stats": {
    "total_count": 850,
    "long_count": 480,
    "short_count": 370,
    "total_value_usd": 8500000,
    "long_value_usd": 5200000,
    "short_value_usd": 3300000
  },
  "liquidations": [
    {
      "symbol": "BTCUSDT",
      "side": "SELL",
      "quantity": 0.15,
      "price": 42500.00,
      "value_usd": 6375.00,
      "timestamp": "2026-01-09T11:55:00Z"
    }
  ]
}

Python Example - Multi-Exchange

import requests

API_KEY = "your_api_key"
BASE_URL = "https://api.moondev.com"
headers = {"X-API-Key": API_KEY}

# Get combined stats from ALL exchanges
all_stats = requests.get(
    f"{BASE_URL}/api/all_liquidations/stats.json",
    headers=headers
).json()

print("=== COMBINED LIQUIDATIONS (All Exchanges) ===")
print(f"Total Volume: ${all_stats['combined']['total_value_usd']:,.0f}")
print(f"Longs Rekt:   ${all_stats['combined']['long_liquidations']['value_usd']:,.0f}")
print(f"Shorts Rekt:  ${all_stats['combined']['short_liquidations']['value_usd']:,.0f}")

print("\n=== BY EXCHANGE ===")
for exchange, data in all_stats['by_exchange'].items():
    print(f"{exchange.upper()}: {data['count']:,} liquidations, ${data['value_usd']:,.0f}")

# Get individual exchange data
for exchange in ["binance", "bybit", "okx"]:
    hourly = requests.get(
        f"{BASE_URL}/api/{exchange}_liquidations/1h.json",
        headers=headers
    ).json()
    print(f"\n{exchange.upper()} Last Hour: {hourly['stats']['total_count']} liquidations")

Note: side: "SELL" = Long position liquidated, side: "BUY" = Short position liquidated.

Cross-exchange liquidation data in one API call. Get your API key here.

Bulk Binance Liquidation Data Download

Quant Elite Only

This endpoint requires a Quant Elite API key (must end in _qe). Access 18+ months of Binance Futures liquidation data — 32M+ records back to June 2024, updated in real-time.

Endpoint

MethodURL
GET/api/bulk/binance_liquidations?api_key=YOUR_QE_KEY

Parameters

ParamDescription
startStart date — YYYY-MM-DD or unix ms
endEnd date — YYYY-MM-DD or unix ms
symbolFilter by symbol — BTC, BTCUSDT, ETH, ETHUSDT all work
sideBUY (shorts liquidated) or SELL (longs liquidated)
min_usdMin USD size, e.g. 100000
limitRecords per page (default 10,000 / max 100,000)
offsetPagination offset

Quick Examples

Latest 10k liquidations:

GET /api/bulk/binance_liquidations?api_key=YOUR_QE_KEY

BTC only, 2025:

GET /api/bulk/binance_liquidations?api_key=YOUR_QE_KEY&symbol=BTCUSDT&start=2025-01-01&end=2025-12-31

Large liquidations only (>$100k):

GET /api/bulk/binance_liquidations?api_key=YOUR_QE_KEY&min_usd=100000

Pagination

Response includes has_more and next_offset. Keep requesting with offset=next_offset until has_more is false. At limit=100000 the full 32M+ dataset downloads in ~3 minutes.

Python — Download Full Dataset to CSV

import requests, csv, time

API_KEY = "yourkey_qe"
URL = "https://api.moondev.com/api/bulk/binance_liquidations"
limit, offset = 100000, 0

with open("binance_liqs.csv", "w", newline="") as f:
    writer = None
    while True:
        r = requests.get(URL, params={
            "api_key": API_KEY,
            "limit": limit,
            "offset": offset
        }).json()
        if not r["data"]:
            break
        if not writer:
            writer = csv.DictWriter(f, fieldnames=r["data"][0].keys())
            writer.writeheader()
        writer.writerows(r["data"])
        print(f"{offset + len(r['data']):,} / {r['total_records']:,}")
        if not r["has_more"]:
            break
        offset = r["next_offset"]
        time.sleep(0.5)

Position Snapshots

Historical snapshots of HyperLiquid positions within 15% of liquidation. Captured every 1 minute — perfect for backtesting liquidation cascade strategies and squeeze detection.

Tracked Symbols

Currently tracking: BTC, ETH, SOL, XRP, HYPE

Filters: Positions within 15% of liquidation, minimum $10k position value, 1-minute snapshots

Endpoints

EndpointDescription
GET /api/position_snapshots/stats?hours=NAggregate statistics across all tracked symbols
GET /api/position_snapshots/symbol/{symbol}?hours=NHistorical snapshots for a symbol (BTC, ETH, SOL, XRP, HYPE)

Query Parameters

ParameterDefaultDescription
hours24Lookback period in hours
limit1000Maximum records to return (symbol endpoint only)
min_distance_pct-Filter: minimum distance to liquidation %
max_distance_pct-Filter: maximum distance to liquidation %
side-Filter: "long" or "short"

Response Example (stats)

{
  "overall": {
    "total_snapshots": 39128,
    "unique_users": 2579,
    "avg_distance_pct": 6.46
  },
  "by_symbol": {
    "BTC": {
      "snapshots": 22952,
      "unique_users": 1710,
      "avg_distance_pct": 5.95,
      "longs": 17646,
      "shorts": 5306
    },
    "ETH": { "snapshots": 8500, "unique_users": 620, "avg_distance_pct": 6.8, "longs": 5200, "shorts": 3300 },
    "SOL": { "snapshots": 4200, "unique_users": 380, "avg_distance_pct": 7.2, "longs": 2800, "shorts": 1400 },
    "XRP": { "snapshots": 2100, "unique_users": 180, "avg_distance_pct": 8.1, "longs": 1400, "shorts": 700 },
    "HYPE": { "snapshots": 1376, "unique_users": 95, "avg_distance_pct": 7.5, "longs": 900, "shorts": 476 }
  },
  "top_10_closest": [
    {
      "user": "0x702f...",
      "symbol": "BTC",
      "side": "long",
      "position_value": 184600,
      "entry_price": 74913.80,
      "liquidation_price": 67164.00,
      "distance_pct": 0.00
    }
  ]
}

Response Example (symbol/BTC)

{
  "symbol": "BTC",
  "snapshots": [
    {
      "snapshot_time": 1738763400000,
      "user": "0xabc123...",
      "symbol": "BTC",
      "side": "long",
      "position_value": 333500,
      "entry_price": 69469.50,
      "liquidation_price": 66859.73,
      "current_price": 68500.00,
      "distance_pct": 2.43,
      "leverage": 20.0
    }
  ],
  "count": 50
}

Response Fields (Snapshot Records)

FieldDescription
snapshot_timeUnix timestamp in milliseconds
userWallet address
symbolBTC, ETH, SOL, XRP, or HYPE
side"long" or "short"
position_valueUSD value of position
distance_pct% distance to liquidation
leveragePosition leverage
entry_priceEntry price
liquidation_priceLiquidation price
current_priceCurrent market price at snapshot time

Curl Examples

# Get stats for last hour
curl "https://api.moondev.com/api/position_snapshots/stats?hours=1" \
  -H "X-API-Key: YOUR_API_KEY"

# Get BTC snapshots (last hour, limit 50)
curl "https://api.moondev.com/api/position_snapshots/symbol/BTC?hours=1&limit=50" \
  -H "X-API-Key: YOUR_API_KEY"

# Get ETH shorts only, within 5% of liquidation
curl "https://api.moondev.com/api/position_snapshots/symbol/ETH?hours=24&side=short&max_distance_pct=5" \
  -H "X-API-Key: YOUR_API_KEY"

Python Example

import requests

API_KEY = "your_api_key"
BASE_URL = "https://api.moondev.com"
headers = {"X-API-Key": API_KEY}

# Get aggregate stats
stats = requests.get(
    f"{BASE_URL}/api/position_snapshots/stats",
    headers=headers,
    params={"hours": 24}
).json()

print(f"Total snapshots: {stats['overall']['total_snapshots']}")
print(f"Unique users: {stats['overall']['unique_users']}")
print(f"Top at risk: {stats['top_10_closest']}")

# Get BTC positions close to liquidation
btc = requests.get(
    f"{BASE_URL}/api/position_snapshots/symbol/BTC",
    headers=headers,
    params={"hours": 24, "limit": 100}
).json()

for snap in btc['snapshots']:
    print(f"{snap['user']}: {snap['distance_pct']}% from liq")

# Filter to very risky positions only
risky = requests.get(
    f"{BASE_URL}/api/position_snapshots/symbol/ETH",
    headers=headers,
    params={"hours": 12, "max_distance_pct": 5}
).json()

Backtesting Use Cases

Since this is historical snapshot data, you can use it for:

  • Liquidation Cascade Detection — Query positions that were <2% from liquidation, cross-reference with price data to see if they got liquidated, build models predicting cascade events
  • Squeeze Setup Identification — Track when shorts cluster near liquidation prices, identify price levels where forced buying would occur, backtest "buy when shorts are trapped" strategies
  • Whale Liquidation Hunting — Monitor large positions approaching liquidation, identify recurring whale addresses and their patterns, backtest strategies targeting known liquidation levels
  • Risk Concentration Analysis — Analyze where leverage clusters by price level, identify "liquidation magnets" (price zones with heavy exposure), backtest contrarian strategies around these zones

Example Backtest Query

# Get all positions that were within 3% of liquidation yesterday
risky_positions = requests.get(
    f"{BASE_URL}/api/position_snapshots/symbol/BTC",
    headers=headers,
    params={"hours": 24, "max_distance_pct": 3, "limit": 5000}
).json()

# Group by snapshot_time to see how risk evolved
# Cross-reference with price data to see which got liquidated
for snap in risky_positions['snapshots']:
    print(f"{snap['snapshot_time']}: {snap['user']} - {snap['distance_pct']}% from liq")

Want to plug this into your trading system? Get your API key here.

Smart Money

EndpointDescription
GET /api/smart_money/rankings.jsonTop 100 smart + Bottom 100 dumb money by PnL
GET /api/smart_money/leaderboard.jsonTop 50 performers with detailed metrics
GET /api/smart_money/signals_10m.jsonTrading signals - last 10 minutes
GET /api/smart_money/signals_1h.jsonTrading signals - last 1 hour
GET /api/smart_money/signals_24h.jsonTrading signals - last 24 hours

Response Example (rankings.json)

{
  "updated_at": "2026-01-06T19:17:19Z",
  "total_tracked_addresses": 3488,
  "smart_money": {
    "description": "Top 100 most profitable addresses",
    "count": 100,
    "addresses": [
      {
        "address": "0x...",
        "total_pnl": 5000000.00,
        "win_rate": 0.72,
        "total_trades": 500
      }
    ]
  },
  "dumb_money": {
    "description": "Bottom 100 least profitable addresses",
    "count": 100,
    "addresses": []
  }
}

Response Example (signals_1h.json)

{
  "updated_at": "2026-01-06T19:17:19Z",
  "duration": "1h",
  "signals": [
    {
      "timestamp": "2026-01-06T19:15:00Z",
      "address": "0x...",
      "address_type": "smart_money",
      "action": "open_long",
      "coin": "BTC",
      "size": 2.5,
      "price": 92000.0,
      "leverage": 10
    }
  ]
}

Trades & Order Flow

EndpointDescription
GET /api/trades.jsonRecent trades (last 1000)
GET /api/large_trades.jsonLarge trades only (>$100k)
GET /api/orderflow.jsonCurrent order flow metrics
GET /api/orderflow/stats.jsonOrder flow statistics
GET /api/imbalance/5m.jsonBuy/sell imbalance - 5 minutes
GET /api/imbalance/15m.jsonBuy/sell imbalance - 15 minutes
GET /api/imbalance/1h.jsonBuy/sell imbalance - 1 hour
GET /api/imbalance/4h.jsonBuy/sell imbalance - 4 hours
GET /api/imbalance/24h.jsonBuy/sell imbalance - 24 hours

Orderflow Expansion: Now tracking 130 symbols across all Hyperliquid coins!

Every coin on Hyperliquid is now tracked for buy/sell imbalance, enabling pairs trading discovery and cross-market analysis.

Data Retention Policy

  • Raw trade data: Retained for 90 days, then auto-deleted. Export if you need it longer!
  • Hourly aggregates: Kept permanently (forever) for historical backtesting. Per-symbol buy/sell pressure every hour.

Response Example (trades.json)

{
  "updated_at": "2026-01-06T19:17:00Z",
  "trade_count": 1000,
  "trades": [
    {
      "timestamp": 1767727000000,
      "coin": "BTC",
      "side": "buy",
      "size": 0.5,
      "price": 92000.0,
      "value_usd": 46000.0,
      "is_large": false
    }
  ]
}

Response Example (orderflow.json)

{
  "updated_at": "2026-01-06T19:17:00Z",
  "window": "5m",
  "metrics": {
    "BTC": {
      "buy_volume": 5000000.0,
      "sell_volume": 4500000.0,
      "net_flow": 500000.0,
      "buy_count": 150,
      "sell_count": 140,
      "imbalance_ratio": 1.11
    }
  }
}

Response Example (imbalance/1h.json)

Now returns data for all 130 tracked symbols:

{
  "time_window": "1h",
  "overall": {
    "buy_volume_usd": 923134333.04,
    "sell_volume_usd": 1146007719.76,
    "imbalance_ratio": -0.1077,
    "dominant_side": "SELL"
  },
  "by_coin": {
    "BTC": {
      "buy_volume_usd": 616856512.28,
      "sell_volume_usd": 814592126.43,
      "net_imbalance_usd": -197735614.15,
      "imbalance_ratio": -0.1381,
      "buy_count": 15420,
      "sell_count": 18350,
      "dominant_side": "SELL"
    },
    "ETH": { "..." : "..." },
    "SOL": { "..." : "..." },
    "ADA": { "..." : "..." },
    "EIGEN": { "..." : "..." },
    "...": "130 symbols total"
  }
}

Each symbol includes:

  • buy_volume_usd / sell_volume_usd - Volume in USD
  • net_imbalance_usd - Net buy/sell imbalance
  • imbalance_ratio - Ratio (-1.0 to 1.0, negative = sell pressure)
  • buy_count / sell_count - Number of trades
  • dominant_side - Either BUY or SELL

Pairs Trading Example

With 130 symbols, you can compare imbalance across any two coins for pairs trading signals:

import requests

API_KEY = "your_api_key"

r = requests.get(
    "https://api.moondev.com/api/imbalance/1h.json",
    headers={"X-API-Key": API_KEY}
).json()

# Compare any two coins for pairs trading
ada = r["by_coin"]["ADA"]["imbalance_ratio"]
eigen = r["by_coin"]["EIGEN"]["imbalance_ratio"]
spread = ada - eigen  # Your entry signal!

print(f"ADA imbalance: {ada:.4f}")
print(f"EIGEN imbalance: {eigen:.4f}")
print(f"Spread: {spread:.4f}")

Exporting Raw Data (Before 90-Day Expiry)

Raw trade data is auto-deleted after 90 days. Pull and store locally if you need it longer:

import requests, json

API_KEY = "your_api_key"

# Pull all recent trades and save locally
trades = requests.get(
    "https://api.moondev.com/api/trades.json",
    headers={"X-API-Key": API_KEY}
).json()

with open("trades_backup.json", "w") as f:
    json.dump(trades, f)

print(f"Saved {trades['trade_count']} trades")

User Data (Local Node)

Get positions and trade history for any Hyperliquid wallet. Powered by Moon Dev's local node for fast responses.

EndpointDescription
GET /api/user/{address}/positionsCurrent positions for any wallet
GET /api/user/{address}/fills?limit=NHistorical fills (default: 100, max: 2000, -1 for ALL)

Response Example (positions)

{
  "address": "0xABC123...",
  "positions": [
    {
      "symbol": "BTC",
      "side": "long",
      "size": 0.5,
      "size_usd": 21250,
      "entry_price": 42500,
      "mark_price": 42800,
      "unrealized_pnl": 150,
      "leverage": 10
    }
  ],
  "total_value": 45000,
  "margin_used": 4500
}

Response Example (fills)

{
  "address": "0xABC123...",
  "fills": [
    {
      "symbol": "ETH",
      "side": "buy",
      "size": 2.5,
      "price": 2245.00,
      "fee": 1.12,
      "realized_pnl": 0,
      "timestamp": "2026-01-08T10:30:00Z",
      "order_type": "limit"
    }
  ],
  "total_count": 1543
}

Python Example

import requests

API_KEY = "your_api_key"
WALLET = "0x1234567890abcdef..."

# Get positions
positions = requests.get(
    f"https://api.moondev.com/api/user/{WALLET}/positions",
    headers={"X-API-Key": API_KEY}
).json()

print(f"Total Value: ${positions['total_value']:,.2f}")
for pos in positions["positions"]:
    print(f"  {pos['symbol']} {pos['side']}: ${pos['size_usd']:,.0f}")

# Get ALL fills
fills = requests.get(
    f"https://api.moondev.com/api/user/{WALLET}/fills?limit=-1",
    headers={"X-API-Key": API_KEY}
).json()

print(f"Total trades: {fills['total_count']}")

HLP (Hyperliquidity Provider)

Complete reverse engineering of Hyperliquid's native market-making protocol (~$210M+ AUM, 7 strategies, 5,000+ trades tracked).

EndpointDescription
GET /api/hlp/positionsAll 7 HLP strategy positions + combined net exposure
GET /api/hlp/positions?include_strategies=falseSummary only (faster response)
GET /api/hlp/trades?limit=NHistorical HLP trade fills (5,000+ collected)
GET /api/hlp/trades/statsTrade volume and fee statistics
GET /api/hlp/positions/history?hours=NPosition snapshots over time
GET /api/hlp/liquidatorsLiquidator activation events
GET /api/hlp/deltas?hours=NNet exposure changes over time

Response Example (positions)

{
  "total_value_usd": 210000000,
  "net_exposure": {
    "BTC": {"long": 125000000, "short": 98000000, "net": 27000000},
    "ETH": {"long": 85000000, "short": 92000000, "net": -7000000}
  },
  "strategies": [
    {
      "name": "Strategy A",
      "vault_address": "0x...",
      "value_usd": 45000000,
      "positions": [
        {"symbol": "BTC", "side": "long", "size_usd": 12000000}
      ]
    }
  ]
}

Response Example (trades)

{
  "trades": [
    {
      "strategy": "Strategy A",
      "symbol": "BTC",
      "side": "buy",
      "size": 0.25,
      "price": 42500,
      "fee": 0.85,
      "timestamp": "2026-01-08T11:00:00Z"
    }
  ],
  "total_count": 5432
}

Response Example (trades/stats)

{
  "total_volume_usd": 850000000,
  "total_fees_paid": 425000,
  "volume_by_coin": {
    "BTC": 450000000,
    "ETH": 280000000,
    "SOL": 120000000
  },
  "volume_by_strategy": {
    "Strategy A": 320000000,
    "Strategy B": 280000000
  }
}

Response Example (deltas)

{
  "deltas": [
    {
      "timestamp": "2026-01-08T10:00:00Z",
      "BTC": {"delta": 500000, "direction": "more_long"},
      "ETH": {"delta": -200000, "direction": "more_short"}
    }
  ]
}

Python Example

import requests

API_KEY = "your_api_key"
BASE_URL = "https://api.moondev.com"

# Get HLP positions (full details)
hlp = requests.get(
    f"{BASE_URL}/api/hlp/positions",
    headers={"X-API-Key": API_KEY}
).json()

print(f"Total HLP Value: ${hlp['total_value_usd']:,.0f}")
print(f"Strategies: {len(hlp['strategies'])}")

# Net exposure per coin
for coin, exp in hlp["net_exposure"].items():
    direction = "LONG" if exp["net"] > 0 else "SHORT"
    print(f"  {coin}: ${abs(exp['net']):,.0f} {direction}")

# Get trade stats
stats = requests.get(
    f"{BASE_URL}/api/hlp/trades/stats",
    headers={"X-API-Key": API_KEY}
).json()

print(f"Total Volume: ${stats['total_volume_usd']:,.0f}")

HLP data collection started Nov 3, 2025. Historical analysis covers this full period.

This data is nowhere else. Get your API key and start using it.

HLP Sentiment & Analytics

Advanced analytics endpoints for HLP sentiment analysis, liquidator monitoring, market maker tracking, and timing analysis. These endpoints provide institutional-grade signals based on HLP positioning data.

Available Endpoints

EndpointDescription
GET /api/hlp/sentimentNet delta with z-scores and trading signals - THE sentiment indicator
GET /api/hlp/liquidators/statusReal-time liquidator status (active/idle) with PnL
GET /api/hlp/market-makerStrategy B tracker for BTC/ETH/SOL positions
GET /api/hlp/timingHourly and session profitability analysis
GET /api/hlp/correlationDelta-price correlation analysis by coin

Sentiment Analysis (The Big One)

The /api/hlp/sentiment endpoint analyzes HLP net delta positions and generates z-score based trading signals. This is the primary sentiment indicator for understanding institutional positioning.

curl "https://api.moondev.com/api/hlp/sentiment?api_key=YOUR_KEY"

Response Example

{
  "timestamp": "2025-01-12T15:30:00Z",
  "net_delta": {
    "BTC": { "value": -2450000, "z_score": 2.2, "signal": "Retail heavily SHORT - potential short squeeze" },
    "ETH": { "value": 1200000, "z_score": -0.8, "signal": "Neutral positioning" },
    "SOL": { "value": -580000, "z_score": 1.5, "signal": "Moderate retail SHORT bias" }
  },
  "overall_signal": "Market sentiment: Retail skewed SHORT on majors",
  "confidence": "high"
}

Liquidator Status

Monitor liquidator wallet activity in real-time. Track which liquidators are active/idle and their recent PnL.

curl "https://api.moondev.com/api/hlp/liquidators/status?api_key=YOUR_KEY"

Market Maker (Strategy B)

Track Strategy B market maker positions across BTC, ETH, and SOL. Useful for understanding MM inventory and potential mean reversion.

curl "https://api.moondev.com/api/hlp/market-maker?api_key=YOUR_KEY"

Timing Analysis

Analyze HLP profitability by hour of day and trading session. Identify optimal trading windows based on historical HLP performance.

curl "https://api.moondev.com/api/hlp/timing?api_key=YOUR_KEY"

Correlation Analysis

Analyze correlation between HLP delta changes and price movements by coin. Higher correlation suggests stronger predictive signal.

curl "https://api.moondev.com/api/hlp/correlation?api_key=YOUR_KEY"

Python Example

import requests

API_KEY = "your_api_key"
BASE_URL = "https://api.moondev.com"

# Get HLP sentiment signals
sentiment = requests.get(
    f"{BASE_URL}/api/hlp/sentiment",
    params={"api_key": API_KEY}
).json()

print(f"Overall: {sentiment['overall_signal']}")
print(f"Confidence: {sentiment['confidence']}")

for coin, data in sentiment["net_delta"].items():
    print(f"  {coin}: z={data['z_score']:.1f} - {data['signal']}")

# Check liquidator activity
liquidators = requests.get(
    f"{BASE_URL}/api/hlp/liquidators/status",
    params={"api_key": API_KEY}
).json()

for liq in liquidators.get("liquidators", []):
    status = "ACTIVE" if liq["active"] else "IDLE"
    print(f"  {liq['address'][:10]}...: {status} (PnL: ${liq['pnl']:,.0f})")

Polymarket Profitable Traders

NEWAutomatically discovers profitable traders on Polymarket by scanning BTC 5-minute prediction markets and trending market big trades ($500+). Returns traders with $300+ 7-day P&L, sorted by profitability. Data refreshes continuously — scanners run every 5 minutes, P&L is recalculated every 6 hours.

Endpoints

MethodEndpointAuthDescription
GET/api/poly/profitable-tradersYesProfitable Polymarket traders sorted by 7-day P&L
GET/api/poly/healthNoPolymarket service health check

Access Tiers

Key TypeResult
Quant Elite (_qe keys)Full list of all profitable traders
Standard keyTop 25 traders only
Invalid / missing key401 Unauthorized

cURL

curl "https://api.moondev.com/api/poly/profitable-traders?api_key=YOUR_API_KEY"

Python (SDK)

from api import MoonDevAPI

api = MoonDevAPI()  # reads MOONDEV_API_KEY from .env
data = api.get_poly_profitable_traders()

for trader in data["traders"]:
    print(f"{trader['wallet']}: ${trader['pnl_7d']:,.2f} P&L | ${trader['volume_7d']:,.2f} volume")
    print(f"  Profile: {trader['polymarket_link']}")

Python (requests)

import requests

response = requests.get(
    "https://api.moondev.com/api/poly/profitable-traders",
    headers={"X-API-Key": "YOUR_API_KEY"}
)
data = response.json()

for trader in data["traders"]:
    print(f"{trader['wallet']}: ${trader['pnl_7d']:,.2f} P&L ({trader['trades_7d']} trades)")
    print(f"  Profile: {trader['polymarket_link']}")

JavaScript

const response = await fetch(
  "https://api.moondev.com/api/poly/profitable-traders",
  { headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await response.json();

data.traders.forEach(t => {
  const short = `${t.wallet.slice(0,6)}...${t.wallet.slice(-4)}`;
  console.log(`${short}: $${t.pnl_7d.toFixed(2)} P&L (${t.trades_7d} trades)`);
});

Response Format

{
  "total": 2894,
  "full_list": true,
  "updated_at": "2026-04-14T15:41:42.182139+00:00",
  "stats": {
    "wallets_checked": 1163,
    "queue_depth": 0,
    "uptime_minutes": 5.3
  },
  "traders": [
    {
      "wallet": "0x8c80d213c0cbad777d06ee3f58f6ca4bc03102c3",
      "polymarket_link": "https://polymarket.com/0x8c80d213c0cbad777d06ee3f58f6ca4bc03102c3",
      "pnl_7d": 1183556.88,
      "volume_7d": 1376544.64,
      "trades_7d": 470,
      "redeems_7d": 1,
      "discovered_at": "2026-04-13T22:50:05.965342+00:00",
      "source": "trending"
    }
  ]
}

Top-Level Fields

FieldTypeDescription
totalintegerNumber of traders returned in this response
full_listbooleantrue for Quant Elite keys, false for standard keys (top 25)
updated_atstringISO 8601 timestamp of when this response was generated
statsobjectService health metrics
tradersarrayProfitable traders sorted by pnl_7d descending

Stats Object

FieldTypeDescription
wallets_checkedintegerTotal wallets analyzed since service start
queue_depthintegerWallets waiting to be analyzed (0 = fully caught up)
uptime_minutesfloatService uptime in minutes

Trader Object

FieldTypeDescription
walletstringEthereum wallet address (0x...) — use this as the identifier
polymarket_linkstringDirect link to Polymarket profile (wallet-based)
pnl_7dfloat7-day profit & loss in USD. Minimum $300
volume_7dfloat7-day trading volume in USD
trades_7dintegerNumber of trades in last 7 days
redeems_7dintegerNumber of winning redemptions in last 7 days
discovered_atstringISO 8601 timestamp of when wallet was discovered
sourcestringDiscovery source: "trending" or "btc_5m"

Breaking Changes (2026-04-14)

If you integrated before 2026-04-14, update your code:

ChangeBeforeAfter
name fieldPresent (Polymarket pseudonym)Removed — was unreliable
display_name fieldPresentRemoved
polymarket_linkhttps://polymarket.com/@Usernamehttps://polymarket.com/<wallet>

Migration: Replace any usage of name or display_name with wallet. The wallet address is now the only stable identifier, and polymarket_link is wallet-based so it will never break due to username changes.

Data Freshness

MetricFrequency
Scanner discoveryEvery 5 minutes
P&L recalculationContinuous (5 worker threads)
Seen wallets resetEvery 6 hours (fresh re-evaluation)
JSON snapshot to diskEvery 60 seconds

How It Works

  1. BTC 5-Min Scanner — Every 5 min, scans the 3 most recently closed BTC up/down prediction markets and discovers all trading wallets
  2. Trending Markets Scanner — Every 5 min, fetches top 50 markets by 24h volume, filters for trades where size x price >= $500
  3. P&L Workers (5 threads) — Fetches 7-day activity per wallet, computes P&L = sells + redemptions - buys
  4. Filter — Only traders with P&L >= $300 are included
  5. Persistence — Results survive restarts via periodic JSON snapshots

Use Cases

  • Copy-trade profitable Polymarket traders (follow the wallet)
  • Identify sharp money in prediction markets
  • Track consistent winners on BTC 5-min markets
  • Monitor whale activity on trending markets
  • Build alerts when new highly-profitable wallets are discovered

Code Examples

More examples on GitHub

Every new API endpoint gets a working example added to the repo. Clone it and start building!

View Repo

Replace your_api_key with your actual key.Need an API key?

Python - Get Smart Money Signals

import requests

API_KEY = "your_api_key"
BASE_URL = "https://api.moondev.com"

# Get smart money signals from last hour
signals = requests.get(
    f"{BASE_URL}/api/smart_money/signals_1h.json",
    headers={"X-API-Key": API_KEY}
).json()

for signal in signals["signals"][:10]:
    print(f"{signal['action']} {signal['coin']} @ ${signal['price']:,.0f}")

Python - Monitor Order Flow (130 Symbols)

import requests

API_KEY = "your_api_key"

imbalance = requests.get(
    "https://api.moondev.com/api/imbalance/1h.json",
    headers={"X-API-Key": API_KEY}
).json()

# Overall market pressure
overall = imbalance["overall"]
print(f"Market: {overall['dominant_side']} pressure (ratio: {overall['imbalance_ratio']:.4f})")

# Top coins by sell pressure
for coin, data in sorted(imbalance["by_coin"].items(), key=lambda x: x[1]["imbalance_ratio"]):
    print(f"{coin}: {data['dominant_side']} ({data['imbalance_ratio']:.4f})")

JavaScript - Real-time Ticks

const API_KEY = "your_api_key";

fetch("https://api.moondev.com/api/ticks/latest.json", {
  headers: { "X-API-Key": API_KEY }
})
  .then(res => res.json())
  .then(data => {
    console.log("Current prices:", data);
  });

cURL

# Get smart money rankings
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/smart_money/rankings.json

# Get BTC ticks for last hour
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/ticks/btc_1h.json

# Get large trades
curl -H "X-API-Key: YOUR_KEY" https://api.moondev.com/api/large_trades.json

Want more? Check out the full collection of examples on GitHub.

Data Freshness

CategoryUpdate Frequency
Tick Data500ms
Events2 seconds
Trades/Order Flow5 seconds
User Data5 seconds
Binance LiquidationsReal-time (WebSocket)
Bybit LiquidationsReal-time (WebSocket)
OKX LiquidationsReal-time (WebSocket)
All Liquidations (Combined)Real-time (WebSocket)
HIP3 Liquidations (TradFi)Real-time
HIP3 Market Data (Candles/Ticks)500ms
HLP Positions30 seconds
HLP Trades30 seconds
HLP Sentiment/Analytics30 seconds
HIP3 Funding~15 seconds
Hyperliquid Liquidations30 seconds
Positions/Whales (22,500+ wallets)30 seconds
Smart Money60 seconds
Contracts5 minutes

Error Codes

HTTP CodeMeaning
200Success
401Unauthorized - Invalid or missing API key
404Endpoint not found
429Rate limit exceeded
500Server error

Getting 401 errors? Get your API key here.

Quick Reference - All Endpoints

# Market Data

/api/prices

/api/price/{coin}

/api/orderbook/{coin}

/api/account/{address}

/api/fills/{address}?limit=N

/api/candles/{coin}?interval={1m,5m,15m,1h,4h,1d}

# Core Data

/api/positions.json (combined)

/api/positions_crypto.json (crypto only)

/api/positions_hip3.json (HIP3 only)

/api/positions/all.json (combined)

/api/positions/all_crypto.json (crypto only)

/api/positions/all_hip3.json (HIP3 only)

/api/whales.json (75 symbols: native + HIP-3)

/api/buyers.json

/api/depositors.json

/api/whale_addresses.txt

# Blockchain

/api/events.json

/api/contracts.json

# Tick Data (129 symbols)

/api/ticks/{stats,latest}.json

/api/ticks/{symbol}.json

/api/ticks/{symbol}_{10m,1h,4h,24h,7d}.json

# Trades & Order Flow (130 symbols)

/api/trades.json

/api/large_trades.json

/api/orderflow.json

/api/orderflow/stats.json

/api/imbalance/{5m,15m,1h,4h,24h}.json

Raw data: 90-day retention | Hourly aggregates: permanent

# Hyperliquid Liquidations

/api/liquidations/{stats,scan_summary}.json

/api/liquidations/{10m,1h,4h,12h,24h,2d,7d,14d,30d}.json

# HIP3 Liquidations (TradFi)

/api/hip3_liquidations/stats.json

/api/hip3_liquidations/{10m,1h,24h,7d}.json

# HIP3 Market Data (136 symbols / 7 dexes — auto-discovered)

/api/hip3/meta (all symbols + per-dex counts)

/api/hip3/candles/symbols

/api/hip3/prices

/api/hip3/price/{coin}

/api/hip3/candles/{coin}?interval={1m,5m,15m,1h,4h,1d}

/api/hip3/ticks/{coin}?duration={10m,1h,4h,24h,7d}

# HIP3 Funding

/api/hlp/funding (crypto perps)

/api/hlp/funding/hip3 (HIP3 tokenized assets)

# Multi-Exchange Liquidations

/api/all_liquidations/stats.json

/api/all_liquidations/{10m,1h,4h,12h,24h,2d,5d}.json (30s updates)

/api/all_liquidations/{7d,14d,30d}.json (15min updates)

/api/binance_liquidations/stats.json

/api/binance_liquidations/{10m,1h,24h,7d,30d}.json

/api/bybit_liquidations/stats.json

/api/bybit_liquidations/{10m,1h,24h,7d,30d}.json

/api/okx_liquidations/stats.json

/api/okx_liquidations/{10m,1h,24h,7d,30d}.json

# Bulk Binance Liquidations (Quant Elite)

/api/bulk/binance_liquidations?api_key=KEY&symbol=&start=&end=&side=&min_usd=&limit=&offset=

32M+ records, June 2024+, requires _qe API key

# Position Snapshots (Liquidation Risk)

/api/position_snapshots/symbol/{BTC,ETH,SOL,XRP,HYPE}?hours=24

/api/position_snapshots/stats?hours=24

Tracks positions within 15% of liquidation, min $10k value, 1-min snapshots

# Smart Money

/api/smart_money/{rankings,leaderboard}.json

/api/smart_money/signals_{10m,1h,24h}.json

# User Data (Local Node)

/api/user/{address}/positions

/api/user/{address}/fills?limit=N

# HLP (Hyperliquidity Provider)

/api/hlp/positions

/api/hlp/positions?include_strategies=false

/api/hlp/trades?limit=N

/api/hlp/trades/stats

/api/hlp/positions/history?hours=N

/api/hlp/liquidators

/api/hlp/deltas?hours=N

# HLP Sentiment & Analytics

/api/hlp/sentiment

/api/hlp/liquidators/status

/api/hlp/market-maker

/api/hlp/timing

/api/hlp/correlation

# Polymarket (NEW)

/api/poly/profitable-traders (profitable traders sorted by 7d P&L)

/api/poly/health (no auth required)

Need an API key or integration support? Get your API key here

GitHub Examples & Code