Skip to content

Every token traded in the last 24 hours

GET
/arc/tokens
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.

limit
integer
default: 100 >= 1 <= 500
offset
integer
0 <= 20000
sort
string
default: volume
Allowed values: volume trades traders change mcap

Descending.

includeUnlisted
integer
0
Allowed values: 0 1

1 = include tokens without curated metadata or a logo.

Media typeapplication/json
object
chain
integer
Allowed value: 5042
sinceHour
integer
tradersSince

Start of the trader-count window.

integer
sort
string
offset
integer
tokens
Array<object>

One token on Arc with its 24-hour tape.

object
address

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
symbol
string | null
name
string | null
decimals
integer | null
logoURI

Logo through Chord’s proxy (/v1/logo/5042/{address}, 128 px WebP).

string | null
logoUriRaw

The upstream logo URL the proxy fetched, when there is one.

string | null
tags

stablecoin, fx, stock, … — from the curated list; empty for unlisted tokens.

Array<string>
listed

On the curated Arc token list (metadata and logo vetted).

boolean
priceUsd

Last trade price on the token’s dominant venue, USD.

number | null
change24hPct
number | null
volume24h

USD, every venue, no dust floor.

number
buyVolume24h
number
sellVolume24h
number
trades24h
integer
buys24h
integer
sells24h
integer
traders

Distinct attributed wallets over the board’s day window. Routers, executors and bots are not wallets.

integer
lastTradeTs

Unix time, seconds, UTC.

integer
totalSupply

totalSupply() in whole tokens. Null when unreadable.

number | null
marketCapUsd

TotalSupply × price — fully diluted, since nothing on-chain says what is locked.

number | null
pools

Indexed pools holding the token.

object
v3
integer
v2
integer
v4
integer
byDex

Pool count per venue id (uniswap_v3, uniswap_v4, pools_trade, slipstream_fork, v3fork_<8hex>, …).

object
key
additional properties
integer
routable

The engine can quote this token today (at least one pool against a routing anchor).

boolean
flags

Honesty flags. wash = a day’s volume carried by one or two wallets; impostor = an unlisted token wearing a listed symbol. Absent when clean.

Array<string>
Allowed values: wash impostor
total
integer
updatedAt

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

integer
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, …).

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"
}