---
title: "Every token traded in the last 24 hours"
method: GET
path: "/arc/tokens"
tags: ["Arc data"]
---

# Every token traded in the last 24 hours

`GET /arc/tokens`

## Request

- Base URL: `https://api.getchord.xyz/v1`
- URL: `https://api.getchord.xyz/v1/arc/tokens`
- Auth: none declared

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.

## Query parameters

- `limit` integer
- `offset` integer
- `sort` 'volume' | 'trades' | 'traders' | 'change' | 'mcap'
- `includeUnlisted` 0 | 1

## Response `200`

- object
  - `chain` 5042
  - `sinceHour` integer
  - `tradersSince` integer: Start of the trader-count window.
  - `sort` string
  - `offset` integer
  - `tokens` ArcTokenRow[]
    - `address` string: EVM address, hex, case-insensitive.
    - `symbol` string, nullable
    - `name` string, nullable
    - `decimals` integer, nullable
    - `logoURI` string, nullable: Logo through Chord's proxy (`/v1/logo/5042/{address}`, 128 px WebP).
    - `logoUriRaw` string, nullable: The upstream logo URL the proxy fetched, when there is one.
    - `tags` string[]: `stablecoin`, `fx`, `stock`, … — from the curated list; empty for unlisted tokens.
    - `listed` boolean: On the curated Arc token list (metadata and logo vetted).
    - `priceUsd` number, nullable: Last trade price on the token's dominant venue, USD.
    - `change24hPct` number, nullable
    - `volume24h` number: USD, every venue, no dust floor.
    - `buyVolume24h` number
    - `sellVolume24h` number
    - `trades24h` integer
    - `buys24h` integer
    - `sells24h` integer
    - `traders` integer: Distinct attributed wallets over the board's day window. Routers, executors and bots are not wallets.
    - `lastTradeTs` integer: Unix time, seconds, UTC.
    - `totalSupply` number, nullable: `totalSupply()` in whole tokens. Null when unreadable.
    - `marketCapUsd` number, nullable: totalSupply × price — fully diluted, since nothing on-chain says what is locked.
    - `pools` object: Indexed pools holding the token.
      - `v3` integer
      - `v2` integer
      - `v4` integer
      - `byDex` object: Pool count per venue id (`uniswap_v3`, `uniswap_v4`, `pools_trade`, `slipstream_fork`, `v3fork_<8hex>`, …).
    - `routable` boolean: The engine can quote this token today (at least one pool against a routing anchor).
    - `flags` string[]: Honesty flags. `wash` = a day's volume carried by one or two wallets; `impostor` = an unlisted token wearing a listed symbol. Absent when clean.
  - `total` integer
  - `updatedAt` integer: Unix time, milliseconds — when the server built this answer.

## Other responses

- `400`: Invalid parameters — `error` names the check that failed (`INVALID_PARAMS`, `BAD_ADDRESS`, `BAD_LIMIT`, `BAD_HOURS`, …).
- `503`: 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.

---

[API](https://skmtc.dev/getchord/apis/chord-api.md) · [All operations](https://skmtc.dev/getchord/apis/chord-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getchord/apis/chord-api/revisions/d3bc4640fea0?raw)
