# Robinhood Chain API for token screeners

> Build a Robinhood Chain token screener with the Crius API: new, trending and graduating lists, batch profiles, candles and risk badges, with credit costs.

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

A token screener is a live table of a chain’s tokens: newest launches, trending tokens, top gainers, tokens about to graduate from a bonding curve, each with price, change, market cap, liquidity, volume and a risk badge. With the Crius API the table comes from one list call per tab, the detail page from a handful of anonymous calls, and the risk badge from the same security check traders use. You don’t need to index Robinhood Chain or decode its launchpads.

## Endpoints a screener uses

-   [GET`/tokens`](https://docs.crius.sh/reference/discovery/token-lists/) one call per tab: `new`, `bonding`, `graduating`, `graduated`, `trending`, `top_volume`, `top_gainers`, `top_losers`, `top_market_cap`. Filters: `launchpad`, `quote`, `min_liquidity_usd`, `min_volume_usd`, `min_market_cap_usd` / `max_market_cap_usd`, `created_after_ts`, `window` and `clean=true`.
-   [POST`/tokens/batch`](https://docs.crius.sh/reference/tokens/batch-token-profiles/) to refresh the rows a user is watching, trimmed to the fields you show.
-   [GET`/prices`](https://docs.crius.sh/reference/tokens/batch-prices/) for a watchlist’s prices and 24h change, 100 tokens per call.
-   [GET`/token/{address}/candles`](https://docs.crius.sh/reference/trades/ohlcv-candles/) for sparklines and the detail chart, with the launch curve merged in.
-   [GET`/token/{address}/security`](https://docs.crius.sh/reference/security/security-checks/) for the risk badge (`risk`, `score`, `flags`).
-   [GET`/search`](https://docs.crius.sh/reference/discovery/search/) for the search box: names, symbols and exact addresses.

## Suggested architecture

1.  **Refresh lists on the server.** A worker calls each tab’s list on a timer and caches the result. Five tabs refreshed every 10 seconds is 43,200 calls a day, about 1.3 million credits a month: more than the Free plan’s 1,000,000, well within Starter. Every visitor is served from the cache.
    
2.  **Compute risk once per token.** Call `/security` (1 credit) the first time a token enters any list, store the badge, and re-check on a schedule or when the `tax:<token>` or `lp:<token>` stream channels report a change.
    
3.  **Load detail pages on demand.** A token page needs the profile (1 credit), candles (2), recent trades (2) and the cached security check (1): 6 credits. Cache it per `meta.block`, and push live updates with `candles:<token>:<interval>` and `trades:<token>` on the stream.
    
4.  **Let the user filter on the server.** Pass `min_liquidity_usd`, `launchpad` or `min_market_cap_usd` to the list instead of filtering 100 rows in the browser: you get full pages of matching tokens.
    

## A trending tab in one call

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

### Trending tokens in the last 24 hours

Which Robinhood Chain tokens are trending today, without rugs and wash trading?

GET/v1/robinhood/tokens?list=trending&window=24h&limit=3

  

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/tokens?list=trending&window=24h&limit=3"
```

**JavaScript**

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

**Python**

```python
import requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/tokens?list=trending&window=24h&limit=3",
)
body = r.json()
print(body["data"])
```

**Real response 200 Captured Oct 28, 2026 · 281 lines (arrays trimmed)**

```json
{
  "data": [
    {
      "address": "0xd086f891229cd123aadfcae7c4b40150a80fd9d7",
      "buy_volume_usd": {
        "1h": 846676,
        "24h": 1760953,
        "5m": 213539,
        "6h": 1760953
      },
      "buyers": {
        "1h": 2862,
        "24h": 4951,
        "5m": 893,
        "6h": 4951
      },
      "buys": {
        "1h": 5160,
        "24h": 10660,
        "5m": 1143,
        "6h": 10660
      },
      "change_pct": {
        "1h": 219.677,
        "24h": 34319.8,
        "5m": 3.97796,
        "6h": 34319.8
      },
      "created_block": 100319502,
      "created_ts": 1793216058240,
      "decimals": 18,
      "fdv_usd": 2836574,
      "holders": 2857,
      "launchpad": null,
      "launchpad_name": null,
      "links": {
        "discord": null,
        "farcaster": null,
        "github": null,
        "telegram": null,
        "twitter": "https://x.com/search?q=0xd086f891229cd123aadfcae7c4b40150a80fd9d7&src=typed_query&f=live",
        "website": "https://xdcoinsol.lol"
      },
      "liquidity_usd": 723990,
      "logo": "https://api.crius.sh/v1/robinhood/logo/0xd086f891229cd123aadfcae7c4b40150a80fd9d7.png?size=128",
      "market_cap_usd": 2552917,
      "name": "Pizza",
      "price_eth": 0.00000120424,
      "price_usd": 0.00283657,
      "progress_pct": null,
      "quote": "USDG",
      "sell_volume_usd": {
        "1h": 706205,
        "24h": 1465984,
        "5m": 207484,
        "6h": 1465984
      },
      "sellers": {
        "1h": 1951,
        "24h": 3642,
        "5m": 630,
        "6h": 3642
      },
      "sells": {
        "1h": 7995,
        "24h": 17196,
        "5m": 1833,
        "6h": 17196
      },
      "status": null,
      "symbol": "PIZZA",
      "traders": {
        "1h": 3401,
        "24h": 5197,
        "5m": 1288,
        "6h": 5197
      },
      "txns": {
        "1h": 8316,
        "24h": 17544,
        "5m": 1915,
        "6h": 17544
      },
      "volume_usd": {
        "1h": 1552881,
        "24h": 3226937,
        "5m": 421023,
        "6h": 3226937
      }
    },
    {
      "address": "0x2e8c31162b855a2ffa90f6f8634643ad6f111e18",
      "buy_volume_usd": {
        "1h": 68152.3,
        "24h": 3574310,
        "5m": 1310.32,
        "6h": 2375164
      },
      "buyers": {
        "1h": 168,
        "24h": 2815,
        "5m": 15,
        "6h": 1546
      },
      "buys": {
        "1h": 369,
        "24h": 11920,
        "5m": 17,
        "6h": 5582
      },
      "change_pct": {
        "1h": 0.783146,
        "24h": 25.2392,
        "5m": -1.01199,
        "6h": 21.3351
      },
      "created_block": 9721433,
      "created_ts": 1784051310300,
      "decimals": 18,
      "fdv_usd": 80269321,
      "holders": 58015,
      "launchpad": "long",
      "launchpad_name": "Long.xyz",
      "links": {
        "discord": null,
        "farcaster": null,
        "github": null,
        "telegram": null,
        "twitter": "https://x.com/artificiallyinu",
        "website": "https://artificialinu.com/"
      },
      "liquidity_usd": 4181412,
      "logo": "https://api.crius.sh/v1/robinhood/logo/0x2e8c31162b855a2ffa90f6f8634643ad6f111e18.png?size=128",
      "market_cap_usd": 80102641,
      "name": "Artificial Inu",
      "price_eth": 0.0000343898,
      "price_usd": 0.0810048,
      "progress_pct": null,
      "quote": "PONS",
      "sell_volume_usd": {
        "1h": 50026.5,
        "24h": 3026550,
        "5m": 4390.97,
        "6h": 1840520
      },
      "sellers": {
        "1h": 151,
        "24h": 3051,
        "5m": 15,
        "6h": 1664
      },
      "sells": {
        "1h": 287,
        "24h": 12095,
        "5m": 20,
        "6h": 5933
      },
      "status": "launched",
      "symbol": "AI",
      "traders": {
        "1h": 272,
        "24h": 4132,
        "5m": 27,
        "6h": 2294
      },
      "txns": {
        "1h": 454,
        "24h": 14552,
        "5m": 28,
        "6h": 6627
      },
      "volume_usd": {
        "1h": 118179,
        "24h": 6600860,
        "5m": 5701.29,
        "6h": 4215684
      }
    },
    {
      "address": "0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec",
      "buy_volume_usd": {
        "1h": 305614,
        "24h": 5466111,
        "5m": 20057.3,
        "6h": 2772574
      },
      "buyers": {
        "1h": 229,
        "24h": 1996,
        "5m": 56,
        "6h": 790
      },
      "buys": {
        "1h": 847,
        "24h": 16482,
        "5m": 104,
        "6h": 6874
      },
      "change_pct": {
        "1h": 0.3314,
        "24h": -1.40466,
        "5m": -0.235953,
        "6h": -1.21643
      },
      "created_block": 153563,
      "created_ts": 1782222069300,
      "decimals": 18,
      "fdv_usd": 18876187,
      "holders": 192283,
      "launchpad": null,
      "launchpad_name": null,
      "links": {
        "discord": null,
        "farcaster": null,
        "github": null,
        "telegram": null,
        "twitter": null,
        "website": null
      },
      "liquidity_usd": 5815054,
      "logo": null,
      "market_cap_usd": 18876064,
      "name": "NVIDIA • Robinhood Token",
      "price_eth": 0.0911626,
      "price_usd": 214.732,
      "progress_pct": null,
      "quote": "USDG",
      "sell_volume_usd": {
        "1h": 159139,
        "24h": 6030012,
        "5m": 54077.9,
        "6h": 3340517
      },
      "sellers": {
        "1h": 224,
        "24h": 2645,
        "5m": 57,
        "6h": 1101
      },
      "sells": {
        "1h": 678,
        "24h": 18554,
        "5m": 151,
        "6h": 8629
      },
      "status": null,
      "symbol": "NVDA",
      "traders": {
        "1h": 325,
        "24h": 3519,
        "5m": 83,
        "6h": 1422
      },
      "txns": {
        "1h": 1413,
        "24h": 32946,
        "5m": 240,
        "6h": 14457
      },
      "volume_usd": {
        "1h": 464753,
        "24h": 11496124,
        "5m": 74135.1,
        "6h": 6113091
      }
    }
  ],
  "meta": {
    "block": 100406892,
    "block_age_ms": 1238,
    "block_ts": 1793225087000,
    "chain": "robinhood",
    "finalized_block": 100397649,
    "lag_ms": 117,
    "list": "trending",
    "next_cursor": "3",
    "safe_block": 100401329,
    "stats_since": "chain_start",
    "window": "24h"
  }
}
```

What this tells you

-   First is Pizza (`0xd086f891229cd123aadfcae7c4b40150a80fd9d7`): `change_pct.24h: 34319.8`, `volume_usd.24h: 3226937` from 5,197 traders, `market_cap_usd: 2552917` and `liquidity_usd: 723990`, quoted in USDG.
-   Second is Artificial Inu (`0x2e8c31162b855a2ffa90f6f8634643ad6f111e18`), a Long.xyz token (`launchpad: "long"`) quoted in PONS, with 58,015 holders.
-   Third is NVIDIA’s Robinhood token (`0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec`, `NVDA`): tokenized stocks rank alongside meme tokens, here with 192,283 holders and `volume_usd.24h: 11496124`.
-   Each row already has what a table row needs: `logo`, `links`, price, `change_pct`, `buys`, `sells`, `traders` and volume per window (`5m`, `1h`, `6h`, `24h`), plus `status` and `progress_pct` for launchpad tokens.
-   `meta.next_cursor: "3"`: pass it as `cursor` for the next page.

[Token lists reference](https://docs.crius.sh/reference/discovery/token-lists/) Runs from your browser on the anonymous plan [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20Trending%20tokens%20in%20the%20last%2024%20hours&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fuse-cases%2Ftoken-screeners%2F%23trending%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Ftokens%3Flist%3Dtrending%26window%3D24h%26limit%3D3%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

## Refresh a watchlist

Example [Anonymous · no key · 1 credit](https://docs.crius.sh/reference/tokens/batch-token-profiles/)

### Two watchlist rows, only the fields the table shows

How do I refresh price, 24h change, market cap and liquidity for the tokens a user is watching?

POST/v1/robinhood/tokens/batch

 

**cURL**

```bash
curl -X POST "https://api.crius.sh/v1/robinhood/tokens/batch" \
  -H "content-type: application/json" \
  -d '{"tokens":["0x7b8892cea949bc60d494681d1bc3ea96071ab0b8","0x0bd7d308f8e1639fab988df18a8011f41eacad73"],"fields":["symbol","price.usd","price.change_pct.24h","market.market_cap_usd","market.liquidity_usd"]}'
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/tokens/batch", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
    "tokens": [
      "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8",
      "0x0bd7d308f8e1639fab988df18a8011f41eacad73"
    ],
    "fields": [
      "symbol",
      "price.usd",
      "price.change_pct.24h",
      "market.market_cap_usd",
      "market.liquidity_usd"
    ]
  }),
});
const { data, meta } = await res.json();
```

**Python**

```python
import requests

r = requests.post(
    "https://api.crius.sh/v1/robinhood/tokens/batch",
    json={"tokens":["0x7b8892cea949bc60d494681d1bc3ea96071ab0b8","0x0bd7d308f8e1639fab988df18a8011f41eacad73"],"fields":["symbol","price.usd","price.change_pct.24h","market.market_cap_usd","market.liquidity_usd"]},
)
body = r.json()
print(body["data"])
```

**Real response 200 Captured Oct 28, 2026 · 40 lines (arrays trimmed)**

```json
{
  "data": {
    "0x0bd7d308f8e1639fab988df18a8011f41eacad73": {
      "market": {
        "liquidity_usd": 73135530,
        "market_cap_usd": 90409474
      },
      "price": {
        "change_pct": {
          "24h": 0.286017
        },
        "usd": 2355.49
      },
      "symbol": "WETH"
    },
    "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8": {
      "market": {
        "liquidity_usd": 5611.8,
        "market_cap_usd": 3773.42
      },
      "price": {
        "change_pct": {
          "24h": -0.171971
        },
        "usd": 0.00000388948
      },
      "symbol": "CHARGE"
    }
  },
  "meta": {
    "block": 100406780,
    "block_age_ms": 575,
    "block_ts": 1793225076000,
    "chain": "robinhood",
    "finalized_block": 100397649,
    "lag_ms": 196,
    "missing": [],
    "safe_block": 100401329
  }
}
```

What this tells you

-   One POST returns both tokens, trimmed to the five `fields` in the body: `symbol`, `price.usd`, `price.change_pct.24h`, `market.market_cap_usd` and `market.liquidity_usd`.
-   CHARGE has `market_cap_usd: 3773.42` and `liquidity_usd: 5611.8`. Liquidity counts both sides of each pool (2 × the quote side), so on a small token it can exceed the market cap.
-   WETH has `market_cap_usd: 90409474` and `liquidity_usd: 73135530` across all its pools.
-   `meta.missing: []`: every address was found. Unknown addresses are listed there instead of failing the request.

[Batch token profiles reference](https://docs.crius.sh/reference/tokens/batch-token-profiles/) [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20Two%20watchlist%20rows%2C%20only%20the%20fields%20the%20table%20shows&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fuse-cases%2Ftoken-screeners%2F%23watchlist%0ARequest%3A%20POST%20%2Fv1%2Frobinhood%2Ftokens%2Fbatch%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

```js
// Server-side list cache for a screener tab (anonymous plan; add a key for higher limits).
const cache = new Map();

async function refresh(tab, query) {
  const res = await fetch(`https://api.crius.sh/v1/robinhood/tokens?list=${tab}&limit=100&${query}`);
  const { data, meta } = await res.json();
  cache.set(tab, {
    block: meta.block,
    rows: data.map((t) => ({
      address: t.address, symbol: t.symbol, logo: t.logo,
      price: t.price_usd, change24h: t.change_pct["24h"],
      mcap: t.market_cap_usd, liquidity: t.liquidity_usd, volume24h: t.volume_usd["24h"],
      launchpad: t.launchpad_name, progress: t.progress_pct,
    })),
  });
}

setInterval(() => refresh("trending", "window=24h"), 10_000);
setInterval(() => refresh("graduating", "min_liquidity_usd=1000"), 10_000);
```

Step-by-step builds are in [Build a token screener](https://docs.crius.sh/guides/build-a-token-screener/), and each tab has its own guide: [new tokens](https://docs.crius.sh/guides/find-new-tokens/), [trending](https://docs.crius.sh/guides/find-trending-tokens/), [by market cap](https://docs.crius.sh/guides/find-tokens-by-market-cap/) and [bonding and graduating](https://docs.crius.sh/guides/track-bonding-and-graduating-tokens/).

## Frequently asked questions

**How do I keep rugs and wash trading off a Robinhood Chain screener?**

Use `list=trending`, which only lists clean tokens: no crash of 90% from the window's peak, $1,000+ liquidity, 20+ real holders, no insider or wallet-farm launch, no bot distribution and no single wallet holding 40%+ of the liquidity unlocked. Add `clean=true` to any other list (`top_volume`, `top_gainers`, …) for the same checks.

**How many tokens does one call return?**

Token lists return up to 100 tokens per page (paginate with `cursor`). Batch prices and batch profiles take up to 100 addresses per call. Each of those calls costs 1 credit.

**Can I show bonding-curve progress for launchpad tokens?**

Yes. Every row of `/tokens` has `status` (`bonding` or `graduated` for launchpad tokens) and `progress_pct` toward graduation. `list=graduating` lists bonding tokens closest to graduation first.

**Should my screener call the API from the browser?**

Better from your backend. Without a key each visitor's browser gets 2 requests per second, and a key in front-end code must be origin-restricted. A backend that refreshes the lists on a timer and serves every visitor from its cache costs the same credits for 10 visitors or 10,000.

## Related

[Guide **Token screener** Build a Robinhood Chain token screener with the Crius API: clean token lists, batch profiles, a risk check per token, credits per refresh and working code. Read](https://docs.crius.sh/guides/build-a-token-screener/) [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/) [Guide **Find new tokens** List new Robinhood Chain tokens seconds after they are created, filter by launchpad, liquidity and creation time, with real responses from the Crius API. Read](https://docs.crius.sh/guides/find-new-tokens/) [Guide **Find tokens by market cap** Rank Robinhood Chain tokens by market cap, filter by a minimum or a range, and drop fake market caps from dust pools and insider launches. Real responses. Read](https://docs.crius.sh/guides/find-tokens-by-market-cap/) [Guide **Track bonding & graduating tokens** Track Pons, Flap and other Robinhood Chain launchpad tokens on their bonding curves, see which are closest to graduating and catch each graduation. Read](https://docs.crius.sh/guides/track-bonding-and-graduating-tokens/) [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/)
