Pools ranked for a liquidity provider
const 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';const options = {method: 'GET'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Chain id: 5042 Arc · 4663 Robinhood Chain · 143 Monad.
Window the fee/TVL sort uses.
Default 10000 unless small=1.
Anchor symbol filter (e.g. USDC).
Venue id filter.
Symbol or address.
1 = include pools under $10k TVL.
1 = include suspect pools.
Robinhood Chain (4663): pools with a tokenized stock or ETF on one side.
Range filters: every bound is inclusive, unset = off, and a row whose figure the index does not have fails a set bound.
Volume of the interval, dollars.
Fees of the interval, dollars.
Hours since the pool was created (since its first trade when the creation is unknown).
Fee tier in percent (0.3 = 30 bps).
Responses
Section titled “ Responses ”object
Present when the list was narrowed to a category.
Rows removed by the filters.
object
A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.
EVM address, hex, case-insensitive.
hooked = a V4 hook can refuse adds.
A token as it appears inside a pool row.
object
EVM address, hex, case-insensitive.
Symbol from the contract, or null while unresolved.
ERC-20 decimals.
Logo URL, or null.
True when the symbol copies the chain’s anchor (a token called USDC that is not the USDC predeploy). Flagged, never hidden.
A token as it appears inside a pool row.
object
EVM address, hex, case-insensitive.
Symbol from the contract, or null while unresolved.
ERC-20 decimals.
Logo URL, or null.
True when the symbol copies the chain’s anchor (a token called USDC that is not the USDC predeploy). Flagged, never hidden.
Which side is the non-anchor token (0 or 1).
Where TVL came from (onchain, dexscreener, …).
Unix time, seconds, UTC.
object
Volume × the pool’s fee tier.
object
Fees ÷ TVL, percent.
object
24h fee/TVL × 365 — a full-range yardstick, not a promise.
Unix time, seconds, UTC.
Unix time, seconds, UTC.
24h volume ÷ TVL.
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.
0–100 health score (traders, TVL, yield sanity, LP flow, age, penalties).
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.
Unix time, milliseconds — when the server built this answer.
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, …).
Every non-2xx body.
object
Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.
For humans.
HTTP status, when included.
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.
Every non-2xx body.
object
Stable machine code, e.g. INVALID_PARAMS, NOT_READY, RATE_LIMIT_EXCEEDED.
For humans.
HTTP status, when included.
Example
{ "error": "INVALID_PARAMS", "message": "amount must be an integer string in the token's smallest unit"}