Live token holders over WebSocket
The holders channel: a token's largest 100 holders, the token holders answer, sent again each time it changes.
Subscribe to holders with token. The first message after subscribed is the token holders answer for the token's 100 largest holders, and again each time it changes. Each message replaces the one before: there are no deltas to merge.
Subscribe:
{"op":"subscribe","id":"h","channel":"holders","chain":"evm:56","token":"0x0e09fabb73bd3ade0a17ecc321fd13a19e81ce82"}
| Chain | Rebuilt |
|---|---|
| BSC | After each indexed block whose transfers move the token, at most once a second. |
| Solana | After each indexed swap of the token, at most every 5 s: each rebuild reads the chain (at most once a minute). |
| Both | Every 30 s regardless: prices and PnL move, and Solana transfers outside DEX transactions are not indexed. |
Captured on a test instance, trimmed to 2 holders:
{"type":"subscribed","id":"h1","channel":"holders","chain":"evm:56","token":"0xa9fcda9bd321adeb7cbbbd30ef2dd0ed1d657777"}
{
"id": "h1",
"type": "holders",
"data": {
"chain": "evm:56",
"token": {
"address": "0xa9fcda9bd321adeb7cbbbd30ef2dd0ed1d657777",
"symbol": "TAX",
"name": "Tax Token",
"decimals": 18
},
"source": "indexed-transfers",
"complete": true,
"coverage": "Every holder: the index holds the token's whole history, and its largest balances match the chain.",
"indexedSince": 1790546261920,
"block": 1000750,
"supply": "1000000000",
"priceUsd": 0.006,
"count": 13,
"top10Share": 0.30015722,
"holders": [
{
"address": "0x702e6533e0182381606adbe3ccbb77f682ccc58b",
"balance": "699837340",
"share": 0.69983734,
"valueUsd": 4199024.04,
"tags": [
"pool"
],
"labels": [],
"position": null
},
{
"address": "0x0f325bd174c70440fa62c31dce9f69d54baf717e",
"balance": "200000000",
"share": 0.2,
"valueUsd": 1200000,
"tags": [
"creator"
],
"labels": [
"creator"
],
"position": null
}
],
"next": null
}
}
Errors, as the route answers them: 404, 422, 502, 503. A refusal (4xx) ends the subscription; a failure (5xx) on an open one is dropped, and the last holders stands until the next.