Volume Moves Before Price — So Should Your Screener

Every serious trader knows the cliché: volume leads price. A coin that suddenly trades at several times its normal daily turnover is telling you something — accumulation, a liquidation cascade starting to build, news spreading faster than the chart shows it — well before the candle confirms it. The problem is turning that cliché into something a bot can actually screen for.

A crypto volume spike scanner API does that job: it doesn't just report today's 24h volume (every exchange already gives you that), it tells you whether that number is unusual for that specific coin. GET /api/v1/volume/scanner does this across the entire Hyperliquid perpetuals universe in one call, ranking every listed perp by how far its live volume sits above or below its own trailing normal.

This post covers exactly how that ranking — the multiplier field — is calculated, why the math deliberately excludes today's own partial day, what the six activity bands mean, and how to wire the endpoint into a same-day breakout screen.

How Does the Volume Spike Scanner Calculate Its Multiplier?

The core field is multiplier: live rolling-24h notional volume ÷ mean daily notional volume over the last 30 settled days. A reading of 3.0 means a coin is trading at three times its normal daily volume right now. A reading of 0.4 means it's gone unusually quiet.

One detail is easy to get wrong and the scanner deliberately avoids it: today's own partial UTC day is excluded from the 30-day baseline. If you instead averaged "the last 30 days including today" and compared today against that average, a live spike would partially count itself, quietly inflating its own multiplier the bigger it got. Excluding it keeps the baseline honest — it's always 30 fully settled days, and the live number is judged purely against history that already happened.

The live side of the ratio, volume_24h, comes from Hyperliquid's own rolling 24h notional (dayNtlVlm) off a snapshot the scanner already has cached — no extra requests fired per screen. Each row also carries volume_change_24h, a separate and simpler comparison: the live 24h notional against just the most recent settled day, both roughly 24h windows. Don't confuse it with change_24h, which is the coin's price move, not volume — the two often diverge, and a volume spike with flat price is exactly the kind of setup this scanner exists to surface before the chart does.

The same calculation backs the /volume-scanner web page and the volume fields on /api/v1/hyperliquid/summary, so the multiplier you get from the API is never a different number than what the page shows for the same coin at the same moment.

multiplier vs multiplier_median: Which Baseline Should You Trust?

Every row actually carries two ratios, because a single mean can lie:

The practical rule: when a coin's recent history is lumpy — one huge listing-day pump, one liquidation event — trust multiplier_median over multiplier. When the two agree closely, the baseline is stable and either reading is fine. Divergence between them is itself a signal worth checking before acting on the headline number alone.

The Activity Bands: From Dormant to Extreme

Every row is also classified into a band, computed off the mean-based multiplier so you can filter without picking your own thresholds:

BandMultiplier rangeReads as
dormantbelow 0.5xWell under half its normal volume — gone quiet
quiet0.5x – 0.8xSofter than usual, not alarming
normal0.8x – 1.5xTrading in its ordinary range
elevated1.5x – 3.0xNoticeably above normal, early attention
surging3.0x – 6.0xA genuine spike, worth investigating now
extreme6.0x and aboveOutlier activity — news, cascade, or listing event
unknownn/aNo 30-day baseline yet (see below)

Pass ?band=dormant to find coins that have gone quiet, or ?band=surging to skip straight to today's real movers without picking a multiplier cutoff yourself.

Why Do Some Coins Show multiplier: null?

A perp listed less than 7 days ago has no honest 30-day baseline to compare against — extrapolating one from 2 or 3 days of data would produce a number that looks precise but means nothing. Rather than fabricate a multiplier, the scanner reports multiplier: null and band: "unknown" for these rows.

Practically: a brand-new HL listing will always show up as unknown for its first week, no matter how much volume it's actually doing. Don't read that as "no activity" — check volume_24h directly for freshly listed coins, since the relative-volume math simply hasn't had enough history to switch on yet. The days_of_history field on every row tells you exactly how close a coin is to getting a real baseline.

Worked Example: Screening for Today's Breakouts

The most common screen is "show me what's unusually active right now, ranked by how unusual":

curl "https://cryptodataapi.com/api/v1/volume/scanner?min_multiplier=3&sort=multiplier&limit=5" \
  -H "X-API-Key: cdk_live_your_key"

A representative response:

{
  "as_of": "2026-08-26T14:02:11Z",
  "items": [
    {
      "symbol": "WIF",
      "price": 1.842,
      "change_24h": 18.6,
      "volume_change_24h": 210.4,
      "volume_24h": 384500000.0,
      "avg_volume_30d": 61200000.0,
      "median_volume_30d": 54800000.0,
      "multiplier": 6.28,
      "multiplier_median": 7.02,
      "open_interest_usd": 92100000.0,
      "funding_rate": 0.00041,
      "days_of_history": 30,
      "band": "extreme"
    },
    {
      "symbol": "kPEPE",
      "price": 0.0000182,
      "change_24h": 9.1,
      "volume_24h": 210300000.0,
      "avg_volume_30d": 58900000.0,
      "multiplier": 3.57,
      "multiplier_median": 3.44,
      "days_of_history": 30,
      "band": "surging"
    }
  ],
  "count": 2,
  "universe_size": 187,
  "rated_size": 171,
  "total_volume_24h": 9840000000.0,
  "market_multiplier": 1.34,
  "surging_count": 14,
  "window_days": 30
}

Two summary fields worth screening on beyond the row list: market_multiplier is the whole market's aggregate ratio, so you can tell whether today's spikes are one or two coins or a market-wide volume day. surging_count is a plain headline number — how many rated perps are currently trading at 2x or more of normal — cheap to poll for a dashboard tile without pulling the full item list.

Confirm a Spike Isn't a Fluke: Pairing with /volume/scanner/{symbol}

A single multiplier reading answers "is this unusual right now" but not "is this a one-off wick or a building trend." For that, pull the per-coin detail endpoint (Pro tier):

curl "https://cryptodataapi.com/api/v1/volume/scanner/WIF" \
  -H "X-API-Key: cdk_live_your_pro_key"

It returns the same multiplier fields plus a full history array — the 30-day daily notional series behind the baseline. Three flat days followed by one huge spike reads very differently from ten days of steadily climbing volume that only just crossed the elevated threshold — the first is a single event, the second is a trend already underway. spark_7d on the scanner list itself gives a cheap 7-day preview of the same shape without the extra call.

Hyperliquid's thousand-unit tickers — kBONK, kPEPE, kSHIB — work directly as symbol aliases, so you don't need to translate them before calling the endpoint.

When to Use This (and Its Limits)

Tiers: raw 24h volume is already public via /api/v1/hyperliquid/open-interest, so the gate here sits specifically on the derived cross-sectional indicator. Free keys get the top 20 perps by volume, multipliers included. Pro and Pro Plus get the full universe plus ?band / ?min_multiplier filtering across it, and only Pro unlocks the per-symbol /scanner/{symbol} history endpoint.

Use it for: a same-day breakout watchlist, flagging coins going quiet before a range break, and cross-checking a price move against whether the volume behind it is actually unusual or just noise.

Don't use it for: sub-daily timing — the baseline is built on daily notional, so it tells you a coin is unusually active today, not the minute a spike started. Pair it with tick-level order flow if you need that precision. And always check band before trusting a raw multiplier on anything with days_of_history under 30 — a coin still building its baseline can show a temporarily noisy ratio even once it clears the 7-day minimum.