Trader population per chain

GET
/wallets/stats

Population-level counts of the traders on each chain — the wallet counterpart of the chain header in /config. It is a separate call on purpose: these aggregates live in the wallet-analytics store, and folding them into the bootstrap config would put every page load behind them.

Omit chains for every chain whose wallet data is served.

Query Parameters

chains?array<>

comma-separated chain slugs or ids; omit for every served chain

Itemsitems <= 32

Header Parameters

Accept-Payment?string

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.

PAYMENT-SIGNATURE?string

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/wallets/stats"
{  "chains": [    {      "chain": {        "slug": "hyperliquid",        "chain_id": 0      },      "wallets_total": 0,      "new_wallets_24h": 0,      "active_wallets_24h": 0,      "human_wallets": 0,      "bot_wallets": 0,      "wash_traders": 0,      "snipers": 0,      "copy_eligible": 0,      "scammers_total": 0,      "scammers_24h": 0,      "profitable_wallets_24h": 0,      "losing_wallets_24h": 0,      "realized_pnl_24h": 0.1,      "volume_24h": 0.1,      "trades_24h": 0,      "top_gainer_24h": {        "address": "string",        "value": 0.1      },      "top_loser_24h": {        "address": "string",        "value": 0.1      },      "favorite_token_24h": {        "token_address": "string",        "symbol": "string",        "buys": 0,        "buy_usd": 0.1,        "buyers": 0      }    }  ]}