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) + "%"
};
}