Top Holders & List
Ranked holders for a token — the top-N for a quick concentration view, or the full paginated list. Both order by balance descending and share the holder shape.
The holder entry
| Field | Type | Description |
|---|---|---|
rank | number | Position by balance (1 = largest) |
wallet | string | Holder address |
balanceRaw | string | Raw token balance (string for precision) |
pctOfTotal | number | Share of totalBalanceRaw |
firstSeenSlot | number | Slot the wallet first held the token |
Both responses also carry the top-level mint, distinctCount, totalBalanceRaw, hydrationStatus, and asOfTsMs (see Summary).
Top holders
L1 GET /v1/token/{mint}/holders/top
| Parameter | Type | Default | Description |
|---|---|---|---|
n | integer | 10 | Number of holders (1–500) |
curl -H "Authorization: Bearer $API_KEY" \
"https://api.conyr.ai/v1/token/EPjFWd.../holders/top?n=10"{
"mint": "EPjFWd...",
"distinctCount": 18420,
"totalBalanceRaw": "999850000000000",
"hydrationStatus": "hydrated",
"holders": [
{ "rank": 1, "wallet": "9xQeWp...", "balanceRaw": "120000000000000", "pctOfTotal": 12.0, "firstSeenSlot": 245678901 }
],
"asOfTsMs": 1709654400123
}Full list (paginated)
L1 GET /v1/token/{mint}/holders
| Parameter | Type | Default | Description |
|---|---|---|---|
limit | integer | 100 | Page size (1–1000) |
offset | integer | 0 | Pagination offset |
curl -H "Authorization: Bearer $API_KEY" \
"https://api.conyr.ai/v1/token/EPjFWd.../holders?limit=100&offset=0"{
"mint": "EPjFWd...",
"distinctCount": 18420,
"totalBalanceRaw": "999850000000000",
"hydrationStatus": "hydrated",
"holders": [
{ "rank": 1, "wallet": "9xQeWp...", "balanceRaw": "120000000000000", "pctOfTotal": 12.0, "firstSeenSlot": 245678901 }
],
"limit": 100,
"offset": 0,
"nextOffset": 100,
"asOfTsMs": 1709654400123
}Pass nextOffset back as offset to page through the list; when it’s null the list is exhausted. Both endpoints cache 15s. To know whether a top holder is a person or a pool, and how early they got in, see Holder Labels.