CRIUS Docs
API status Get API key
Holders & wallets

Get the holders of a Robinhood Chain token (token holders API)

Robinhood Chain token holders API: get any token's top holders in one call, with balance, share of supply, USD value, labels, holder count and top-10 share.

Updated 3 min read
Short answer

The Robinhood Chain token holders API is GET /v1/robinhood/token/{address}/holders, with a Free API key (2 credits). It returns the holder count, distribution.top10_pct (the top-10 share without pools, lockers and burn addresses) and up to 500 holders[] ranked by balance, each with address, balance, pct, value_usd, value_eth and a label for infrastructure.

A token’s holders are the addresses with a non-zero balance, ranked by how much they hold. One call to the Crius API returns the current list for any Robinhood Chain token with each holder’s share of supply and USD value, the total holder count, and how concentrated the supply is in the ten largest real holders. Pools, lockers and burn addresses are labeled so you can tell them apart from wallets. It’s the Crius token holders API for Robinhood Chain, and it works for every ERC-20 on the chain, from launchpad tokens to tokenized stocks.

Get the holder list in one call

Charge AI (CHARGE): 178 holders, top 10 hold 13.4%

Who holds Charge AI (0x7b8892cea949bc60d494681d1bc3ea96071ab0b8), a Pons token that graduated to Uniswap v4, and how concentrated is it?

GET/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/holders?limit=5&exclude=infra
curl "https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/holders?limit=5&exclude=infra" \
-H "x-api-key: $CRIUS_API_KEY"
Real response 200 Captured Oct 28, 2026 · 67 lines (arrays trimmed)
{
"data": {
"balances": "verified_onchain",
"count": 178,
"distribution": {
"top10_pct": 13.436
},
"history": "complete",
"holders": [
{
"address": "0x1860e8b874ed7742ae5459af731687ecb576c9fd",
"balance": 28729479.389247917189540117,
"label": null,
"pct": 2.87295,
"rank": 1,
"value_eth": 0.0474081,
"value_usd": 111.806
},
{
"address": "0x346f5777f5652bd561dcd830e638bc40d3e1cf3d",
"balance": 25566954.227971953484331514,
"label": null,
"pct": 2.5567,
"rank": 2,
"value_eth": 0.0421894,
"value_usd": 99.4981
},
{
"address": "0xa975e46d6552fb0ef85f7e9f7b640a058dc368bd",
"balance": 23260835.335709034922247096,
"label": null,
"pct": 2.32608,
"rank": 3,
"value_eth": 0.038384,
"value_usd": 90.5235
},
{
"address": "0xf4e322c50010e00878b8d6bbb2c495d90097e58f",
"balance": 19090692.939108585371870819,
"label": null,
"pct": 1.90907,
"rank": 4,
"value_eth": 0.0315026,
"value_usd": 74.2947
},
{
"address": "0x8e6be350c1276d3276cead49859aa435d77ac9eb",
"balance": 12214695.452807030766083489,
"label": null,
"pct": 1.22147,
"rank": 5,
"value_eth": 0.0201561,
"value_usd": 47.5356
}
],
"ledger_reliable": true
},
"meta": {
"block": 100436633,
"block_age_ms": 414,
"block_ts": 1793228150000,
"chain": "robinhood",
"finalized_block": 100427397,
"lag_ms": 17,
"safe_block": 100431079
}
}

What this tells you

  • count: 178 holders and distribution.top10_pct: 13.436: the ten largest real holders own about 13% of the supply, a spread-out token.
  • exclude=infra leaves the Uniswap v4 PoolManager, the Pons launch locker and the burn address out of the list, so rank 1 is already a real holder: 0x1860e8b874ed7742ae5459af731687ecb576c9fd, with pct: 2.87295, worth value_usd: 111.806 (value_eth: 0.0474081). Its label is null: an ordinary address.
  • Ranks 2 to 5 hold 2.5567%, 2.32608%, 1.90907% and 1.22147%. The top five add up to about 10.9%, so ranks 6 to 10 share the remaining 2.5% of the top-10 figure.
  • No single wallet holds 3% or more: the fifth-largest, 0x8e6be350c1276d3276cead49859aa435d77ac9eb, is worth value_usd: 47.5356.
  • balances: "verified_onchain", ledger_reliable: true and history: "complete": the balances were checked against the token contract at meta.block 100436633, and the count covers the token’s whole history.

What the fields mean

FieldMeaning
countAddresses holding a balance now. null when the history isn't complete or the ledger isn't reliable for this token.
distribution.top10_pctShare of total supply held by the ten largest holders that aren't infrastructure (pools, lockers, burn addresses).
holders[].rankPosition by balance, 1 = largest.
holders[].addressThe holder's address.
holders[].balanceToken balance in whole tokens (decimals applied).
holders[].pctShare of total supply, in percent.
holders[].value_usd, value_ethWhat the balance is worth at the current price.
holders[].labelWhat the address is when Crius knows it: a pool, the v4 PoolManager, a locker, the burn address, the dev. null for an ordinary wallet.
balancesverified_onchain when balances were read from the token's balanceOf; ledger when they come from Transfer events only.
ledger_reliablefalse when more than a fifth of the top holders' event balances disagree with the chain (reflection or rebasing tokens).
historycomplete when every transfer since the token's creation is indexed, else partial.

The list is live: it reflects the block in meta.block. For holders at a past moment (a block, a time, or the block where the market cap first crossed $50k), use the holder snapshot. For how holders are classified (infrastructure, smart accounts, snipers, whales), see Trader attribution & wallet tags.

Reading concentration

A high top-10 share is the classic warning sign: a few wallets that can dump on everyone else. Two things make the raw number misleading on Robinhood Chain, and the API handles both:

  • Pooled and locked supply isn’t held by anyone. A graduated launchpad token keeps most of its supply in the Uniswap v4 PoolManager and the launchpad’s locker. Counting those would make every token look 80% concentrated. top10_pct leaves them out.
  • One person can own many wallets. Ten wallets at 1% each might be one buyer. The holder list can’t see that; the bubble map links holders that were funded by the same wallet or sent tokens to each other.

Use it in your app

  1. Get a Free key. /holders needs the Free plan or higher and costs 2 credits per call. Send the key in the x-api-key header. See Plans & limits.

  2. Ask for as many rows as you show. limit takes 1 to 500. A token page usually needs 20 to 100; a concentration check needs only distribution.top10_pct, so limit=10 is enough.

  3. Separate infrastructure from wallets. Pass exclude=infra for a wallets-only list, or keep the rows and show label next to the address. Don’t add up pct across all rows to measure concentration: use top10_pct.

  4. Check the quality flags. If ledger_reliable is false or count is null, show the list but don’t present the count as exact.

// Top holders of a token, with infrastructure marked.
const token = "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8";
const res = await fetch(`https://api.crius.sh/v1/robinhood/token/${token}/holders?limit=20`, {
headers: { "x-api-key": process.env.CRIUS_API_KEY },
});
const { data, meta } = await res.json();
console.log(`${data.count ?? "?"} holders, top 10 hold ${data.distribution.top10_pct}% (block ${meta.block})`);
for (const h of data.holders) {
console.log(h.rank, h.address, `${h.pct}%`, `$${h.value_usd ?? "?"}`, h.label ?? "wallet");
}

Frequently asked questions

Is there a Robinhood Chain token holders API?

Yes. The Crius API keeps a holder ledger for every ERC-20 on Robinhood Chain from block one. GET /v1/robinhood/token/{address}/holders returns the live list (Free plan), /holders/snapshot the holders at a past block, time or market cap, and /holders/history the holder count over time (Starter plan).

How do I get the holders of a Robinhood Chain token?

Send GET https://api.crius.sh/v1/robinhood/token/{address}/holders with your key in the x-api-key header. The response has the holder count, the top-10 concentration in distribution.top10_pct and the ranked list in holders[]. It works for every ERC-20 on Robinhood Chain (chain id 4663), not only launchpad tokens.

How many holders can I get in one call?

limit goes up to 500 (default 100). /holders has no cursor, so 500 is the deepest it goes. For a longer list, page through /holders/snapshot?at=now with cursor (500 per page, the next page is in meta.next_cursor); it costs 5 credits per page instead of 2.

Why is the biggest holder a pool or a locker?

Tokens waiting in a pool or locked in a launch locker sit at a contract address, so they show up as holders. Crius marks them with a label (uniswap_v4_pool_manager, pons_v2_launch_locker, burn…) and leaves them out of distribution.top10_pct, so concentration is measured over real holders only.

Are the balances accurate for reflection or rebasing tokens?

Each listed balance is checked against the token's own balanceOf at the indexed head (balances: "verified_onchain"), so tokens whose Transfer events don't match their balances can't inflate the list. If more than a fifth of the top holders disagree with the chain, ledger_reliable is false and count is null rather than a wrong number.

Do I need an API key for holders?

Yes, a Free key is enough. Without a key the call returns 403 plan_required with required_plan: "free". A Free key takes a minute at dashboard.crius.sh; see Plans & limits.

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