Get Indicator Heatmap
GET/v1/cryptodata/indicators/heatmap
One-call scan table for a coin universe (Pro) — what otherwise takes one call per coin. Each row joins the SIGNUM_RGG daily colour (``signum``, ``days_in_color``, ``adx``), rolling hourly moves (``pct_1h``, ``pct_4h``, ``pct_24h``), 30-day notional liquidity (``notional_30`` — mean daily USD volume, the same field as ``/volatility/regime`` ``vol.notional_30``) and the daily 200-SMA position (``above_sma200``, ``dist_from_200_pct`` — from ``/indicators/technical``). Served from data the API already holds, so the whole universe is one instant call and spends no exchange rate limit. **The moves are rolling windows over COMPLETED hourly bars.** ``pct_4h`` is the change from the close four hours before the last completed hourly close to that close — it is NOT the open-to-close of a 4h bar, so it is not aligned to 00/04/08 UTC. ``as_of`` is the close time of that last completed bar. They refresh hourly (:05 UTC) with SIGNUM_RGG, so during the hour they describe the last full hour, not the forming one. ``price`` is that bar's close. A window whose bar is missing from the series is ``null``. ``pct_4h_bar`` IS the clock-aligned move: open to close of the last closed UTC 4h bar, ending at ``bar_4h_as_of``. The top-level ``moves`` object states this in every response. ``signum`` / ``days_in_color`` / ``adx`` are the completed-DAILY read, the same bar contract as ``/indicators/signum-rgg``. ``signum_4h`` / ``bars_in_color_4h`` are the same cascade over COMPLETED 4h bars on the ``/hyperliquid/candles?interval=4h`` grid (null when under 30 complete 4h bars). Pegged / stablecoin rows are excluded. Filters: ``min_notional_30`` (liquidity floor), ``color``, ``color_4h``, ``above_sma200``. Sort with ``sort`` (default ``notional_30``); ``sort=pct`` orders by the move named by ``interval``. Rows lacking the sort value go last. ``source`` defaults to ``hyperliquid_perp``. Example: ``?min_notional_30=3000000&color=green&above_sma200=true&sort=pct&interval=4h``.
Price
$0.01/ callEdge cache
300s
Uptime 24h
100.00%
p95
890ms
MCP tool
cryptodata_indicators-heatmap
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| source | query | string (hyperliquid_perp | binance_spot | all) = hyperliquid_perp | Universe. `all` adds the Binance-spot fill. |
| interval | query | string (1h | 4h) = 4h | Which move `sort=pct` orders by (`pct_1h` or `pct_4h`). Every row always carries all three moves. |
| min_notional_30 | query | number | Liquidity floor: drop rows whose 30-day mean daily USD notional is below this (rows with unknown liquidity are dropped too). |
| color | query | string (red | grey | green) | |
| color_4h | query | string (red | grey | green) | Filter on the 4h SIGNUM colour (`signum_4h`). |
| above_sma200 | query | boolean | true = above the daily 200-SMA, false = below. |
| sort | query | string (notional_30 | pct | days_in_color | adx | symbol) = notional_30 | |
| order | query | string (asc | desc) = desc | |
| limit | query | integer = 250 |
Code
# 1. No key, no payment: the gateway answers 402 with the price
curl -i "https://api.realtimeapi.ai/v1/cryptodata/indicators/heatmap"
# 2. Pay: retry with a signed x402 payment (any x402 client builds this header)
curl "https://api.realtimeapi.ai/v1/cryptodata/indicators/heatmap" -H "PAYMENT-SIGNATURE: $X402_PAYMENT"// npm i @x402/fetch @x402/core @x402/evm viem
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";
const client = x402Client.fromConfig({ schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(PRIVATE_KEY)) }] });
const pay = wrapFetchWithPayment(fetch, client);
const data = await (await pay("https://api.realtimeapi.ai/v1/cryptodata/indicators/heatmap")).json();
console.log(data);# pip install x402 eth-account requests
from eth_account import Account
from x402.clients.requests import x402_requests
session = x402_requests(Account.from_key(PRIVATE_KEY))
print(session.get("https://api.realtimeapi.ai/v1/cryptodata/indicators/heatmap").json())curl "https://api.realtimeapi.ai/v1/cryptodata/indicators/heatmap" -H "X-API-Key: $RTAPI_KEY"Frequently asked questions
How do I get get indicator heatmap from CryptoDataAPI?
Send GET https://api.realtimeapi.ai/v1/cryptodata/indicators/heatmap. Pay $0.01 per request with x402, or send an X-API-Key header.
What does GET /indicators/heatmap cost?
$0.01 per successful request in USDC on Base. Failed requests are never charged.
Can I call this endpoint from an MCP client?
Yes. Connect any MCP client to the RealtimeAPI server and use call_feed with this endpoint's URL, or get_quote to check the price first.