vike
API EndpointsOn-chain

/tokens/search

Resolve a symbol or name to the tokens we know about.

GET https://data.vike.io/v1/onchain/tokens/search

Resolve a symbol or name to the tokens we know about. The entry point for the two address-keyed routes — /tokens/{token_address}/transfers and /tokens/{token_address}/holders.

token_address comes back without the 0x prefix

Every other address in this namespace is printed 0x-prefixed, and the two routes that consume this field — /tokens/{token_address}/holders and /tokens/{token_address}/transfers — document their path parameter as "0x-prefixed". Both strip a 0x prefix before the lookup, so the bare form pipes straight in; prepending 0x is the convention, and the safe habit if you store or compare the value elsewhere.

Every matching token is returned, ranked, not only the exact match

The search scores every token on the chain it reads — an exact symbol first, then symbols that start with the text, symbols that contain it, then names — and returns the best limit. q=USDC with limit=3 returned a single token because only one matched, so a short result means few matches, not truncation, and a limit above the match count costs nothing. Only one chain's list is read per call, so this route will not by itself warn you about symbol collisions across chains — pass chain explicitly when the symbol is ambiguous.

cURL
# resolve a ticker to the token you mean before calling a token route
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/search?q=USDC&limit=3"

# look a token up by name when you do not know the ticker (%20 is the space)
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/search?q=Wrapped%20Ether&limit=5"

# a short symbol returns a ranked list: an exact symbol match first, then symbols that start with it, then symbols that contain it, then name matches
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/search?q=ETH&limit=10"

# the same ticker on BSC: the search reads one chain's token list at a time, so the addresses it returns are that chain's
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/search?q=USDC&chain=bsc&limit=3"

# the address for the token routes: it comes back bare and they accept it bare, so prepending 0x is only the usual convention
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/search?q=USDC&limit=1" \
  | jq -r '.[0].token_address | "0x" + .'
qqueryrequired
Symbol or name (case-insensitive); an exact symbol ranks first, then symbol prefix, symbol substring, name prefix. A contract address is not matched
chainqueryoptional
ethereum | bsc | base. Default ethereum
limitqueryoptional
Default 10, max 100

The complete response, captured 2026-09-03. limit=3, but only one token matched USDC.

Example response
[
  {
    "symbol": "USDC",
    "name": "USD Coin",
    "token_address": "a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "logo": "https://pub-468f7b552e104638ac0daeddde8a6aab.r2.dev/logos/coins/USDC.png"
  }
]

The parameter is q here and query on the MCP tool

Same search, different spelling. This is also the only endpoint in the namespace that MCP prices at 0 credits; over REST it logs 1 like every other route.

cURL
# resolve a ticker to the token you mean before calling a token routecurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/search?q=USDC&limit=3"# look a token up by name when you do not know the ticker (%20 is the space)curl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/search?q=Wrapped%20Ether&limit=5"# a short symbol returns a ranked list: an exact symbol match first, then symbols that start with it, then symbols that contain it, then name matchescurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/search?q=ETH&limit=10"# the same ticker on BSC: the search reads one chain's token list at a time, so the addresses it returns are that chain'scurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/search?q=USDC&chain=bsc&limit=3"# the address for the token routes: it comes back bare and they accept it bare, so prepending 0x is only the usual conventioncurl -s -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/search?q=USDC&limit=1" \  | jq -r '.[0].token_address | "0x" + .'
Example response
[  {    "symbol": "USDC",    "name": "USD Coin",    "token_address": "a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",    "logo": "https://pub-468f7b552e104638ac0daeddde8a6aab.r2.dev/logos/coins/USDC.png"  }]