Wallets that traded a token, with their PNL on it
Every wallet with a position in the token, open or closed, ranked by realized PNL unless sort says otherwise. Figures are lifetime on this token; there is no time window yet.
Path Parameters
chain slug (ton) or numeric chain id (950000)
1 <= length <= 32chain-native address; EVM addresses are case-insensitive
1 <= length <= 128Query Parameters
ranking key
"realized_pnl"Value in
- "realized_pnl"
- "bought"
- "holding"
"any"Value in
- "any"
- "open"
- "closed"
page size; plans above startup may raise the ceiling
int321 <= value <= 10010opaque cursor from next_cursor or prev_cursor
length <= 512Header Parameters
payment methods the client can use, comma-separated, case-insensitive. With x402 in the list, a spent keyless budget answers 402 with the x402 challenge instead of 429.
base64 x402 v2 payment payload for this request. A paid request skips the keyless budget and is settled only when it answers 2xx. The v1 header X-PAYMENT is accepted too.
Response Body
application/json
application/problem+json
application/problem+json
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X GET "https://example.com/chains/string/tokens/string/traders"{ "items": [ { "address": "string", "tier": "string", "wallet_type": "unknown", "labels": [ { "kind": 0, "name": "string", "confidence": 0.1, "token_address": "string" } ], "realized_pnl_usd": 0.1, "unrealized_pnl_usd": 0.1, "bought_usd": 0.1, "sold_usd": 0.1, "balance": 0.1, "buys": 0, "sells": 0, "avg_entry_price": 0.1, "avg_exit_price": 0.1, "first_buy_at": "string", "last_sell_at": "string", "exited": true } ], "next_cursor": "string", "prev_cursor": "string"}Top holders of a token GET
Wallets holding the token now, largest balance first, with their labels. Balances are the positions avee reconstructs from swaps and transfers it indexes, so a wallet that only ever received the token outside an indexed venue can be missing. `holder_stats` — count and top-ten share from the holder sweep, the same block the token carries — rides on the first page only.
Yield farm screener GET
MasterChef-family staking pools keyed by `(chain, address, pid)`, with total value locked, the reward token and both the yearly and daily APR decomposition. Every row carries the verification `status` of the farm contract, so an unverified pool is never read as a confirmed yield, and `updated_at` is the indexer's own observation time — treat a stale value as stale data, not as a fresh zero. The farm indexer serves one chain per query, so naming several chains fans out one query per chain and merges the results here. A merged page is globally ordered by `sort` when it is set and grouped chain by chain in the order given when it is not; `cursor` round-trips as usual, but a merged page carries no `prev_cursor` because the indexer cannot page backwards from a position it never handed out. A single chain is unaffected in every respect.