Skip to content

Search tokens on a chain

GET
/tokens/search
curl --request GET \
--url 'https://api.getchord.xyz/v1/tokens/search?q=example&chain=4663&limit=8'

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.

q
required
string
>= 1 characters <= 64 characters

Symbol, name or address fragment.

chain
integer
default: 143
Allowed values: 4663 5042 43114 8453 56 42161 1 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
integer
default: 8 >= 1 <= 25

Rows to return, clamped to 1–25. Ignored in Monad mode.

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

Media typeapplication/json
object
chain

The chain searched. Absent in Monad mode.

integer
q

The query as received. Absent in Monad mode.

string
tokens
required
Array<object>
object
address
required

EVM address, hex, case-insensitive.

string
/^0x[a-fA-F0-9]{40}$/
symbol
required
string
name
required
string
decimals
required

ERC-20 decimals. Null for an off-list token whose decimals are not resolved yet.

integer | null
logoURI

Logo URL when known. Absent on off-list Robinhood Chain rows.

string | null
verified
required

On the chain’s curated list. False = found by the index or by discovery, not vetted.

boolean
tags

stock, stablecoin, … from the curated list (Robinhood Chain); meme in Monad mode. Absent when empty.

Array<string>
liquidityUsd

Monad mode only: liquidity of the deepest DexScreener pair.

number | null
Example
{
"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"
]
}
]
}

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.

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

CHAIN_NOT_PUBLIC: the chain is not public yet and the request has no X-API-Key.

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