Search tokens
const url = 'https://api.getchord.xyz/v1/arc/tokens/search?q=example&limit=20';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/search?q=example&limit=20'Symbol, name or address over every token traded in the last 24 hours. Exact symbol first, then prefix, then name, then substring; listed tokens and volume break ties so the real ARGUS outranks a same-named copy. A pasted contract address always returns that token, even with no 24-hour row. coverage says how many tokens have a resolved name yet (about a minute after a boot).
Parameters
Section titled “ Parameters ”Query Parameters
Section titled “Query Parameters”Symbol, name or address fragment.
Responses
Section titled “ Responses ”object
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.
object
Unix time, milliseconds — when the server built this answer.
Example
{ "chain": 5042, "q": "argus", "tokens": [ { "address": "0xece5ca8bf9220718e5727754026757512212cb3c", "symbol": "ARGUS", "name": "Argus", "decimals": 18, "logoURI": "https://api.getchord.xyz/v1/logo/5042/0xece5ca8bf9220718e5727754026757512212cb3c", "tags": [], "listed": true, "priceUsd": 0.018829227933149367, "change24hPct": 10.31671479507974, "volume24h": 4045502.7263479983, "buyVolume24h": 2085285.1237909999, "sellVolume24h": 1960217.6025569995, "trades24h": 25431, "buys24h": 13691, "sells24h": 11740, "traders": 4548, "lastTradeTs": 1789890980, "totalSupply": null, "marketCapUsd": null, "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": 1, "coverage": { "resolved": 240, "total": 6270 }, "updatedAt": 1789891854005}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"}