GET /screener
GET /screener
Section titled “GET /screener”Scans every covered Hyperliquid perpetual on its 1h candles and returns one compact row per market, sorted by
signal_strength: how extreme the readings are, not which way they point. Use it to find the markets worth
a closer look, then call /pulse on them.
The full scan is cached for 60 seconds; each request takes its own top_n rows from it.
Request
Section titled “Request”GET https://api.cerebruspulse.xyz/screenerQuery Parameters
Section titled “Query Parameters”| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
top_n | integer | 50 | 1–50 | How many rows to return. Outside the range the request is refused with 400 before any price is quoted. |
Response
Section titled “Response”| Field | Type | Description |
|---|---|---|
endpoint | string | screener |
coins_scanned | number | Markets the scan computed |
top_n | number | Rows returned |
results[].coin | string | The symbol |
results[].market_symbol | string | Hyperliquid’s name for the market (kPEPE for PEPE) |
results[].price_unit | string | What price is quoted per: 1 BTC, or 1000 PEPE |
results[].price | number | Hyperliquid mid price in USD per price_unit. Absent when the feed has no mid |
results[].signal_strength | number | 0 to 3.5, higher = more extreme: abs(RSI − 50) / 50 + min(abs(z) / 2, 1) + min(ATR% / 5, 1) + 0.5 when the trend has a direction. It measures intensity, not direction |
results[].rsi_14 | number | null | 1h RSI (14) |
results[].rsi_zone | string | overbought, bullish, neutral, bearish, oversold or unknown, as in /pulse |
results[].trend | string | The 1h trend label: bullish, weak_bullish, neutral, weak_bearish, bearish or insufficient_data |
results[].zscore | number | null | 1h z-score of the close against the last 100 closes |
results[].atr_pct | number | null | 1h ATR as a percentage of the close |
results[].vol_regime | string | From atr_pct: LOW (< 1), NORMAL (< 3), HIGH (< 6), EXTREME, or UNKNOWN |
results[].funding_rate | number | null | Current Hyperliquid funding rate, per hour |
results[].funding_bias | string | long_pays above the 0.0000125/h baseline, short_pays below −0.0000125/h, else neutral |
results[].confluence_bias | string | The 1h confluence bias: bullish, bearish, neutral or unknown |
results[].confluence_score | number | The 1h confluence vote share, 0–1 (see /pulse) |
results[].oi_trend | string | From the 4h open-interest change: RISING (> +3%), FALLING (< −3%), FLAT, or UNKNOWN without history |
results[].cex_dex_spread_bps | number | null | Coinbase vs DEX/Chainlink divergence in basis points, where the CEX-DEX feed covers the token; else null |
results[].cex_dex_direction | string | null | cex_premium or dex_premium, or null |
meta | object | Common metadata (Response Schemas) |
meta.offering | string | pulse_screener |
meta.cex_dex_data_age_seconds | number | Age of the CEX-DEX snapshot the divergence columns come from |
meta.cex_dex_tokens_available | number | Tokens that snapshot covers |
meta.cached | boolean | Optional. true when the rows come from the 60-second cache |
meta.cache_age_seconds | number | Optional. With cached: how old the cached scan is |
meta.as_of holds market_data, candles_1h and candles_4h (the oldest of the markets’ newest closed
candles), oi_history and cex_dex.
Example
Section titled “Example”GET /screener?top_n=3: real engine output on market data captured at 2026-09-24 17:05 UTC. Lists are cut to 3 items. Live responses may also carry meta.disclaimer, which the gateway adds.
{ "endpoint": "screener", "coins_scanned": 3, "top_n": 3, "results": [ { "coin": "ETH", "market_symbol": "ETH", "price_unit": "1 ETH", "signal_strength": 0.952, "rsi_14": 48.53, "rsi_zone": "neutral", "trend": "weak_bullish", "zscore": -0.597, "atr_pct": 0.6224, "vol_regime": "LOW", "funding_rate": 0.0000125, "funding_bias": "neutral", "confluence_bias": "bullish", "confluence_score": 0.62, "oi_trend": "FLAT", "cex_dex_spread_bps": 4, "cex_dex_direction": "cex_premium", "price": 2688.45 }, { "coin": "DOGE", "market_symbol": "DOGE", "price_unit": "1 DOGE", "signal_strength": 0.795, "rsi_14": 54.21, "rsi_zone": "neutral", "trend": "weak_bullish", "zscore": 0.012, "atr_pct": 1.0226, "vol_regime": "NORMAL", "funding_rate": 0.0000125, "funding_bias": "neutral", "confluence_bias": "neutral", "confluence_score": 0.5, "oi_trend": "FLAT", "cex_dex_spread_bps": -1.4, "cex_dex_direction": "dex_premium", "price": 0.096249 }, { "coin": "BTC", "market_symbol": "BTC", "price_unit": "1 BTC", "signal_strength": 0.721, "rsi_14": 49.16, "rsi_zone": "neutral", "trend": "weak_bullish", "zscore": -0.173, "atr_pct": 0.5881, "vol_regime": "LOW", "funding_rate": 0.0000125, "funding_bias": "neutral", "confluence_bias": "bullish", "confluence_score": 0.62, "oi_trend": "RISING", "cex_dex_spread_bps": 4.3, "cex_dex_direction": "cex_premium", "price": 84512.5 } ], "meta": { "provider": "Cerebrus Pulse", "offering": "pulse_screener", "execution_ms": 0, "data_age_seconds": 60, "as_of": { "market_data": "2026-09-24T17:04:00Z", "candles_1h": "2026-09-24T17:00:00Z", "candles_4h": "2026-09-24T16:00:00Z", "oi_history": "2026-09-24T16:45:00Z", "cex_dex": "2026-09-24T16:59:05Z" }, "sources": [ { "name": "Hyperliquid", "url": "https://hyperliquid.xyz" }, { "name": "Coinbase Exchange", "url": "https://www.coinbase.com" }, { "name": "Chainlink Data Feeds (Arbitrum One)", "url": "https://data.chain.link" } ], "cex_dex_data_age_seconds": 355.4, "cex_dex_tokens_available": 15 }}This capture held 1h candles for three markets only, so coins_scanned is 3; a live scan covers every
market in /coins.
Errors
Section titled “Errors”| Status | Reason |
|---|---|
| 400 | top_n outside 1–50 (before any price is quoted) |
| 402 | Payment required (the standard x402 flow) |
| 429 | Rate limit exceeded |
| 503 | Service disabled, payments down, or an upstream feed is missing or stale; no price is quoted |
| 504 | Engine timeout (not charged) |
Next Steps
Section titled “Next Steps”- GET /pulse/{coin} — Every timeframe and field for one market
- Response Schemas — Units, enums and the common
metafields