Robinhood Chain API for analytics dashboards
Build Robinhood Chain dashboards with the Crius API: DEX volume without wash trades, TVL, launches per launchpad, hourly patterns and token charts.
An analytics dashboard answers “how is Robinhood Chain doing”: DEX volume and trades, active traders, TVL and locked liquidity, launches and graduations per launchpad, gas costs and block times, and charts for single tokens. The Crius API serves these as aggregates computed from its own index of every block, so a dashboard needs a few calls a minute instead of an indexer and a data warehouse. Organic and wash volume are reported separately, so headline numbers aren’t inflated by same-transaction round trips.
Endpoints a dashboard uses
- GET
/statschain-wide numbers over1h,24hor7d: volume and trades per DEX, traders, TVL and locked LP, launches and graduations per launchpad, new pools and tokens, gas and block times, reorgs. - GET
/volumedaily and hourly volume rows, rolling windows from1sto180dwith change versus the previous window, and weekday × hour patterns. - GET
/launchpadseach launchpad’s launches, graduations, graduation rate, traders, volume by quote asset and fees. - GET
/token/{address}/candlesprice and volume charts for any token, from1sto1d. - GET
/token/{address}/holders/historyholder count over time for a token, with your own holder definition (min_usdormin_balance). - GET
/hooksUniswap v4 hooks ranked by pools or volume, with their risk level.
Suggested architecture
-
Poll chain-wide numbers once a minute.
/stats,/volumeand/launchpadscost 1 credit each. Refreshing all three every minute is 4,320 credits a day, about 130,000 a month: a Free plan covers it. -
Store your own time series.
/statsis a rolling window. To draw a TVL or locked-LP line over months, save each refresh withmeta.blockandmeta.block_ts. Daily volume history comes ready-made from/volume. -
Use
tzfor daily charts./volume?tz=America/New_Yorkputs day boundaries at local midnight; the default is UTC. -
Load token charts on demand. Candles cost 2 credits per call (up to 1,500 candles). Cache each token’s closed candles and fetch only the newest ones on refresh.
-
Show organic volume first. Lead with
volume_usd, and showwash_volume_usdnext to it so readers see how much activity was round trips.
The chain in one call
Robinhood Chain over 24 hours
How much did Robinhood Chain trade in the last 24 hours, and how much of it was wash trading?
curl "https://api.crius.sh/v1/robinhood/stats?window=24h"const res = await fetch("https://api.crius.sh/v1/robinhood/stats?window=24h");const { data, meta } = await res.json();import requests
r = requests.get( "https://api.crius.sh/v1/robinhood/stats?window=24h",)body = r.json()print(body["data"])Real response 200 Captured Oct 28, 2026 · 100 lines (arrays trimmed)
{ "data": { "blocks": { "active_wallets": 194641, "avg_block_time_ms": 101, "tps_1m": 44.6833, "txs": 2430221 }, "chain": "robinhood", "chain_id": 4663, "dex": { "by_dex": { "launch_curve": 114839, "pons_curve": 6920073, "uniswap_v2": 6992610, "uniswap_v3": 235116790, "uniswap_v4": 286137338 }, "traders": 148079, "trades": 1769098, "volume_usd": 535281650, "wash_volume_usd": 100833980 }, "eth_usd": 2355.49, "finalized_block": 100397649, "gas": { "avg_swap_cost_eth": 0.00000791235, "avg_swap_cost_usd": 0.0186374, "l1_base_fee_gwei": 0, "l2_gas_price_gwei": 0.021042 }, "head_block": 100406547, "l1_block": 26294099, "launchpads": [ { "graduated": 16, "launches": 1780, "launchpad": "pons", "launchpad_name": "Pons", "volume_usd": 25485280 }, { "graduated": 0, "launches": 508, "launchpad": "long", "launchpad_name": "Long.xyz", "volume_usd": 10784246 }, { "graduated": 0, "launches": 20, "launchpad": "bankr", "launchpad_name": "Bankr", "volume_usd": 595435 } ], "liquidity": { "locked_lp_usd": 44712347, "method": "2x quote side (ETH/WETH/USDG) of every pool; V3/V4 in-range", "tvl_usd": 322714989 }, "pools": { "by_dex": { "launch_curve": 1201, "pons_curve": 1780, "uniswap_v2": 1483, "uniswap_v3": 224, "uniswap_v4": 5457 }, "new": 10145 }, "reorgs": { "count": 0, "max_depth": 0 }, "safe_block": 100401329, "tokens": { "by_attribution": { "known_launchpad": 3527, "other": 4095 }, "new": 7622, "new_1h": 418 }, "window": "24h" }, "meta": { "block": 100406547, "block_age_ms": 1026, "block_ts": 1793225052000, "chain": "robinhood", "coverage": { "note": "aggregates cover blocks indexed since start_block until backfill completes", "since_block": 0 }, "finalized_block": 100397649, "lag_ms": 26, "safe_block": 100401329 }}What this tells you
dex.volume_usd: 535281650fromdex.trades: 1769098by 148,079 traders;dex.wash_volume_usd: 100833980of round trips is reported apart from it.- Per DEX (
dex.by_dex): Uniswap v4 $286,137,338, Uniswap v3 $235,116,790, Uniswap v2 $6,992,610, the Pons curve $6,920,073. liquidity.tvl_usd: 322714989, of whichlocked_lp_usd: 44712347sits in LP lockers (method: 2 × the quote side of every pool, v3/v4 in range).launchpads: Pons had 1,780 launches and 16 graduations, Long.xyz 508 launches, Bankr 20.blocks.avg_block_time_ms: 101,gas.avg_swap_cost_usd: 0.0186374andreorgs.count: 0: blocks every ~100 ms, swaps under two cents, no reorgs in the window.
Volume history and patterns
Three days of volume and the busiest hours
What were the last three days of Robinhood Chain DEX volume, and when is the chain busiest?
curl "https://api.crius.sh/v1/robinhood/volume?days=3"const res = await fetch("https://api.crius.sh/v1/robinhood/volume?days=3");const { data, meta } = await res.json();import requests
r = requests.get( "https://api.crius.sh/v1/robinhood/volume?days=3",)body = r.json()print(body["data"])Real response 200 Captured Oct 28, 2026 · 334 lines (arrays trimmed)
{ "data": { "as_of_ts": 1793225074000, "by_hour": { "lookback_days": 90, "peak_hour": 14, "quietest_hour": 4, "rows": [ { "avg_trades": 171529, "avg_volume_usd": 37907414, "days_counted": 89, "hour": 0, "share_pct": 3.69344 }, { "avg_trades": 160908, "avg_volume_usd": 37815486, "days_counted": 89, "hour": 1, "share_pct": 3.68448 }, { "avg_trades": 154787, "avg_volume_usd": 36420348, "days_counted": 89, "hour": 2, "share_pct": 3.54855 } ] }, "by_weekday": { "lookback_days": 90, "peak_day": "wednesday", "quietest_day": "saturday", "rows": [ { "avg_trades": 4116146, "avg_volume_usd": 1013038326, "day": "monday", "days_counted": 13, "share_pct": 14.4174, "total_volume_usd": 13169498233 }, { "avg_trades": 4180257, "avg_volume_usd": 1002030520, "day": "tuesday", "days_counted": 13, "share_pct": 14.2607, "total_volume_usd": 13026396763 }, { "avg_trades": 4330613, "avg_volume_usd": 1440396094, "day": "wednesday", "days_counted": 12, "share_pct": 18.9226, "total_volume_usd": 17284753124 } ] }, "chain": "robinhood", "daily": { "busiest_day": { "ts": 1792972800000, "volume_usd": 556198238 }, "days": 3, "rows": [ { "buy_volume_usd": 247729766, "sell_volume_usd": 218992798, "trades": 1389513, "ts": 1792886400000, "volume_usd": 466722564, "wash_volume_usd": 50319274 }, { "buy_volume_usd": 286515806, "sell_volume_usd": 269682432, "trades": 1621146, "ts": 1792972800000, "volume_usd": 556198238, "wash_volume_usd": 50493821 }, { "buy_volume_usd": 237548924, "sell_volume_usd": 204145666, "trades": 1521812, "ts": 1793059200000, "volume_usd": 441694590, "wash_volume_usd": 50553407 } ] }, "hourly": { "busiest_hour": { "ts": 1793210400000, "volume_usd": 60323335 }, "hours": 48, "rows": [ { "buy_volume_usd": 6716118, "sell_volume_usd": 6323281, "trades": 53655, "ts": 1793052000000, "volume_usd": 13039399, "wash_volume_usd": 105689 }, { "buy_volume_usd": 9419407, "sell_volume_usd": 7621334, "trades": 59499, "ts": 1793055600000, "volume_usd": 17040740, "wash_volume_usd": 12295.4 }, { "buy_volume_usd": 8410243, "sell_volume_usd": 7053796, "trades": 60264, "ts": 1793059200000, "volume_usd": 15464040, "wash_volume_usd": 75408.9 } ] }, "method": { "caught_up": true, "data_since_ts": 1779484440000, "live": "windows up to 1h from the live trade flow (chain time); longer windows from complete minutes plus the live flow", "outliers": "excluded: single trades valued above $25000000 (mispriced quotes), counted in outlier_trades", "table_through_ts": 1793224500000, "volume": "organic DEX volume in USD at trade time (Uniswap V2/V3/V4, launchpad curves)", "wash": "excluded: same-tx round trips — buys and sells of one token in one pool inside one tx that cancel within 2%" }, "tz": "UTC", "windows": { "180d": { "buy_volume_usd": 54358559462, "buys": 253826654, "change_pct": null, "complete": false, "outlier_trades": 762, "prev_volume_usd": null, "sell_volume_usd": 52435524640, "sells": 204573895, "tokens": 1738934, "traders": 8246046, "traders_note": "unique traders / tokens: approximate (HyperLogLog), up to the last complete minute", "trades": 458400549, "volume_usd": 106794084102, "wash_trades": 1140815, "wash_volume_usd": 43228252019 }, "1h": { "buy_volume_usd": 13832591, "buys": 73433, "change_pct": -12.0881, "complete": true, "outlier_trades": 0, "prev_volume_usd": 31025009, "sell_volume_usd": 13442088, "sells": 75039, "tokens": 1747, "traders": 20684, "trades": 148472, "volume_usd": 27274679, "wash_trades": 27, "wash_volume_usd": 2621.56 }, "1m": { "buy_volume_usd": 437276, "buys": 2297, "change_pct": -6.49047, "complete": true, "outlier_trades": 0, "prev_volume_usd": 912411, "sell_volume_usd": 415915, "sells": 2293, "tokens": 181, "traders": 1326, "trades": 4590, "volume_usd": 853191, "wash_trades": 0, "wash_volume_usd": 0 }, "1s": { "buy_volume_usd": 3078.99, "buys": 36, "change_pct": -50.5284, "complete": true, "outlier_trades": 0, "prev_volume_usd": 22701.8, "sell_volume_usd": 8151.96, "sells": 52, "tokens": 21, "traders": 49, "trades": 88, "volume_usd": 11230.9, "wash_trades": 0, "wash_volume_usd": 0 }, "24h": { "buy_volume_usd": 286730820, "buys": 902381, "change_pct": 20.2008, "complete": true, "outlier_trades": 0, "prev_volume_usd": 445610023, "sell_volume_usd": 248895996, "sells": 868651, "tokens": 13008, "traders": 153221, "traders_note": "unique traders / tokens: approximate (HyperLogLog), up to the last complete minute", "trades": 1771032, "volume_usd": 535626816, "wash_trades": 17601, "wash_volume_usd": 100833980 }, "30d": { "buy_volume_usd": 12247569095, "buys": 34846699, "change_pct": -51.5393, "complete": true, "outlier_trades": 69, "prev_volume_usd": 48875200678, "sell_volume_usd": 11437699166, "sells": 31074225, "tokens": 291323, "traders": 2263899, "traders_note": "unique traders / tokens: approximate (HyperLogLog), up to the last complete minute", "trades": 65920924, "volume_usd": 23685268262, "wash_trades": 296158, "wash_volume_usd": 5483273594 }, "30s": { "buy_volume_usd": 185288, "buys": 1118, "change_pct": -25.6305, "complete": true, "outlier_trades": 0, "prev_volume_usd": 489301, "sell_volume_usd": 178603, "sells": 1202, "tokens": 124, "traders": 790, "trades": 2320, "volume_usd": 363891, "wash_trades": 0, "wash_volume_usd": 0 }, "5m": { "buy_volume_usd": 1526559, "buys": 7394, "change_pct": 45.1834, "complete": true, "outlier_trades": 0, "prev_volume_usd": 2700471, "sell_volume_usd": 2394075, "sells": 9124, "tokens": 464, "traders": 4438, "trades": 16518, "volume_usd": 3920634, "wash_trades": 0, "wash_volume_usd": 0 }, "6h": { "buy_volume_usd": 105598591, "buys": 321121, "change_pct": 52.3693, "complete": true, "outlier_trades": 0, "prev_volume_usd": 133649465, "sell_volume_usd": 98042204, "sells": 329945, "tokens": 5441, "traders": 63519, "traders_note": "unique traders / tokens: approximate (HyperLogLog), up to the last complete minute", "trades": 651066, "volume_usd": 203640796, "wash_trades": 541, "wash_volume_usd": 359759 }, "7d": { "buy_volume_usd": 1909691103, "buys": 5753033, "change_pct": -31.3766, "complete": true, "outlier_trades": 0, "prev_volume_usd": 5322350520, "sell_volume_usd": 1742687772, "sells": 5560924, "tokens": 58647, "traders": 500833, "traders_note": "unique traders / tokens: approximate (HyperLogLog), up to the last complete minute", "trades": 11313957, "volume_usd": 3652378875, "wash_trades": 66125, "wash_volume_usd": 453119545 }, "90d": { "buy_volume_usd": 46760389080, "buys": 208523175, "change_pct": null, "complete": true, "outlier_trades": 343, "prev_volume_usd": null, "sell_volume_usd": 45143857321, "sells": 166892984, "tokens": 1441104, "traders": 7052878, "traders_note": "unique traders / tokens: approximate (HyperLogLog), up to the last complete minute", "trades": 375416159, "volume_usd": 91904246401, "wash_trades": 953623, "wash_volume_usd": 41341982607 } } }, "meta": { "block": 100406767, "block_age_ms": 1146, "block_ts": 1793225074000, "chain": "robinhood", "finalized_block": 100397649, "lag_ms": 3, "safe_block": 100401329 }}What this tells you
daily.rowshas one row per day withvolume_usd, buy and sell volume,tradesandwash_volume_usd; the busiest of the three was $556,198,238 (daily.busiest_day).by_hour.peak_hour: 14andquietest_hour: 4over 90 days (lookback_days), in the response’stz(UTC here).by_weekday.peak_day: "wednesday"andquietest_day: "saturday".windows["24h"]givesvolume_usd: 535626816withchange_pct: 20.2008versus the previous 24 hours;windows["30d"]shows 65,920,924 trades.methoddocuments every rule: what counts as volume, what is wash (same-tx round trips), and the $25,000,000 outlier cut.
import requests, time
API = "https://api.crius.sh/v1/robinhood"
def snapshot(): s = requests.get(f"{API}/stats", params={"window": "24h"}).json() d = s["data"] return { "block": s["meta"]["block"], "ts": s["meta"]["block_ts"], "volume_usd": d["dex"]["volume_usd"], "wash_volume_usd": d["dex"]["wash_volume_usd"], "tvl_usd": d["liquidity"]["tvl_usd"], "locked_lp_usd": d["liquidity"]["locked_lp_usd"], "launches": {l["launchpad"]: l["launches"] for l in d["launchpads"]}, }
while True: row = snapshot() print(row) # write it to your own table to chart TVL over time time.sleep(60)A full walk-through is in Build a chain stats dashboard; launchpad panels are covered in Get launchpad stats, and per-token charts in OHLCV candles and Track holder count.
Frequently asked questions
Does Crius volume include wash trading?
No. volume_usd is organic DEX volume; same-transaction round trips (buys and sells of one token in one pool inside one transaction that cancel within 2%) are counted separately as wash_volume_usd. Single trades valued above $25,000,000 (mispriced quotes) are left out and counted in outlier_trades.
Can I get Robinhood Chain volume per day or per hour?
Yes. /volume returns daily rows (days) and hourly rows, a busiest day and hour, rolling windows from 1s to 180d, and a weekday × hour pattern. tz sets the time zone, so days start at your local midnight.
How is TVL measured on Robinhood Chain?
liquidity.tvl_usd on /stats is 2 × the quote side (ETH, WETH or USDG) of every pool, with only in-range liquidity counted for Uniswap v3 and v4. locked_lp_usd is the part of it held by LP lockers.
Which plan does a dashboard need?
Chain stats, volume history, launchpads, candles and token lists are on the anonymous plan at 1 or 2 credits per call. Holder count history (10 credits) needs Starter. A backend refreshing a few chain-wide calls every minute stays on the Free plan.
Related
Get your free Crius API key
Every example on this page works with a free key: higher rate limits than the anonymous plan, holders, wallets and the WebSocket stream. No card needed.
- Robinhood Chain (4663) only, from our own archive nodes
- REST + WebSocket
- Pay on-chain or by card