# 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.

Source: https://docs.crius.sh/guides/get-token-pools-and-liquidity/ · Updated 2026-10-28

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.

[GET `/token/{address}/pools`](https://docs.crius.sh/reference/tokens/token-markets/) [GET `/pool/{pool}`](https://docs.crius.sh/reference/pools/pool-detail/) [GET `/token/{address}/liquidity`](https://docs.crius.sh/reference/security/liquidity-locks/)

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

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

### 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**

```bash
curl "https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/pools?limit=3"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/pools?limit=3");
const { data, meta } = await res.json();
```

**Python**

```python
import requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/pools?limit=3",
)
body = r.json()
print(body["data"])
```

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

```json
{
  "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](https://docs.crius.sh/reference/tokens/token-markets/) Runs from your browser on the anonymous plan [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20Charge%20AI%3A%20one%20real%20market%20and%20two%20decoy%20pools&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fguides%2Fget-token-pools-and-liquidity%2F%23charge-pools%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Ftoken%2F0x7b8892cea949bc60d494681d1bc3ea96071ab0b8%2Fpools%3Flimit%3D3%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

## Look at one pool in depth

Example [Anonymous · no key · 1 credit](https://docs.crius.sh/reference/pools/pool-detail/)

### 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**

```bash
curl "https://api.crius.sh/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913");
const { data, meta } = await res.json();
```

**Python**

```python
import requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913",
)
body = r.json()
print(body["data"])
```

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

```json
{
  "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](https://docs.crius.sh/reference/pools/pool-detail/) Runs from your browser on the anonymous plan [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20The%20CHARGE%2FETH%20Uniswap%20v4%20pool&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fguides%2Fget-token-pools-and-liquidity%2F%23charge-pool-detail%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Fpool%2F0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

## What the fields mean

| Field | Meaning |
| --- | --- |
| `pool` | Pair address (Uniswap v2, v3) or 32-byte pool id (Uniswap v4). |
| `dex` | `uniswap_v2`, `uniswap_v3`, `uniswap_v4` or a launchpad curve. |
| `base`, `quote` | The token you asked about and what it's paired with (`address`, `symbol`, `logo`). Native ETH is `0x0000000000000000000000000000000000000000`. |
| `amounts` | Each side's balance in whole tokens (`token0`, `token1`, in the pool's own order). |
| `liquidity_usd`, `quote_liquidity_usd` | 2 × the quote side, and the quote side alone, from the pool's own state. |
| `price_usd` | The token's price in this pool. It can differ a lot from the token's price in thin pools. |
| `is_price_pool` | `true` for the pool the token's price comes from. |
| `fee`, `dynamic_fee`, `tick_spacing` | The swap fee in millionths (`3000` = 0.3%, `850000` = 85%), whether a v4 hook sets it per swap, and the tick spacing. |
| `hook` | The v4 hook's `address` and `name`, or `null`. |
| `state` | Raw pool state: `liquidity`, `sqrt_price_x96`, `tick`, and `reserve0`/`reserve1` for v2 pairs. |
| `created_block` | The 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](https://docs.crius.sh/guides/check-uniswap-v4-hook-risk/) before trading v4 pools.
    

```python
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')
```

Liquidity is not the same as locked liquidity

A deep pool can still be emptied if its LP tokens or position sit in a wallet. The pool detail’s `lp` tells you whether this pool’s liquidity is locked; for every position, lock and unlock date, use [Liquidity & locks](https://docs.crius.sh/reference/security/liquidity-locks/).

## 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](https://docs.crius.sh/reference/security/liquidity-locks/) (Free plan) or read [Check if liquidity is locked](https://docs.crius.sh/guides/check-liquidity-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](https://docs.crius.sh/concepts/uniswap/) and [Launchpads](https://docs.crius.sh/concepts/launchpads/).

## Related

[Guide **Check liquidity locks** Find out whether a Robinhood Chain token's liquidity is locked, burned or held by wallets that can pull it, pool by pool, with the locker and unlock date. Real examples from Pons tokens. Read](https://docs.crius.sh/guides/check-liquidity-locked/) [Guide **Get a token price** Get the live USD and ETH price of any Robinhood Chain token, the pool it comes from and how much to trust it, with one fast API call. Real examples, no key. Read](https://docs.crius.sh/guides/get-token-price/) [Guide **Check v4 hook risk** Find out what a Robinhood Chain token's Uniswap v4 hook can do and what happened in its pools (taxes, honeypots, rugs). Real examples, including critical hooks. Read](https://docs.crius.sh/guides/check-uniswap-v4-hook-risk/) [Concept **Uniswap v2, v3 & v4** How Crius indexes Uniswap v2 pairs, v3 concentrated-liquidity pools and v4 singleton pools with hooks on Robinhood Chain, including liquidity definitions and v4 hook permissions. Read](https://docs.crius.sh/concepts/uniswap/) [Guide **DEX data** Which DEXs trade on Robinhood Chain (Uniswap v2, v3, v4 with hooks, launchpad curves), their real 24h volume and pools, and the API calls for DEX trades. Read](https://docs.crius.sh/guides/robinhood-chain-dex-data/) [API reference **Token markets API** Every market the token trades in: Uniswap v2 pairs, v3 pools (all fee tiers), v4 pools (with their hook) and launchpad bonding curves, with liquidity and 24h activity. Read](https://docs.crius.sh/reference/tokens/token-markets/)
