Skip to content

Get Onchain Health Score

GET/v1/cryptodata/on-chain/score

Composite 0-100 on-chain health score with per-component breakdown. Synthesizes Hash Ribbon, MVRV, stablecoin dry-powder, whale accumulation, exchange flow direction, and miner net flow into a single directional read. Sentiment bands: - **bullish** (≥70): broad on-chain confluence of accumulation signals - **leaning_bullish** (55-69): tilted positive but mixed - **neutral** (45-54) - **leaning_bearish** (30-44) - **bearish** (<30): broad distribution + miner stress + flow into CEXs Kept separate from `/market-health` for v1. Components with no data yet are EXCLUDED and the remaining weights renormalised, so a partially-warm deploy reports the confluence it can actually see instead of being diluted toward a confident-looking 50. When no component has data, `sentiment` is `unknown`. `whale_accumulation` is currently always unavailable (whale tracking is disabled, see `/on-chain/whales`): it reports `reason: "no_data"`, its `score` of 50 is a placeholder and it carries weight 0, so it does not move the composite. `exchange_flow` scores the USDT/USDC/DAI 24h net only; before 2026-10-08 it also summed other tokens in their native units, so its `reason` magnitudes from then are not dollars.

Price

$0.01/ call

Edge cache

300s

Uptime 24h

100.00%

p95

724ms

MCP tool

cryptodata_on-chain-score

Parameters

No parameters.

Code

curl
# 1. No key, no payment: the gateway answers 402 with the price
curl -i "https://api.realtimeapi.ai/v1/cryptodata/on-chain/score"

# 2. Pay: retry with a signed x402 payment (any x402 client builds this header)
curl "https://api.realtimeapi.ai/v1/cryptodata/on-chain/score" -H "PAYMENT-SIGNATURE: $X402_PAYMENT"
TypeScript · @x402/fetch
// 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/on-chain/score")).json();
console.log(data);
Python · x402
# 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/on-chain/score").json())
With an API key
curl "https://api.realtimeapi.ai/v1/cryptodata/on-chain/score" -H "X-API-Key: $RTAPI_KEY"

Frequently asked questions

How do I get get onchain health score from CryptoDataAPI?

Send GET https://api.realtimeapi.ai/v1/cryptodata/on-chain/score. Pay $0.01 per request with x402, or send an X-API-Key header.

What does GET /on-chain/score 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.

Get a free key

1,000 calls a month across every feed. Who is setting it up?

No key needed at all: agents can pay per call in USDC with x402.