Skip to main content

Collection Holders

Retrieve holder distribution and ownership analytics for any NFT collection.

Overview​

The Collection Holders endpoint returns a ranked list of addresses holding NFTs from a specific collection, sorted by the number of NFTs owned. This is essential for:

  • Analyzing holder concentration
  • Identifying top collectors
  • Building leaderboards
  • Understanding collection distribution

Endpoint​

GET /nfts/collection/{type}/holders

Base URL: https://api.surflux.dev

Parameters​

Path Parameters​

ParameterTypeRequiredDescription
typestringYesFull collection type path

Example: 0x41c06da395bc3f0ee621a66082f8f30f376da41a2db7bcce7c087444de200e41::panzerdog::Panzerdog

Query Parameters​

ParameterTypeRequiredDefaultDescription
pagenumberNo0Page number for pagination (starts from 0)
perPagenumberNo10Number of items per page (max 50)
api-keystringYes-API key for authentication

Request Example​

curl "https://api.surflux.dev/nfts/collection/0x41c06da395bc3f0ee621a66082f8f30f376da41a2db7bcce7c087444de200e41::panzerdog::Panzerdog/holders?page=0&perPage=20&api-key=your_api_key_here"

Response​

Response Structure​

{
"items": [
{
"owner": "0xf9c18a383d4f5c293bef82e4daf1ce82306b7b561cbef50d5c456a90d8547a5d",
"count": 127
},
{
"owner": "0x443f35e4d8e7f0f9e590e92569cf08b49bc24b63a92dc80b5d5510e753aad2e8",
"count": 89
},
{
"owner": "0x1148207ed0d1b54bd24172fe0a49092c858e363e702cc32c56bd9bf50afeb952",
"count": 65
}
],
"isLastPage": false,
"currentPage": 0,
"perPage": 100
}

Response Fields​

FieldTypeDescription
itemsarrayArray of holder objects, sorted by count (descending)
isLastPagebooleanWhether this is the last page of results
currentPagenumberCurrent page number
perPagenumberItems per page

Holder Object Fields​

FieldTypeDescription
ownerstringWallet address of the holder
countnumberNumber of NFTs from this collection owned by this address

Use Cases​

  • Holder Analytics — Analyze holder concentration and distribution patterns
  • Leaderboards — Display top collectors for a collection
  • Community Insights — Identify major stakeholders in a collection
  • Whale Tracking — Monitor large holders for trading signals
  • Airdrop Planning — Target holders for rewards or airdrops

Code Examples​

JavaScript / TypeScript​

const collectionType = "0x41c06da395bc3f0ee621a66082f8f30f376da41a2db7bcce7c087444de200e41::panzerdog::Panzerdog";
const apiKey = "your_api_key_here";

const response = await fetch(
`https://api.surflux.dev/nfts/collection/${collectionType}/holders?page=0&perPage=20&api-key=${apiKey}`
);

const data = await response.json();

console.log("Top 3 holders:");
data.items.slice(0, 3).forEach((holder, index) => {
console.log(`${index + 1}. ${holder.owner}: ${holder.count} NFTs`);
});

Advanced: Calculate Holder Concentration​

async function getHolderConcentration(collectionType: string, apiKey: string) {
const response = await fetch(
`https://api.surflux.dev/nfts/collection/${collectionType}/holders?page=0&api-key=${apiKey}`
);

const data = await response.json();

const totalNFTs = data.items.reduce((sum, h) => sum + h.count, 0);
const top10NFTs = data.items.slice(0, 10).reduce((sum, h) => sum + h.count, 0);

const concentration = (top10NFTs / totalNFTs) * 100;

return {
totalHolders: data.items.length,
totalNFTs,
top10Concentration: concentration.toFixed(2) + "%"
};
}