API ReferenceTop Holders & List
Live

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

FieldTypeDescription
ranknumberPosition by balance (1 = largest)
walletstringHolder address
balanceRawstringRaw token balance (string for precision)
pctOfTotalnumberShare of totalBalanceRaw
firstSeenSlotnumberSlot 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

ParameterTypeDefaultDescription
ninteger10Number 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

ParameterTypeDefaultDescription
limitinteger100Page size (1–1000)
offsetinteger0Pagination 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.