CRIUS Docs
API status Get API key
Token data

How to get Robinhood Chain token data (token profile API)

Get a Robinhood Chain token's name, supply, price, market cap, holders, launchpad, liquidity lock and links in one API call. Real response, no API key needed.

Updated 3 min read
Short answer

Call GET /v1/robinhood/token/{address}. One response carries the token's identity (name, symbol, decimals, type), supply, price with change and all-time high, market (market cap, FDV, liquidity), a holders summary, its launch and liquidity lock status, metadata (logo and links) and trade stats per window. It's on the anonymous plan: no key needed, 1 credit with one.

The token profile is the one call that tells you everything Crius knows about a Robinhood Chain token: what it is, how much of it exists, what it trades at, how big its market is, who holds it, where it launched, whether its liquidity is locked and how much it has traded. Send GET /v1/robinhood/token/{address} with any ERC-20 address and you get it all in a single JSON object, read at the block shown in meta.block.

Get a token’s profile in one call

A graduated Pons token: Charge AI (CHARGE)

What is Charge AI (0x7b8892cea949bc60d494681d1bc3ea96071ab0b8), where did it launch, and how big is it?

GET/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8
curl "https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8"
Real response 200 Captured Oct 28, 2026 · 320 lines (arrays trimmed)
{
"data": {
"address": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8",
"admin_flags": null,
"bundles": {
"see": "/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/bundles"
},
"burned": 29840058.774195638068253872,
"chain_id": 4663,
"circulating_supply": 970159941.225804361931746128,
"creation": {
"attribution": "known_launchpad",
"block": 88385886,
"deployed_via": "pons_v2",
"deployer": "0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca",
"factory": "0x7ed598bcef8bd9edd8c97a195c6d13f40801ec7e",
"launchpad_name": "Pons",
"tx": "0x4d9536e81ce418070e93b72f46f1d91afdd6a9ed34141b8e3773926b0d863747"
},
"decimals": 18,
"dexscreener": {
"boosts": {
"active_amount": null,
"active_seen_ts": null,
"count": 0,
"last_ts": null,
"total_amount": 0
},
"checked_ts": 1793040659244,
"community_takeover": false,
"community_takeover_ts": null,
"confirmed": true,
"dex_paid": true,
"dex_paid_ts": 1791988981764,
"orders": [
{
"payment_ts": 1791988981764,
"status": "approved",
"type": "tokenProfile"
}
],
"profile": {
"description": null,
"header": "https://cdn.dexscreener.com/cms/images/JcxosvISKHoUITBu?width=1500&height=500&quality=95&format=auto",
"icon": "https://cdn.dexscreener.com/cms/images/DjTh8_NirbFrIzjW?width=800&height=800&quality=95&format=auto",
"links": [
{
"label": "Website",
"type": "website",
"url": "https://chargeai.bid/"
},
{
"type": "twitter",
"url": "https://x.com/chargeairh"
}
]
},
"url": "https://dexscreener.com/robinhood/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8"
},
"first_seen_block": 88385886,
"history": "complete",
"holders": {
"burned_pct": 2.98401,
"count": 179,
"dev_holding": false,
"dev_pct": 0,
"locked_pct": 8.16327,
"top10_pct": 13.436
},
"launch": {
"creator": "0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca",
"creator_label": null,
"curve": "0x2b0943bf947b54df526047b6fec8183a4fdeb3c3",
"curve_state": null,
"graduated_block": 88461321,
"graduation_threshold": 4.2,
"launched_block": 88385886,
"launchpad": "pons",
"launchpad_name": "Pons",
"pair_token": "0x0000000000000000000000000000000000000000",
"progress_pct": 100,
"raised": null,
"status": "graduated"
},
"liquidity": {
"locked_pct": 100,
"lockers": [
"pons_v2_launch_locker"
],
"next_unlock_ts": null,
"permanent": true,
"status": "locked"
},
"locked": 81632653.061224486519511236,
"market": {
"fdv_usd": 3889.48,
"liquidity_usd": 5611.8,
"market_cap_usd": 3773.42,
"pools_count": 10,
"quote_liquidity_usd": 2805.9
},
"metadata": {
"banner": "https://cdn.dexscreener.com/cms/images/JcxosvISKHoUITBu?width=1500&height=500&quality=95&format=auto",
"description": "hf:charge-ai/charge-30b@9ff2ef1e98ea4d9745a70b33ea02b80dba26c582",
"links": {
"discord": null,
"farcaster": null,
"github": null,
"telegram": null,
"twitter": "https://x.com/chargeairh",
"website": "https://chargeai.bid/"
},
"logo": "https://api.crius.sh/v1/robinhood/logo/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8.png?size=128",
"logo_original": "https://api.surplusllm.com/api/launchpad/logos/bb4315cb9506ef872830b1dab25ffdb6694df1b8b8e32cc2c8d083208f26baab.png",
"socials": {
"discord": null,
"farcaster": null,
"github": null,
"telegram": null,
"twitter": {
"source": "pons_launch",
"url": "https://x.com/chargeairh"
},
"website": {
"source": "pons_launch",
"url": "https://chargeai.bid/"
}
},
"source": "pons_launch",
"sources": {
"links": "pons_launch",
"logo": "pons_launch"
}
},
"name": "Charge AI",
"price": {
"ath_market_cap_usd": 68675.8,
"ath_scope": "all_time",
"ath_ts": 1792055400000,
"ath_usd": 0.0000707881,
"change_pct": {
"1h": 0.896103,
"1m": 0.896103,
"1s": 0.896103,
"24h": -0.171971,
"30s": 0.896103,
"4h": 0.896103,
"5m": 0.896103,
"6h": 0.896103
},
"confidence": "medium",
"dex": "uniswap_v4",
"eth": 0.00000000165124,
"liquidity_usd": 5604.57,
"quote": "0x0000000000000000000000000000000000000000",
"quote_liquidity_usd": 2802.29,
"source_pool": "0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913",
"thin_liquidity": false,
"usd": 0.00000388948
},
"security": {
"see": "/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/security"
},
"standard": "erc20",
"stats": {
"all_time": {
"buy_volume_usd": 143046,
"buys": 2893,
"first_trade_ts": 1791982835000,
"sell_volume_usd": 137621,
"sells": 2250,
"since": "chain_start",
"trades": 5143,
"volume_usd": 280667
},
"avg_trade_usd": {
"1h": null,
"1m": null,
"1s": null,
"24h": 2.96366,
"30s": null,
"4h": null,
"5m": null,
"6h": null
},
"buy_volume_usd": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 0,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"buyers": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 0,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"buys": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 0,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"last_trade_ts": 1793196204000,
"sell_volume_usd": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 5.92732,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"sellers": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 2,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"sells": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 2,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"traders": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 2,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"trades": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 2,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"txns": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 2,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"volume_eth": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 0.00252958,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
},
"volume_usd": {
"1h": 0,
"1m": 0,
"1s": 0,
"24h": 5.92732,
"30s": 0,
"4h": 0,
"5m": 0,
"6h": 0
}
},
"symbol": "CHARGE",
"total_supply": 1000000000,
"type": "launchpad",
"ui_multiplier": null,
"verification": {
"compiler": null,
"contract_name": null,
"implementation": null,
"is_proxy": null,
"sourcify": null
}
},
"meta": {
"block": 100406769,
"block_age_ms": 400,
"block_ts": 1793225075000,
"chain": "robinhood",
"finalized_block": 100397649,
"lag_ms": 38,
"pending": [],
"safe_block": 100401329
}
}

What this tells you

  • Identity. name: "Charge AI", symbol: "CHARGE", decimals: 18, type: "launchpad", standard: "erc20".
  • Launch. launch.launchpad: "pons" and launch.status: "graduated": it launched at block 88385886 and graduated at block 88461321 (progress_pct: 100). creation.deployer is the creator wallet 0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca.
  • Price. price.usd is 0.00000388948 with confidence: "medium", taken from the Uniswap v4 pool in price.source_pool. price.ath_usd is 0.0000707881, so the token trades about 94.5% below its all-time high.
  • Market. market.market_cap_usd: 3773.42, market.fdv_usd: 3889.48, market.liquidity_usd: 5611.8 across pools_count: 10 pools.
  • Holders. holders.count: 179, the top 10 hold top10_pct: 13.436%, and the developer holds nothing (dev_holding: false).
  • Liquidity. liquidity.status: "locked", 100% in pons_v2_launch_locker with permanent: true: the launch liquidity can never be withdrawn.
  • Activity. stats.all_time counts 5,143 trades and $280,667 of volume, but stats.trades.24h is only 2: the token has gone quiet.
  • Links. metadata.links.website is https://chargeai.bid/ and metadata.links.twitter is https://x.com/chargeairh, both from the Pons launch (metadata.sources.links: "pons_launch").
Token profile reference Runs from your browser on the anonymous plan Data looks wrong? Report it

An address that isn't a token

What happens when the address isn't an indexed token on Robinhood Chain?

GET/v1/robinhood/token/0x000000000000000000000000000000000000beef
curl "https://api.crius.sh/v1/robinhood/token/0x000000000000000000000000000000000000beef"
Real response 404 Captured Oct 28, 2026 · 6 lines (arrays trimmed)
{
"error": {
"code": "token_not_found",
"message": "token 0x000000000000000000000000000000000000beef not indexed"
}
}

What this tells you

  • The status is 404 and error.code is token_not_found, with the message token 0x000000000000000000000000000000000000beef not indexed.
  • Treat it as “not a token on this chain” (a wallet, a contract that isn’t an ERC-20, or a typo), not as a temporary failure: retrying won’t change it.
Token profile reference Runs from your browser on the anonymous plan Data looks wrong? Report it

What the profile contains

The profile is grouped into sections. Field names are stable, so you can read them without checking the shape first.

SectionKey fieldsWhat it answers
Identityname, symbol, decimals, type, standardWhat the token is. type is launchpad, generic or stock.
Supplytotal_supply, burned, locked, circulating_supplyHow many tokens exist and how many were burned or locked. Amounts are in whole tokens.
priceusd, eth, change_pct, ath_usd, ath_ts, confidence, source_poolThe live price, its change per window, the all-time high and how far to trust it.
marketmarket_cap_usd, fdv_usd, liquidity_usd, quote_liquidity_usd, pools_countHow big the market is and how much liquidity backs it.
holderscount, top10_pct, dev_pct, dev_holding, burned_pct, locked_pctHow spread out the supply is.
launch and creationlaunchpad, status, progress_pct, graduated_block, deployer, factoryWhere and how the token was created. launch is null for tokens that didn't use a launchpad.
liquiditystatus, locked_pct, lockers, next_unlock_ts, permanentWhether the liquidity can be pulled, and when.
statstrades, buys, sells, traders, volume_usd per window, plus all_timeHow much it trades, from 1 second to 24 hours.
metadatalogo, banner, description, links, sourcesLogo and links for your UI, and where they came from.

Two sections are links rather than data: security.see and bundles.see point to the security check and the launch-bundle analysis, which are heavier to compute. That keeps the profile fast enough to call on every page view.

A few things differ by token type. Launchpad tokens such as CHARGE carry launch and a liquidity object with their launch locker. Tokens from other factories have launch: null and a liquidity summary with a see link to the liquidity endpoint. Tokenized stocks have type: "stock" and a ui_multiplier. On a token’s very first request, meta.pending lists sections that are still loading; it is empty ([]) in the example above.

Use it in your app

  1. Fetch the profile when a user opens a token. One request fills a token page: header (logo, name, links), price card, market stats and holder summary. No key is needed while you prototype.

  2. Handle 404 token_not_found. Show “not a token on Robinhood Chain” instead of retrying.

  3. Read optional sections defensively. launch is null for non-launchpad tokens and price can be null for a token that has never had a market.

  4. Follow the links for detail. Call security.see before you let users trade, and the pools endpoint when you need every market.

  5. Use lighter calls in loops. For a price ticker, call /price instead; for a list of tokens, use POST /tokens/batch with only the fields you show.

// Token page header from one call (no key needed).
const token = "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8";
const res = await fetch(`https://api.crius.sh/v1/robinhood/token/${token}`);
if (res.status === 404) throw new Error("not a token on Robinhood Chain");
const { data, meta } = await res.json();
console.log(`${data.name} (${data.symbol}), ${data.type}`);
console.log(`price $${data.price?.usd}, market cap $${data.market.market_cap_usd}`);
console.log(`${data.holders.count} holders, top 10 hold ${data.holders.top10_pct}%`);
if (data.launch) console.log(`${data.launch.launchpad_name}: ${data.launch.status}`);
console.log(`liquidity ${data.liquidity?.status}, read at block ${meta.block}`);

Frequently asked questions

What is the best API for Robinhood Chain token data?

Pick one that indexes the chain itself, covers every token (not only listed ones) and tells you how fresh each answer is. The Crius API reads Robinhood Chain from its own archive nodes, decodes every block as it arrives and returns a full token profile in one call, with meta.block and meta.lag_ms on every response. The token profile is on the anonymous plan, so you can test it without signing up.

Does the token profile need an API key?

No. /token/{address} is on the anonymous plan, limited to 2 requests per second per IP. With a free key it costs 1 credit and your limit goes up to 10 requests per second. See Plans & limits.

Which tokens does it cover?

Every ERC-20 on Robinhood Chain: launchpad tokens (type: "launchpad"), tokens from other factories (generic), tokenized stocks (stock), and WETH and USDG. An address that isn't an indexed token returns 404 with the code token_not_found.

How do I get profiles for many tokens at once?

Use POST /v1/robinhood/tokens/batch with up to 100 addresses and a fields list of dot paths (price.usd, market.market_cap_usd, holders.count). It returns only those fields for each token. See Get prices for many tokens.

Where do the logo and social links come from?

From the token's own metadata first (its launchpad launch, an on-chain metadata URI or its verified source), with its DexScreener profile filling gaps. metadata.sources says which one was used, and metadata.links always has all six keys (null when unknown).

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