# 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.

Source: https://docs.crius.sh/use-cases/analytics-dashboards/ · Updated 2026-10-28

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`/stats`](https://docs.crius.sh/reference/chain/chain-stats/) chain-wide numbers over `1h`, `24h` or `7d`: 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`/volume`](https://docs.crius.sh/reference/chain/volume-history/) daily and hourly volume rows, rolling windows from `1s` to `180d` with change versus the previous window, and weekday × hour patterns.
-   [GET`/launchpads`](https://docs.crius.sh/reference/launchpads/launchpads/) each launchpad’s launches, graduations, graduation rate, traders, volume by quote asset and fees.
-   [GET`/token/{address}/candles`](https://docs.crius.sh/reference/trades/ohlcv-candles/) price and volume charts for any token, from `1s` to `1d`.
-   [GET`/token/{address}/holders/history`](https://docs.crius.sh/reference/holders/holder-count-history/) holder count over time for a token, with your own holder definition (`min_usd` or `min_balance`).
-   [GET`/hooks`](https://docs.crius.sh/reference/pools/uniswap-v4-hooks/) Uniswap v4 hooks ranked by pools or volume, with their risk level.

## Suggested architecture

1.  **Poll chain-wide numbers once a minute.** `/stats`, `/volume` and `/launchpads` cost 1 credit each. Refreshing all three every minute is 4,320 credits a day, about 130,000 a month: a Free plan covers it.
    
2.  **Store your own time series.** `/stats` is a rolling window. To draw a TVL or locked-LP line over months, save each refresh with `meta.block` and `meta.block_ts`. Daily volume history comes ready-made from `/volume`.
    
3.  **Use `tz` for daily charts.** `/volume?tz=America/New_York` puts day boundaries at local midnight; the default is UTC.
    
4.  **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.
    
5.  **Show organic volume first.** Lead with `volume_usd`, and show `wash_volume_usd` next to it so readers see how much activity was round trips.
    

## The chain in one call

Example [Anonymous · no key · 1 credit](https://docs.crius.sh/reference/chain/chain-stats/)

### Robinhood Chain over 24 hours

How much did Robinhood Chain trade in the last 24 hours, and how much of it was wash trading?

GET/v1/robinhood/stats?window=24h

  

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/stats?window=24h"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/stats?window=24h");
const { data, meta } = await res.json();
```

**Python**

```python
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)**

```json
{
  "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: 535281650` from `dex.trades: 1769098` by 148,079 traders; `dex.wash_volume_usd: 100833980` of 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 which `locked_lp_usd: 44712347` sits 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.0186374` and `reorgs.count: 0`: blocks every ~100 ms, swaps under two cents, no reorgs in the window.

[Chain stats reference](https://docs.crius.sh/reference/chain/chain-stats/) Runs from your browser on the anonymous plan [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20Robinhood%20Chain%20over%2024%20hours&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fuse-cases%2Fanalytics-dashboards%2F%23chain-24h%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Fstats%3Fwindow%3D24h%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

## Volume history and patterns

Example [Anonymous · no key · 1 credit](https://docs.crius.sh/reference/chain/volume-history/)

### 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?

GET/v1/robinhood/volume?days=3

  

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/volume?days=3"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/volume?days=3");
const { data, meta } = await res.json();
```

**Python**

```python
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)**

```json
{
  "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.rows` has one row per day with `volume_usd`, buy and sell volume, `trades` and `wash_volume_usd`; the busiest of the three was $556,198,238 (`daily.busiest_day`).
-   `by_hour.peak_hour: 14` and `quietest_hour: 4` over 90 days (`lookback_days`), in the response’s `tz` (UTC here).
-   `by_weekday.peak_day: "wednesday"` and `quietest_day: "saturday"`.
-   `windows["24h"]` gives `volume_usd: 535626816` with `change_pct: 20.2008` versus the previous 24 hours; `windows["30d"]` shows 65,920,924 trades.
-   `method` documents every rule: what counts as volume, what is wash (`same-tx round trips`), and the $25,000,000 outlier cut.

[Volume history reference](https://docs.crius.sh/reference/chain/volume-history/) Runs from your browser on the anonymous plan [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20Three%20days%20of%20volume%20and%20the%20busiest%20hours&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fuse-cases%2Fanalytics-dashboards%2F%23volume-history%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Fvolume%3Fdays%3D3%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

```python
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](https://docs.crius.sh/guides/build-a-chain-stats-dashboard/); launchpad panels are covered in [Get launchpad stats](https://docs.crius.sh/guides/get-launchpad-stats/), and per-token charts in [OHLCV candles](https://docs.crius.sh/guides/get-ohlcv-candles/) and [Track holder count](https://docs.crius.sh/guides/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

[Guide **Chain stats dashboard** Build a Robinhood Chain analytics dashboard with the Crius API: DEX volume, trades, TVL, launches, gas and volume history in your time zone, with code. Read](https://docs.crius.sh/guides/build-a-chain-stats-dashboard/) [Guide **Get launchpad stats** Launches, graduations, graduation rate, time to graduate, volume, traders and fees for every Robinhood Chain launchpad, with daily history. Real responses. Read](https://docs.crius.sh/guides/get-launchpad-stats/) [Guide **Holder count history** Chart a Robinhood Chain token's holder count over time: min, max, new and exited holders per interval, with your own definition of a holder. Real example. Read](https://docs.crius.sh/guides/track-holder-count/) [Guide **OHLCV candles** Robinhood Chain OHLCV API: candles for any token from 1 second to 1 day, with buy volume, trade count and market cap per candle. Real examples and chart code. Read](https://docs.crius.sh/guides/get-ohlcv-candles/) [Guide **Find trending tokens** Get the Robinhood Chain tokens with the most real traders, plus top gainers and volume leaders with rugs and wash trading filtered out. Real API responses. Read](https://docs.crius.sh/guides/find-trending-tokens/) [API reference **Chain stats & status** Chain-wide Robinhood Chain numbers (volume, trades, TVL, launches, gas) and the API's own health and supported chains. Read](https://docs.crius.sh/reference/chain/)
