CRIUS Docs
API status Get API key
Token data

Get prices for many Robinhood Chain tokens in one call

Price up to 100 Robinhood Chain tokens in one request with the batch prices API, or get chosen profile fields for many tokens. Real responses, no key needed.

Updated 2 min read
Short answer

Call GET /v1/robinhood/prices?tokens={address},{address} (or POST /v1/robinhood/prices with {"tokens": [...]}) for up to 100 tokens. data is keyed by address, each with usd, eth, change_24h_pct, liquidity_usd, confidence, symbol and logo; unknown addresses go to meta.missing. For other fields, POST /v1/robinhood/tokens/batch returns just the profile fields you list. Both are on the anonymous plan, 1 credit per call with a key.

When you need prices for a watchlist, a portfolio or a token screener, don’t send one request per token. The batch prices endpoint prices up to 100 Robinhood Chain tokens in one call, keyed by address, with the same on-chain pricing as the single price endpoint plus the 24-hour change. If you need more than prices (market cap, liquidity, holder count), batch profiles return exactly the fields you ask for.

Price a list of tokens in one call

Two tokenized stocks and one wrong address

What are NVDA (0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec) and TSLA (0x322f0929c4625ed5bad873c95208d54e1c003b2d) worth, and what if the list has an address that isn't a token?

GET/v1/robinhood/prices?tokens=0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec,0x322f0929c4625ed5bad873c95208d54e1c003b2d,0x000000000000000000000000000000000000beef
curl "https://api.crius.sh/v1/robinhood/prices?tokens=0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec,0x322f0929c4625ed5bad873c95208d54e1c003b2d,0x000000000000000000000000000000000000beef"
Real response 200 Captured Oct 28, 2026 · 36 lines (arrays trimmed)
{
"data": {
"0x322f0929c4625ed5bad873c95208d54e1c003b2d": {
"change_24h_pct": -0.959698,
"confidence": "high",
"eth": 0.171057,
"liquidity_usd": 792587,
"logo": null,
"source_pool": "0x3ea70ce0b34473692549f97e630a1d82dc05cea94fa55f81b50f10c8c6d8186f",
"symbol": "TSLA",
"usd": 402.923
},
"0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec": {
"change_24h_pct": -1.49823,
"confidence": "high",
"eth": 0.0909845,
"liquidity_usd": 1415590,
"logo": null,
"source_pool": "0xd4eb21209c4d6093f80b5b84f5c45cc093ea14a3",
"symbol": "NVDA",
"usd": 214.313
}
},
"meta": {
"block": 100409724,
"block_age_ms": 394,
"block_ts": 1793225378000,
"chain": "robinhood",
"finalized_block": 100401329,
"lag_ms": 63,
"missing": [
"0x000000000000000000000000000000000000beef"
],
"safe_block": 100405028
}
}

What this tells you

  • data is an object keyed by lowercase address, not an array: look tokens up by address, in any order.
  • NVDA: usd: 214.313, change_24h_pct: -1.49823. TSLA: usd: 402.923, change_24h_pct: -0.959698. Both have confidence: "high".
  • TSLA’s price comes from a pool with liquidity_usd: 792587, NVDA’s from one with 1415590: the 24h change and liquidity come in the same row, so you don’t need a second call.
  • 0x000000000000000000000000000000000000beef isn’t a token, so it’s absent from data and listed in meta.missing. The status is still 200.
  • logo is null for both stocks here; for tokens with a logo it’s an image URL you can show directly.
Batch prices reference Runs from your browser on the anonymous plan Data looks wrong? Report it

Get chosen profile fields for many tokens

Batch prices cover price, change and liquidity. For anything else in the token profile, send POST /v1/robinhood/tokens/batch with a fields list of dot paths. Each token comes back trimmed to those fields, with the same nesting as the full profile.

Market cap and liquidity for WETH and CHARGE

What are the symbol, price, 24h change, market cap and liquidity of WETH and Charge AI, without downloading two full profiles?

POST/v1/robinhood/tokens/batch
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"]}'
Real response 200 Captured Oct 28, 2026 · 40 lines (arrays trimmed)
{
"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

  • The body asked for symbol, price.usd, price.change_pct.24h, market.market_cap_usd and market.liquidity_usd, and that’s all each row contains.
  • WETH: market.market_cap_usd: 90409474 and market.liquidity_usd: 73135530. CHARGE: market.market_cap_usd: 3773.42 and market.liquidity_usd: 5611.8.
  • market.liquidity_usd adds up all the token’s pools, so for WETH it’s far above the liquidity_usd of its single price pool in a batch price row (9,953,382 in the batch prices sample).
  • price.change_pct.24h is the same number as change_24h_pct in batch prices: -0.171971 for CHARGE.

Which call to use

CallReturns per tokenUse it for
GET /prices?tokens=…usd, eth, change_24h_pct, liquidity_usd, confidence, source_pool, symbol, logoWatchlists, tickers, portfolio totals. Cacheable.
POST /pricesThe same, with the list in a JSON body: {"tokens": [...]}Long lists that don't fit in a URL.
POST /tokens/batchOnly the fields you list (dot paths into the profile); an empty list returns full profilesScreeners and tables that need market cap, holders or launch status.

All three take up to 100 tokens and cost 1 credit per call with a key. Addresses are accepted in any case and returned lowercase.

Use it in your app

  1. Collect the addresses you show. A portfolio’s holdings, a watchlist, or the rows on screen.

  2. Split into chunks of 100 and send one POST /prices per chunk.

  3. Merge the data objects and look each token up by its lowercase address.

  4. Report meta.missing instead of failing: show “no price” for those tokens.

  5. Refresh on a timer or on new blocks. Prices change every block; for live updates without polling, subscribe to the WebSocket stream.

// Price any number of tokens, 100 per request.
async function getPrices(addresses) {
const prices = {};
const missing = [];
for (let i = 0; i < addresses.length; i += 100) {
const res = await fetch("https://api.crius.sh/v1/robinhood/prices", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ tokens: addresses.slice(i, i + 100) }),
});
const { data, meta } = await res.json();
Object.assign(prices, data);
missing.push(...meta.missing);
}
return { prices, missing };
}
const { prices, missing } = await getPrices([
"0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec",
"0x322f0929c4625ed5bad873c95208d54e1c003b2d",
]);
for (const [addr, p] of Object.entries(prices)) {
const change = p.change_24h_pct == null ? "n/a" : `${p.change_24h_pct.toFixed(2)}%`;
console.log(`${p.symbol} $${p.usd} (${change} 24h, ${p.confidence})`);
}
if (missing.length) console.warn("no price for", missing);

Frequently asked questions

How many tokens can I price in one request?

Up to 100 per call, for both batch prices and batch profiles. For a longer list, split it into chunks of 100. One batch call costs 1 credit with a key, however many tokens it carries.

What happens if one of the addresses is wrong?

The request still succeeds. Tokens Crius can't price are left out of data and listed in meta.missing, so one bad address in a portfolio doesn't break the whole call.

Should I use GET or POST for batch prices?

They return the same thing. GET is easy to cache and to test in a browser; use POST with a JSON body when the list would make the URL too long (100 addresses is about 4,300 characters).

How do I value a wallet's holdings on Robinhood Chain?

Price the wallet's tokens with one batch call and multiply each balance by usd. Skip or flag tokens with confidence: "low": their price can't be realized at size. On the Starter plan, the wallet profile returns the holdings already valued.

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