Token screener
Find tokens by activity within a window — rank by volume, net inflow, holder count or smart-money inflow.
GET https://data.vike.io/v1/onchain/tokens/screenerFind tokens by activity within a window — rank by volume, net inflow, holder count or smart-money inflow, with floors on volume and holder count and a smart-money-only toggle.
symbol and name come from our token registry, or are null
Each row's symbol and name are read from the tokens we map: on 2026-10-24 the same screen returned USDC /
USD Coin, WBTC and USDT. A token we do not map, and the native coin, comes back with both null, so key your
own data on token_address, never on symbol. A symbol can also repeat across chains with a different address.
net_flow_usd is supply minted minus burned, not buying pressure
Every transfer between two wallets counts once as inflow and once as outflow, and transfers from or to the zero
address count on neither side. So across all wallets a token's net_flow_usd is the USD value minted on the chain
in the window minus the value burned there. A 0.0, as for WBTC and WETH in the example, means no transfer from or
to the zero address was recorded in the window, not a quiet token. volume_usd is in_usd plus out_usd, so it counts every transfer
twice. With smart_money_only=true or sort=smart_inflow, the figures are the cohort's own: what its wallets
received minus what they sent.
A window is whole calendar dates
window counts UTC dates back from today: 24h is yesterday and today, so up to about 48 hours late in the day,
and 7d is today plus the 7 dates before it.
The native coin ranks as the zero address
ETH is screened too, as token_address 0x0000000000000000000000000000000000000000. On 2026-10-18
it was the first row for sort=smart_inflow&window=7d. It is not a contract, and
/tokens/{token_address}/transfers returns
no buyers for it, so skip it before you drill into a screened token.
# the default screen: the busiest tokens by volume, three of them, over the 24h window (a window is counted in calendar dates, so 24h spans yesterday and today: up to about 48 hours)
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/tokens/screener?limit=3&window=24h"
# which tokens took the biggest net inflow over 7d, largest first (net_flow_usd is minted minus burned, so 0 means neither happened)
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/tokens/screener?sort=net_inflow&window=7d&limit=20"
# the same ranking counting only the smart-money cohort's flow
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/tokens/screener?sort=smart_inflow&window=7d&limit=20"
# volume among smart-money wallets only, the cohort filter without changing the sort
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/tokens/screener?smart_money_only=true&sort=volume&window=30d&limit=20"
# drop thin tokens: at least 1,000,000 USD of volume and 500 distinct wallets active in the window, ranked by wallet count
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/tokens/screener?sort=holders&min_volume_usd=1000000&min_holders=500&window=7d&limit=25"
# the same screen on BSC
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/tokens/screener?chain=bsc&sort=volume&window=24h&limit=10"
# the widest screen the route serves: limit=500 is accepted and applied as 100
curl -H "X-API-Key: $VIKE_API_KEY" \
"https://data.vike.io/v1/onchain/tokens/screener?sort=volume&window=90d&limit=500"chainqueryoptionalethereum | bsc | base | hyperevm. Default ethereumwindowqueryoptional24h | 7d | 30d | 90d. Default 24hsortqueryoptionalvolume | net_inflow | holders | smart_inflow. Default volume. smart_inflow is ethereum onlymin_volume_usdqueryoptionalmin_holdersqueryoptionalsmart_money_onlyqueryoptionalethereum only: any other chain is a 400limitqueryoptionalThe complete response for limit=3, captured 2026-09-03, is a bare array. It predates the registry names, so
symbol is empty and name is null on every row; these three tokens now come back named.
[
{
"token_address": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"symbol": "",
"name": null,
"volume_usd": 137340073415.62,
"net_flow_usd": -36603751.18,
"in_usd": 68651734832.22,
"out_usd": 68688338583.4,
"unique_holders": 262663,
"tx_count": 1706155
},
{
"token_address": "0x2260fac5e5542a773aa44fbcfedf7c193bc2c599",
"symbol": "",
"name": null,
"volume_usd": 127606890479.48,
"net_flow_usd": 0.0,
"in_usd": 63803445239.74,
"out_usd": 63803445239.74,
"unique_holders": 2785,
"tx_count": 72340
},
{
"token_address": "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2",
"symbol": "",
"name": null,
"volume_usd": 107747906503.82,
"net_flow_usd": 0.0,
"in_usd": 53873953251.91,
"out_usd": 53873953251.91,
"unique_holders": 17781,
"tx_count": 775235
}
]