CRIUS Docs
API status Get API key
Token data

Find every pool and the liquidity of a Robinhood Chain token (liquidity API)

Robinhood Chain liquidity API: list every Uniswap v2, v3 and v4 pool and launch curve of a token, with USD liquidity, fees, hooks and the price pool. No key.

Updated 2 min read
Short answer

The Robinhood Chain liquidity API is GET /v1/robinhood/token/{address}/pools. It lists every market the token trades in (Uniswap v2 pairs, v3 fee tiers, v4 pools with their hook, launchpad curves), ranked by liquidity_usd, with amounts of each side, fee, hook, price_usd and is_price_pool for the market the token's price comes from. meta.total counts all pools; page with cursor. For one pool in depth (reserves, TVL, LP lock, stats), call GET /v1/robinhood/pool/{pool}. Both are on the anonymous plan.

A Robinhood Chain token usually trades in more than one place: the pool its launchpad created at graduation, Uniswap v3 fee tiers, v4 pools with different hooks, and side pools anyone can open. The pools endpoint lists all of them for one token, ranked by USD liquidity, so you can see where the real market is, how deep it is and which pools are noise. The pool detail endpoint then gives one pool in depth: reserves, TVL, hook, LP lock status and trade stats. Together they are the Crius liquidity API for Robinhood Chain, and both work without a key.

List a token’s pools in one call

Charge AI: one real market and two decoy pools

Where does Charge AI (0x7b8892cea949bc60d494681d1bc3ea96071ab0b8) trade, and how much liquidity is behind each market?

GET/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/pools?limit=3
curl "https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/pools?limit=3"
Real response 200 Captured Oct 28, 2026 · 123 lines (arrays trimmed)
{
"data": [
{
"amounts": {
"token0": 1.18969,
"token1": 720478686
},
"base": {
"address": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8",
"logo": "https://api.crius.sh/v1/robinhood/logo/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8.png?size=128",
"symbol": "CHARGE"
},
"created_block": 88461321,
"dex": "uniswap_v4",
"dynamic_fee": false,
"fee": 0,
"hook": {
"address": "0xe5e702641ea86f4ae6cc3cdaed2b886f976be044",
"name": "pons_v2_meme_hook"
},
"is_price_pool": true,
"liquidity_usd": 5604.57,
"pool": "0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913",
"price_usd": 0.00000388948,
"quote": {
"address": "0x0000000000000000000000000000000000000000",
"logo": null,
"symbol": "ETH"
},
"quote_liquidity_usd": 2802.29,
"state": {
"liquidity": 29277002188455996438188,
"reserve0": 0,
"reserve1": 0,
"sqrt_price_x96": 1949728392666469411451966154432124,
"tick": 202227
},
"swaps_indexed": 432,
"tick_spacing": 200
},
{
"amounts": {
"token0": 3.1477,
"token1": 115029
},
"base": {
"address": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8",
"logo": "https://api.crius.sh/v1/robinhood/logo/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8.png?size=128",
"symbol": "CHARGE"
},
"created_block": 88461495,
"dex": "uniswap_v4",
"dynamic_fee": false,
"fee": 850000,
"hook": null,
"is_price_pool": false,
"liquidity_usd": 6.29539,
"pool": "0xe928234e515b0c000dd6aa1c60cf5a009082367cda4775a5b63b4ff0c83dcdd3",
"price_usd": 0.0000273644,
"quote": {
"address": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"logo": null,
"symbol": "USDG"
},
"quote_liquidity_usd": 3.1477,
"state": {
"liquidity": 601728037770030,
"reserve0": 0,
"reserve1": 0,
"sqrt_price_x96": 15145615706034675540349663040887263187,
"tick": 381391
},
"swaps_indexed": 3,
"tick_spacing": 60
},
{
"amounts": {
"token0": 0.328859,
"token1": 35779.5
},
"base": {
"address": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8",
"logo": "https://api.crius.sh/v1/robinhood/logo/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8.png?size=128",
"symbol": "CHARGE"
},
"created_block": 88466617,
"dex": "uniswap_v4",
"dynamic_fee": false,
"fee": 450000,
"hook": null,
"is_price_pool": false,
"liquidity_usd": 0.657719,
"pool": "0x1a184f0aa1978e7b543ee944a30df88dd34fcb667aa5a9142bb399ef582481b8",
"price_usd": 0.00000919127,
"quote": {
"address": "0x5fc5360d0400a0fd4f2af552add042d716f1d168",
"logo": null,
"symbol": "USDG"
},
"quote_liquidity_usd": 0.328859,
"state": {
"liquidity": 108473206521826,
"reserve0": 0,
"reserve1": 0,
"sqrt_price_x96": 26133147987752847079481471382601445977,
"tick": 392302
},
"swaps_indexed": 4,
"tick_spacing": 4500
}
],
"meta": {
"block": 100406784,
"block_age_ms": 826,
"block_ts": 1793225076000,
"chain": "robinhood",
"finalized_block": 100397649,
"lag_ms": 11,
"next_cursor": "3",
"safe_block": 100401329,
"total": 10
}
}

What this tells you

  • meta.total: 10: CHARGE has 10 pools. This page shows the top 3; pass meta.next_cursor ("3") as cursor for the rest.
  • The first pool, 0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913, is the real market: Uniswap v4 against ETH, liquidity_usd: 5604.57, is_price_pool: true. It holds 1.18969 ETH and 720,478,686 CHARGE (amounts), and its hook is pons_v2_meme_hook.
  • Its created_block is 88461321, the same block as CHARGE’s graduation in the token profile: this is the pool Pons opened when the bonding curve completed.
  • The next two pools are USDG pools with no hook and fees of 850000 and 450000 (85% and 45%). They hold $6.29539 and $0.657719 and quote CHARGE at 0.0000273644 and 0.00000919127, several times the real price of 0.00000388948. Pools with a 25% fee or more never set the token’s price.
Token markets reference Runs from your browser on the anonymous plan Data looks wrong? Report it

Look at one pool in depth

The CHARGE/ETH Uniswap v4 pool

What's in CHARGE's main pool, who controls its liquidity, and how much has it traded?

GET/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913
curl "https://api.crius.sh/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913"
Real response 200 Captured Oct 28, 2026 · 207 lines (arrays trimmed)
{
"data": {
"created_block": 88461321,
"created_ts": 1791990423100,
"currency0": {
"address": "0x0000000000000000000000000000000000000000",
"decimals": 18,
"logo": null,
"price_usd": 2355.49,
"symbol": "ETH"
},
"currency1": {
"address": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8",
"decimals": 18,
"logo": "https://api.crius.sh/v1/robinhood/logo/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8.png?size=128",
"price_usd": 0.00000388948,
"symbol": "CHARGE"
},
"dex": "uniswap_v4",
"dynamic_fee": false,
"factory": "0x8366a39cc670b4001a1121b8f6a443a643e40951",
"fee": 0,
"fee_bps": 0,
"hook": {
"address": "0xe5e702641ea86f4ae6cc3cdaed2b886f976be044",
"name": "PonsV2MemeHook",
"permissions": [
"beforeInitialize",
"afterSwap",
"afterSwapReturnDelta"
],
"risk": [
"can_modify_swap_amounts"
]
},
"lp": {
"locked_pct": 100,
"locker": "pons_v2_launch_locker",
"permanent": true,
"status": "locked"
},
"pool": "0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913",
"pool_manager": "0x8366a39cc670b4001a1121b8f6a443a643e40951",
"state": {
"initialized_ticks": 2,
"last_block": 100128111,
"liquidity": 29277002188455996438188,
"price_0_in_1": 605604460,
"price_1_in_0": 0.00000000165124,
"real_quote_raised": null,
"reserve0": 0,
"reserve1": 0,
"reserves": {
"currency0": 1.18969,
"currency1": 720478686,
"kind": "real"
},
"sqrt_price_x96": 1949728392666469411451966154432124,
"tick": 202227
},
"stats": {
"all_time": {
"buy_volume_usd": 107700,
"buys": 2159,
"first_trade_ts": 1791990423000,
"sell_volume_usd": 114903,
"sells": 1767,
"since": "chain_start",
"trades": 3926,
"volume_usd": 222603
},
"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
}
},
"swaps_indexed": 432,
"tick_spacing": 200,
"tvl_usd": 5604.57
},
"meta": {
"block": 100406786,
"block_age_ms": 1080,
"block_ts": 1793225076000,
"chain": "robinhood",
"finalized_block": 100397649,
"lag_ms": 48,
"safe_block": 100401329
}
}

What this tells you

  • currency0 is native ETH (price_usd: 2355.49) and currency1 is CHARGE (price_usd: 0.00000388948). state.price_1_in_0: 0.00000000165124 is CHARGE’s price in ETH.
  • state.reserves has kind: "real": 1.18969 ETH and 720,478,686 CHARGE that can actually be swapped. tvl_usd: 5604.57.
  • fee: 0: the pool itself charges no LP fee. The hook (PonsV2MemeHook) has the afterSwap and afterSwapReturnDelta permissions and the risk can_modify_swap_amounts: it can change what a swap pays out, so a fee can be taken inside the hook rather than through fee.
  • lp.status: "locked", locked_pct: 100, locker: "pons_v2_launch_locker", permanent: true: the liquidity can’t be removed.
  • stats.all_time shows 3,926 trades and $222,603 of volume in this pool, out of $280,667 for the token across all its markets.
Pool detail reference Runs from your browser on the anonymous plan Data looks wrong? Report it

What the fields mean

FieldMeaning
poolPair address (Uniswap v2, v3) or 32-byte pool id (Uniswap v4).
dexuniswap_v2, uniswap_v3, uniswap_v4 or a launchpad curve.
base, quoteThe token you asked about and what it's paired with (address, symbol, logo). Native ETH is 0x0000000000000000000000000000000000000000.
amountsEach side's balance in whole tokens (token0, token1, in the pool's own order).
liquidity_usd, quote_liquidity_usd2 × the quote side, and the quote side alone, from the pool's own state.
price_usdThe token's price in this pool. It can differ a lot from the token's price in thin pools.
is_price_pooltrue for the pool the token's price comes from.
fee, dynamic_fee, tick_spacingThe swap fee in millionths (3000 = 0.3%, 850000 = 85%), whether a v4 hook sets it per swap, and the tick spacing.
hookThe v4 hook's address and name, or null.
stateRaw pool state: liquidity, sqrt_price_x96, tick, and reserve0/reserve1 for v2 pairs.
created_blockThe block the pool was created.

The pool detail adds tvl_usd, fee_bps, currency0 and currency1 with decimals and USD prices, the hook’s permissions and risk, the lp lock summary, state.reserves and the same stats windows as the token profile.

Use it in your app

  1. Call /pools to find the real market. Take the row with is_price_pool: true for links to the pool and for swaps, and show the top rows as “markets”.

  2. Hide noise. Rows with a tiny liquidity_usd or a fee of 250000 (25%) or more are rarely real markets; leave them out of totals and charts.

  3. Show real depth. Display quote_liquidity_usd next to liquidity_usd, so users see what could actually be sold into.

  4. Drill into one pool with /pool/{pool} for its hook, lock status and stats, and check the hook with the hook risk guide before trading v4 pools.

import requests
token = "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8"
r = requests.get(f"https://api.crius.sh/v1/robinhood/token/{token}/pools", params={"limit": 50}, timeout=10)
body = r.json()
real = [p for p in body["data"] if p["fee"] < 250000 and p["liquidity_usd"] >= 100]
for p in real:
mark = "price pool" if p["is_price_pool"] else ""
hook = p["hook"]["name"] if p["hook"] else "no hook"
print(f'{p["dex"]} {p["base"]["symbol"]}/{p["quote"]["symbol"]} ${p["liquidity_usd"]:,.0f} {hook} {mark}')
print(f'{len(real)} real markets out of {body["meta"]["total"]} pools')

Frequently asked questions

Is there a Robinhood Chain liquidity API?

Yes. The Crius API reads liquidity from every Uniswap v2, v3 and v4 pool and launchpad curve on Robinhood Chain (chain id 4663). Per token, GET /v1/robinhood/token/{address}/pools returns each pool's liquidity_usd and quote_liquidity_usd; per pool, GET /v1/robinhood/pool/{pool} adds reserves, tvl_usd and the LP lock; chain-wide, GET /v1/robinhood/stats returns liquidity.tvl_usd and liquidity.locked_lp_usd. All three work without an API key.

How do I get the total liquidity of a Robinhood Chain token?

Read market.liquidity_usd (2 × the quote side) and market.quote_liquidity_usd from the token profile, GET /v1/robinhood/token/{address}: they add up all of the token's pools. To see how that total splits across pools, call /token/{address}/pools, where rows are ranked by liquidity_usd.

How do I find a token's liquidity pool on Robinhood Chain?

Call GET /v1/robinhood/token/{address}/pools. The first row is the pool with the most liquidity, and the row with is_price_pool: true is the one the token's price comes from. Each row's pool is a pair address (Uniswap v2 and v3) or a 32-byte pool id (Uniswap v4).

How much liquidity does a token have?

Two numbers matter. liquidity_usd is 2 × the quote side of a pool, the number DEX screeners show. quote_liquidity_usd is the ETH, WETH or USDG actually in the pool: the most sellers could take out. The token profile's market.liquidity_usd and market.quote_liquidity_usd add up all pools.

Why does a token have pools at very different prices?

Anyone can create a pool for any token, with any fee and starting price. Small side pools often sit far from the real price because almost nobody trades them. Crius never prices a token from a pool with a fee of 25% or more, and its candles leave out thin pools by default.

Is the liquidity locked?

The pool detail has an lp object with status, locked_pct, locker and permanent. For every LP position of the token, who holds it and when locks expire, use Liquidity & locks (Free plan) or read Check if liquidity is locked.

Which DEXes does Crius index on Robinhood Chain?

Uniswap v2, v3 and v4 (including every v4 hook) and the launchpad bonding curves (Pons and others). See Uniswap on Robinhood Chain and Launchpads.

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