# Search tokens on a chain

`GET https://api.getchord.xyz/v1/tokens/search`

Source: https://getchord.xyz/docs/api-reference/operations/searchtokens/

Symbol, name or address. What it searches depends on `chain`:

- `4663` Robinhood Chain: the curated list (`verified: true`, stocks tagged `stock`) plus tokens that traded in the last 24 hours and are not on it (`verified: false`, no logo).
- `5042` Arc: every token traded in the last 24 hours, the same index as `/arc/tokens/search`. `verified` is true for tokens on the curated Arc list.
- `43114` / `8453` / `56` / `42161` / `1`: that chain's token list, all `verified: true`. A chain that is not public yet answers `404 CHAIN_NOT_PUBLIC` unless the request carries an `X-API-Key`.
- no `chain`, or `143`: Monad off-list discovery. Tokens found through DexScreener that are **not** on the curated Monad list, with a logo and on-chain decimals, all `verified: false`. This mode answers `{ tokens }` only, returns up to 8 rows whatever `limit` says, and returns an empty list for a query under 2 characters.

Ranking: the exact address, then the exact symbol, a symbol prefix, a name prefix, then any substring; verified rows first within a rank, one row per address. A leading `$` is ignored. Treat `verified: false` as unvetted and check the address before trading it.

**Arc**: `/arc/tokens/search` returns full board rows (price, volume, pools, flags) for the same query.

## Parameters

| Name | In | Required | Type | Description |
| --- | --- | --- | --- | --- |
| `q` | query | yes | string | Symbol, name or address fragment. |
| `chain` | query | no | `4663` · `5042` · `43114` · `8453` · `56` · `42161` · `1` · `143` (default `143`) | Chain id: `4663` Robinhood Chain · `5042` Arc · `43114` Avalanche C-Chain · `8453` Base · `56` BNB Chain · `42161` Arbitrum One · `1` Ethereum · `143` Monad. Omitted = 143. Pass the chain you want: the default is Monad off-list discovery. |
| `limit` | query | no | integer (default `8`) | Rows to return, clamped to 1–25. Ignored in Monad mode. |

## Response 200

Matches, best first. An empty `tokens` is a real answer.

Example (captured from the live API):

```json
{
  "chain": 4663,
  "q": "NVDA",
  "tokens": [
    {
      "address": "0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC",
      "symbol": "NVDA",
      "name": "NVIDIA • Robinhood Token",
      "decimals": 18,
      "logoURI": "https://cdn.robinhood.com/ncw_assets/logos/0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec.png",
      "verified": true,
      "tags": [
        "stock"
      ]
    }
  ]
}
```

- **400**: `BAD_CHAIN` (a chain this route does not search) or `BAD_QUERY` (`q` empty or longer than 64 characters). Monad mode does not validate `q`.
- **404**: `CHAIN_NOT_PUBLIC`: the chain is not public yet and the request has no `X-API-Key`.
