Skip to content

Pools ranked for a liquidity provider

GET
/lp/pools
curl --request GET \
--url 'https://api.getchord.xyz/v1/lp/pools?chain=5042&sort=fee_tvl&interval=1h&small=0&flagged=0&category=stocks&limit=50&offset=0'

Every indexed pool with volume by window, fees (volume × the pool’s fee tier), TVL, fee/TVL and an annualised yardstick, LP adds / removes / providers in 24 hours, trader counts, and a 0–100 health score. Pools under $10k TVL are hidden unless small=1; wash and launch-farm pools are hidden unless flagged=1 (they come back with suspect: true). category=stocks keeps the pools with a tokenized stock or ETF on one side (Robinhood Chain only: 400 BAD_CATEGORY elsewhere, 503 CATEGORY_UNAVAILABLE while the token list cannot be read).

Use it for: an LP screener, “where are the fees on Arc”, a pool picker for a token.

chain
required
integer
Allowed values: 5042 4663 143

Chain id: 5042 Arc · 4663 Robinhood Chain · 143 Monad.

sort
string
default: fee_tvl
Allowed values: fee_tvl vol_24h vol_1h tvl fees_24h first_seen lp_net_24h trades_24h score
interval
string
default: 24h
Allowed values: 1h 6h 24h

Window the fee/TVL sort uses.

minTvl
number

Default 10000 unless small=1.

quote
string

Anchor symbol filter (e.g. USDC).

dex
string

Venue id filter.

search
string
<= 80 characters

Symbol or address.

small
integer
0
Allowed values: 0 1

1 = include pools under $10k TVL.

flagged
integer
0
Allowed values: 0 1

1 = include suspect pools.

category
string
Allowed values: stocks

Robinhood Chain (4663): pools with a tokenized stock or ETF on one side.

maxTvl
number

Range filters: every bound is inclusive, unset = off, and a row whose figure the index does not have fails a set bound.

minVol
number

Volume of the interval, dollars.

maxVol
number
minFees
number

Fees of the interval, dollars.

maxFees
number
minAgeH
number

Hours since the pool was created (since its first trade when the creation is unknown).

maxAgeH
number
minFeePct
number
<= 100

Fee tier in percent (0.3 = 30 bps).

maxFeePct
number
<= 100
limit
integer
default: 50 >= 1 <= 100
offset
integer
0 <= 5000
Media typeapplication/json
object
chain
integer
sort
string
interval
string
minTvl
number
flagged
boolean
category

Present when the list was narrowed to a category.

string
hidden

Rows removed by the filters.

integer
total
integer
limit
integer
offset
integer
pools
Array<object>
object
pool

A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.

string
/^0x([a-fA-F0-9]{40}|[a-fA-F0-9]{64})$/
dex
string
kind
string
Allowed values: v2 clmm v4
feeBps
number | null
hooks

EVM address, hex, case-insensitive.

string | null
/^0x[a-fA-F0-9]{40}$/
lpAccess

hooked = a V4 hook can refuse adds.

string
Allowed values: open hooked unknown
tickSpacing
integer | null
token0

A token as it appears inside a pool row.

object
address

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
symbol

Symbol from the contract, or null while unresolved.

string | null
decimals

ERC-20 decimals.

integer | null
logo

Logo URL, or null.

string | null
impostor

True when the symbol copies the chain’s anchor (a token called USDC that is not the USDC predeploy). Flagged, never hidden.

boolean
token1

A token as it appears inside a pool row.

object
address

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
symbol

Symbol from the contract, or null while unresolved.

string | null
decimals

ERC-20 decimals.

integer | null
logo

Logo URL, or null.

string | null
impostor

True when the symbol copies the chain’s anchor (a token called USDC that is not the USDC predeploy). Flagged, never hidden.

boolean
tokenSide

Which side is the non-anchor token (0 or 1).

integer | null
tvlUsd
number | null
tvlSrc

Where TVL came from (onchain, dexscreener, …).

string | null
tvlAt

Unix time, seconds, UTC.

integer | null
vol
object
h1
number
h6
number
h24
number
d7
number
fees

Volume × the pool’s fee tier.

object
h1
number | null
h6
number | null
h24
number | null
feeTvlPct

Fees ÷ TVL, percent.

object
h1
number | null
h6
number | null
h24
number | null
aprPct

24h fee/TVL × 365 — a full-range yardstick, not a promise.

number | null
trades24h
integer
wallets24h
integer
priceUsd
number | null
lpAdd24h
number
lpRemove24h
number
providers24h
integer
firstSeenTs

Unix time, seconds, UTC.

integer
createdTs

Unix time, seconds, UTC.

integer | null
lastTradeHour
integer
turnover24h

24h volume ÷ TVL.

number | null
suspect

Wash or launch-farm printing (volume without traders, dust TVL under real volume, turnover no honest pool reaches). Hidden by default; flagged=1 shows them.

boolean
score

0–100 health score (traders, TVL, yield sanity, LP flow, age, penalties).

integer
marketCapUsd

The tracked token’s price × its total supply on this chain (for a bridged token: what was bridged here). On the list only; null when the pool tracks neither side, the tracked side is the native coin, or the supply is not on record yet.

number | null
updatedAt

Unix time, milliseconds — when the server built this answer.

integer
Example
{
"chain": 5042,
"sort": "fee_tvl",
"interval": "24h",
"minTvl": 10000,
"flagged": false,
"hidden": 148,
"total": 1207,
"limit": 2,
"offset": 0,
"pools": [
{
"pool": "0xf53f02d9041d00bbd92235b4c902b9f350c554a8ed2dc64fa0a4585aac413f09",
"dex": "uniswap_v4",
"kind": "v4",
"feeBps": 98.8,
"hooks": null,
"lpAccess": "open",
"tickSpacing": 99,
"token0": {
"address": "0x3600000000000000000000000000000000000000",
"symbol": "USDC",
"decimals": 6,
"logo": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png?1769615602",
"impostor": false
},
"token1": {
"address": "0x8faae5592b9acc27a79fca745c6b872adf514a5d",
"symbol": "MURMUR",
"decimals": 18,
"logo": "https://cdn.dexscreener.com/cms/images/QUq-IqT1GLQNkxMx?width=800&height=800&quality=95&format=auto",
"impostor": false
},
"tokenSide": 1,
"tvlUsd": 12650.66,
"tvlSrc": "dexscreener",
"tvlAt": 1789891603,
"vol": {
"h1": 176.542824,
"h6": 38476.48885700001,
"h24": 184500.14476700005,
"d7": 279614.0964730001
},
"fees": {
"h1": 1.74424310112,
"h6": 380.1477099071601,
"h24": 1822.8614302979606
},
"feeTvlPct": {
"h1": 0.01378776365122452,
"h6": 3.0049634557182006,
"h24": 14.40921999562047
},
"aprPct": 5259.365298401472,
"trades24h": 3050,
"wallets24h": 131,
"priceUsd": 0.0007671677499328048,
"lpAdd24h": 10038.913414765322,
"lpRemove24h": 7583.743885515528,
"providers24h": 25,
"firstSeenTs": 1789693200,
"createdTs": 1789695461,
"lastTradeHour": 1789891200,
"turnover24h": 14.584230764798047,
"suspect": false,
"score": 54
},
{
"pool": "0x5e794e5d3d01c045ddfb2448c4afd557ec297d1dee49b28923dc0ada3425f780",
"dex": "uniswap_v4",
"kind": "v4",
"feeBps": 100,
"hooks": "0x863233bec01b92f137677e0cdf69bce697a26044",
"lpAccess": "open",
"tickSpacing": 200,
"token0": {
"address": "0x3600000000000000000000000000000000000000",
"symbol": "USDC",
"decimals": 6,
"logo": "https://coin-images.coingecko.com/coins/images/6319/large/USDC.png?1769615602",
"impostor": false
},
"token1": {
"address": "0xb7c934ff18730c24e6113bb4bc5a68feef16fd29",
"symbol": "ARCUS",
"decimals": 18,
"logo": "https://cdn.dexscreener.com/cms/images/5y5kHHeZlCoSxlaq?width=800&height=800&quality=95&format=auto",
"impostor": false
},
"tokenSide": 1,
"tvlUsd": 67762.97,
"tvlSrc": "dexscreener",
"tvlAt": 1789891603,
"vol": {
"h1": 1737.729194,
"h6": 98528.85847099999,
"h24": 738635.9835579997,
"d7": 1514816.5901679986
},
"fees": {
"h1": 17.377291940000003,
"h6": 985.2885847099998,
"h24": 7386.359835579997
},
"feeTvlPct": {
"h1": 0.025644230086137018,
"h6": 1.454022137326625,
"h24": 10.90028939932827
},
"aprPct": 3978.605630754819,
"trades24h": 5942,
"wallets24h": 353,
"priceUsd": 0.0004984252802693936,
"lpAdd24h": 960.0917324579016,
"lpRemove24h": 872.6609130846944,
"providers24h": 11,
"firstSeenTs": 1789567200,
"createdTs": 1789570672,
"lastTradeHour": 1789891200,
"turnover24h": 10.900289399328273,
"suspect": false,
"score": 62
}
],
"updatedAt": 1789891860349
}

Invalid parameters — error names the check that failed (INVALID_PARAMS, BAD_ADDRESS, BAD_LIMIT, BAD_HOURS, …).

Media typeapplication/json

Every non-2xx body.

object
error
required

Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.

string
message

For humans.

string
statusCode

HTTP status, when included.

integer
Example
{
"error": "INVALID_PARAMS",
"message": "amount must be an integer string in the token's smallest unit"
}

The lane behind this endpoint is not ready or not enabled here (NOT_READY, CHAIN_NOT_ENABLED, NOT_ENABLED, *_UNAVAILABLE). Retry later; do not treat it as an empty answer.

Media typeapplication/json

Every non-2xx body.

object
error
required

Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.

string
message

For humans.

string
statusCode

HTTP status, when included.

integer
Example
{
"error": "INVALID_PARAMS",
"message": "amount must be an integer string in the token's smallest unit"
}