vike

Token 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 is 0x-prefixed lower-case hex

It pipes straight into /tokens/{token_address}/holders and /tokens/{token_address}/transfers. Before 2026-10-19 it came back as bare hex without the 0x, and both routes still accept either spelling; a caller that prepends 0x itself should test for the prefix first.

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. On hyperevm the registry this route searches holds about 50 tokens, so no match there can mean the token is not in it.

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 0x-prefixed, so it goes straight into their path
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'
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 | hyperevm. Default ethereum
limitqueryoptional
Default 10, max 100

The complete response, captured 2026-09-03 and shown with the 0x prefix the route has served since 2026-10-19. limit=3, but only one token matched USDC.

Example response
[
  {
    "symbol": "USDC",
    "name": "USD Coin",
    "token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
    "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.

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