WebSocket Reference
market:holders
Top token holder concentration data for Polymarket markets
The market:holders channel broadcasts top token holder concentration data for Polymarket markets. For each market, the top 20 holders per token side (YES/NO) are returned with ownership percentages, amounts, and identity details. Updates are pushed when holder data is synced from the Polymarket Data API.
Subscribe
{ "event": "subscribe", "data": { "channel": "market:holders:<marketId>" } }Replace <marketId> with the target market UUID.
Unsubscribe
{ "event": "unsubscribe", "data": { "channel": "market:holders:<marketId>" } }Server Broadcast
When holder data is synced, the server emits a data event with the holders-update event type:
{
"channel": "market:holders:c5a2e7f1-3b4d-4e6a-8f9c-1d2e3f4a5b6c",
"data": {
"marketId": "c5a2e7f1-3b4d-4e6a-8f9c-1d2e3f4a5b6c",
"groups": [
{
"token": "tok-yes",
"holders": [
{
"proxyWallet": "0xAbC123DeF456...",
"name": "PolymarketWhale",
"pseudonym": "Whale_42",
"amount": 24500.75,
"outcomeIndex": 0,
"profileImage": "https://example.com/avatar.png",
"verified": true
}
]
},
{
"token": "tok-no",
"holders": [
{
"proxyWallet": "0x98765FEDcba...",
"name": "NoSideTrader",
"pseudonym": "TraderX",
"amount": 12300.5,
"outcomeIndex": 1,
"profileImage": "",
"verified": false
}
]
}
],
"timestamp": 1716923400000
}
}Payload Schema
| Field | Type | Description |
|---|---|---|
marketId | string | Unique market identifier (UUID) |
groups | array | Holder groups by token side (YES/NO) |
timestamp | number | Unix millisecond epoch of the snapshot |
Group Object
| Field | Type | Description |
|---|---|---|
token | string | Token identifier (e.g., tok-yes, tok-no) |
holders | array | Top 20 holders for this token side |
Holder Object
| Field | Type | Description |
|---|---|---|
proxyWallet | string | Polymarket proxy wallet address |
name | string | Holder display name |
pseudonym | string | Holder pseudonym |
amount | number | Number of shares held |
outcomeIndex | number | 0 = YES, 1 = NO |
profileImage | string | Profile image URL (empty string if none) |
verified | boolean | Whether the holder identity is verified |
Notes
- This channel does not require authentication — holder data is public market information
- Holders are synced from the Polymarket Data API only (no Kalshi equivalent)
- Each token group is capped to the top 20 holders by share amount
- The subscription is per-market: you must subscribe to each market's holder channel separately
- Holder data is refreshed on the holder sync cycle, not on every price tick