vike
API EndpointsOn-chain

/tokens/{token_address}/holders

The holder leaderboard for a token, ranked by cumulative net inflow USD.

GET https://data.vike.io/v1/onchain/tokens/{token_address}/holders

The holder leaderboard for a token, ranked by cumulative net inflow USD. Returns wallet, net flow USD, volume USD, transaction count, first and last seen dates, and known labels.

The capture makes the warning below concrete. Every one of the top three USDC "holders" is an intermediary, not an owner: a Coinbase wallet, the Morpho lending protocol and an MEV bot. The second row moved 11.3 trillion USD of volume to net 45.5 billion — a ratio that only makes sense for a contract money passes through. Read this route as who moves the most of this token, and use /wallets/{address}/balances when you mean who holds it.

Note entity and wallet_type are populated on all three rows here (coinbase/cex, morpho/defi, mev bot/mev), which is what makes the list interpretable — an unlabelled address at the top of this ranking tells you very little on its own.

cURL
# the wallets with the largest accumulated net inflow of USDC over our transfer history: the top three
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holders?limit=3"

# the longest ranking the route serves: 50 rows, whatever larger limit you send
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holders?limit=50"

# the same ranking for another token: WETH
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/holders?limit=10"

# a token on BSC: TOKEN is a token_address from /tokens/search?chain=bsc (bare or 0x-prefixed), since the address has to be the one on that chain
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/$TOKEN/holders?chain=bsc&limit=10"

# the unlabelled addresses in the ranking, the ones that need a second look
curl -s -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holders?limit=50" \
  | jq '[.[] | select((.entity // "") == "") | {wallet, net_flow_usd, volume_usd}]'

# the ranking is net flow over our transfer history, not a balance: WALLET is a wallet from it, whose current holdings the balances route reads from the chain
curl -H "X-API-Key: $VIKE_API_KEY" \
  "https://data.vike.io/v1/onchain/wallets/$WALLET/balances?min_usd=1000"
token_addresspathrequired
Token contract address, 0x-prefixed
chainqueryoptional
ethereum | bsc | base. Default ethereum
limitqueryoptional
Route default 50; applied cap 50

The USDC holder leaderboard, captured 2026-09-03 — the complete response for limit=3.

Example response
[
  {
    "wallet": "0xa9d1e08c7793af67e9d92fe308d5697fb81d3e43",
    "net_flow_usd": 85269157826.77954,
    "volume_usd": 1920884159776.6255,
    "tx_count": 11431454,
    "first_seen": "2022-07-19",
    "last_active": "2026-09-03",
    "entity": "coinbase",
    "wallet_type": "cex"
  },
  {
    "wallet": "0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb",
    "net_flow_usd": 45553365504.30071,
    "volume_usd": 11301542548648.928,
    "tx_count": 2150944,
    "first_seen": "2024-01-03",
    "last_active": "2026-09-03",
    "entity": "morpho",
    "wallet_type": "defi"
  },
  {
    "wallet": "0x06cff7088619c7178f5e14f0b119458d08d2f5ef",
    "net_flow_usd": 27999681851.978294,
    "volume_usd": 5320232364455.69,
    "tx_count": 641309,
    "first_seen": "2025-02-06",
    "last_active": "2026-09-03",
    "entity": "mev bot",
    "wallet_type": "mev"
  }
]

Ranked by accumulated net inflow, not by current balance

The ranking is net inflow accumulated over our recorded transfer history, not current on-chain balance. A wallet that accumulated and then exited still ranks by what it moved through. For the present holdings of one specific wallet, use /wallets/{address}/balances.

cURL
# the wallets with the largest accumulated net inflow of USDC over our transfer history: the top threecurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holders?limit=3"# the longest ranking the route serves: 50 rows, whatever larger limit you sendcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holders?limit=50"# the same ranking for another token: WETHcurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2/holders?limit=10"# a token on BSC: TOKEN is a token_address from /tokens/search?chain=bsc (bare or 0x-prefixed), since the address has to be the one on that chaincurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/$TOKEN/holders?chain=bsc&limit=10"# the unlabelled addresses in the ranking, the ones that need a second lookcurl -s -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/tokens/0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48/holders?limit=50" \  | jq '[.[] | select((.entity // "") == "") | {wallet, net_flow_usd, volume_usd}]'# the ranking is net flow over our transfer history, not a balance: WALLET is a wallet from it, whose current holdings the balances route reads from the chaincurl -H "X-API-Key: $VIKE_API_KEY" \  "https://data.vike.io/v1/onchain/wallets/$WALLET/balances?min_usd=1000"
Example response
[  {    "wallet": "0xa9d1e08c7793af67e9d92fe308d5697fb81d3e43",    "net_flow_usd": 85269157826.77954,    "volume_usd": 1920884159776.6255,    "tx_count": 11431454,    "first_seen": "2022-07-19",    "last_active": "2026-09-03",    "entity": "coinbase",    "wallet_type": "cex"  },  {    "wallet": "0xbbbbbbbbbb9cc5e90e3b3af64bdaf62c37eeffcb",    "net_flow_usd": 45553365504.30071,    "volume_usd": 11301542548648.928,    "tx_count": 2150944,    "first_seen": "2024-01-03",    "last_active": "2026-09-03",    "entity": "morpho",    "wallet_type": "defi"  },  {    "wallet": "0x06cff7088619c7178f5e14f0b119458d08d2f5ef",    "net_flow_usd": 27999681851.978294,    "volume_usd": 5320232364455.69,    "tx_count": 641309,    "first_seen": "2025-02-06",    "last_active": "2026-09-03",    "entity": "mev bot",    "wallet_type": "mev"  }]