GET
/api/v1/on-chain/whale-transfersStartup tier+ · 80 req/minRecent large on-chain transfers plus an hourly volume histogram.
Populates the /on-chain/whales dashboard. Returns the newest `limit` transfers at or above `min_usd` plus an hourly rollup of USD volume for the trailing window. Rows include `fromLabel` / `toLabel` when the sender or recipient is a known exchange wallet. Empty feed returns `meta.unavailable = "no-data"` — not a 500.
Query parameters
All query parameters are optional unless marked required.
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
| limit | number | optional | 100 | Rows to return. Max 500. |
| min_usd | number | optional | 10000000 | Minimum USD value per transfer. Use `1000000` for $1M, `50000000` for $50M. |
| hours | number | optional | 48 | Volume-histogram lookback in hours. Max 720 (30 days). |
Response shape
Always wrapped in the standard envelope. Nullable fields are explicitly marked — treat missing numeric data as a real data-source gap, not as an error.
data payloadtypescript
// Wrapped in the standard envelope:
// {
// data: /* shape below */,
// meta?: { total?: number; limit?: number; offset?: number; ... }
// }
{
transfers: Array<{
ts: number;
chain: string;
symbol: string;
txHash: string;
fromAddr: string;
toAddr: string;
fromLabel: string | null;
toLabel: string | null;
amountBase: number | null;
amountUsd: number | null;
source: string;
}>;
volume: Array<{ ts: number; volumeUsd: number }>;
}Example
Copy the curl, replace YOUR_KEY with a real key from your dashboard, and run.
Requestbash
curl -sS "http://localhost:3000/api/v1/on-chain/whale-transfers?min_usd=10000000&limit=5" \
-H "Authorization: Bearer cg_live_YOUR_KEY"Responsejson
{
"data": {
"transfers": [
{
"ts": 1744835000000,
"chain": "ETH",
"symbol": "USDT",
"txHash": "0xabc...",
"fromAddr": "0x28c6...d60",
"toAddr": "0x71660...d3",
"fromLabel": "Binance 14 (hot)",
"toLabel": "Coinbase 1",
"amountBase": 25000000,
"amountUsd": 25000000,
"source": "whale_alert"
}
],
"volume": [
{ "ts": 1744833600000, "volumeUsd": 42000000 },
{ "ts": 1744837200000, "volumeUsd": 18500000 }
]
},
"meta": { "total": 1, "limit": 5, "minUsd": 10000000, "hours": 48 }
}Notes
- Feed depends on an optional whale-alert ingestion worker.
- Gaps in `volume` are genuine — we don't zero-fill empty hours.
Next
Check the error code reference, or get an API key to try the request against your own account.