Every token traded in the last 24 hours
const url = 'https://api.getchord.xyz/v1/arc/tokens?limit=100&offset=0&sort=volume&includeUnlisted=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/arc/tokens?limit=100&offset=0&sort=volume&includeUnlisted=0'The Markets board: price, change, volume split, trade counts, attributed traders, market cap, pool counts per venue and honesty flags for every token that traded on Arc in the last 24 hours — listed or not. Rows flagged wash or impostor sort below clean rows.
Use it for: a markets table, a screener, “what is moving on Arc”. For a single token use /arc/token/{address}; for search use /arc/tokens/search.
Served from Chord’s rollup and index tables (every swap on Arc summed by hour, token and venue), never from a raw scan — so calls are cheap and every answer carries its coverage. No key needed. 503 NOT_READY until the rollup has run on the deployment.
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Descending.
1 = include tokens without curated metadata or a logo.
Responses
Section titled “ Responses ”object
Start of the trader-count window.
One token on Arc with its 24-hour tape.
object
EVM address, hex, case-insensitive.
Logo through Chord’s proxy (/v1/logo/5042/{address}, 128 px WebP).
The upstream logo URL the proxy fetched, when there is one.
stablecoin, fx, stock, … — from the curated list; empty for unlisted tokens.
On the curated Arc token list (metadata and logo vetted).
Last trade price on the token’s dominant venue, USD.
USD, every venue, no dust floor.
Distinct attributed wallets over the board’s day window. Routers, executors and bots are not wallets.
Unix time, seconds, UTC.
totalSupply() in whole tokens. Null when unreadable.
TotalSupply × price — fully diluted, since nothing on-chain says what is locked.
Indexed pools holding the token.
object
Pool count per venue id (uniswap_v3, uniswap_v4, pools_trade, slipstream_fork, v3fork_<8hex>, …).
object
The engine can quote this token today (at least one pool against a routing anchor).
Honesty flags. wash = a day’s volume carried by one or two wallets; impostor = an unlisted token wearing a listed symbol. Absent when clean.
Unix time, milliseconds — when the server built this answer.
Example
{ "chain": 5042, "sinceHour": 1789808400, "tradersSince": 1789776000, "sort": "volume", "offset": 0, "tokens": [ { "address": "0x171a4217b86a807a64eb94757db6849fb4bdbaa0", "symbol": "cirBTC", "name": "cirBTC", "decimals": 8, "logoURI": "https://api.getchord.xyz/v1/logo/5042/0x171a4217b86a807a64eb94757db6849fb4bdbaa0", "tags": [], "listed": true, "priceUsd": 80423.22925858323, "change24hPct": -1.0826513878648192, "volume24h": 5689551.810770997, "buyVolume24h": 2765666.247710997, "sellVolume24h": 2923885.56306, "trades24h": 19472, "buys24h": 10554, "sells24h": 8918, "traders": 3203, "lastTradeTs": 1789891845, "totalSupply": 336.81495614, "marketCapUsd": 27087746.435366876, "pools": { "v3": 21, "v2": 5, "v4": 483, "byDex": { "uniswap_v3": 10, "v2fork_a2448256": 1, "slipstream_fork": 2, "v3fork_5bfbceb7": 6, "v3fork_bb74f231": 2, "v2fork_49aa1c63": 2, "v3fork_711492df": 1, "sushi_v2": 2, "uniswap_v4": 483 } }, "routable": true, "logoUriRaw": "https://raw.githubusercontent.com/trustwallet/assets/master/blockchains/bitcoin/info/logo.png" }, { "address": "0xece5ca8bf9220718e5727754026757512212cb3c", "symbol": "ARGUS", "name": "Argus", "decimals": 18, "logoURI": "https://api.getchord.xyz/v1/logo/5042/0xece5ca8bf9220718e5727754026757512212cb3c", "tags": [], "listed": true, "priceUsd": 0.01923385111168061, "change24hPct": 12.687321807963436, "volume24h": 4051551.451917998, "buyVolume24h": 2089331.6579039998, "sellVolume24h": 1962219.7940139996, "trades24h": 25479, "buys24h": 13716, "sells24h": 11763, "traders": 4549, "lastTradeTs": 1789891399, "totalSupply": 1000000000, "marketCapUsd": 19233851.11168061, "pools": { "v3": 15, "v2": 5, "v4": 1141, "byDex": { "uniswap_v3": 12, "v2fork_e64d552a": 1, "v2fork_a1a044ff": 1, "v3fork_cae668d0": 1, "uniswap_v2": 1, "v3fork_aa5865dc": 1, "synthra_v3": 1, "sushi_v2": 2, "uniswap_v4": 1141 } }, "routable": true, "logoUriRaw": "https://coin-images.coingecko.com/coins/images/102178392/large/argus-token.png?1789463380" } ], "total": 1528, "updatedAt": 1789891853851}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"}