import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getTokenHolders('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN');curl --request GET \
--url https://data.solanatracker.io/tokens/{tokenAddress}/holders \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/tokens/{tokenAddress}/holders"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://data.solanatracker.io/tokens/{tokenAddress}/holders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data.solanatracker.io/tokens/{tokenAddress}/holders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/tokens/{tokenAddress}/holders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.solanatracker.io/tokens/{tokenAddress}/holders")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/tokens/{tokenAddress}/holders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"total": 2,
"enrich": [
"identity",
"walletPnl"
],
"accounts": [
{
"wallet": "HYLHTXn74S378oYQHmoJa9yqrfr3DCd8TZtnFCNvySC5",
"amount": 1032622458.645721,
"value": {
"quote": 7.100269258380428,
"usd": 597.7253928072596
},
"percentage": 103.2622458645721,
"identity": {
"pool": {
"program": "pumpfun",
"poolAddress": "HYLHTXn74S378oYQHmoJa9yqrfr3DCd8TZtnFCNvySC5"
},
"type": "pool",
"tags": [
"pool"
]
}
},
{
"wallet": "BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s",
"amount": 967377541.354279,
"value": {
"quote": 6.651647909279076,
"usd": 559.9588853192754
},
"percentage": 96.7377541354279,
"pnl": {
"wallet": {
"realized": 63155439.72,
"unrealized": 21353443.56,
"total": 84508883.29,
"invested": 203648590.41,
"proceeds": 266804030.13,
"totalTrades": 24242430,
"tokensTraded": 639911
},
"token": {
"realized": 63.48,
"unrealized": -2.48,
"total": 61,
"invested": 48.27,
"proceeds": 109.27,
"roi": 126.36,
"buys": 5,
"sells": 6,
"totalTrades": 11,
"balance": 967377541.354279,
"costBasis": 2.48,
"value": 0,
"price": 0,
"avgCost": 0,
"totalBought": 31796306.208048,
"totalSold": 64418764.853769004,
"avgBuy": 9.65,
"avgSell": 18.21,
"firstBuy": 1779813188896,
"lastBuy": 1779813195367,
"firstSell": 1779813188038,
"lastSell": 1779813194596,
"firstTrade": 1779813188038,
"lastTrade": 1779813195367,
"holdTimeSecs": 26
}
},
"identity": {
"bot": {
"name": "Mayhem Bot",
"avatar": "https://kol-avatar.solanatracker.io/BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s"
},
"name": "Mayhem Bot",
"avatar": "https://kol-avatar.solanatracker.io/BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s",
"type": "bot",
"tags": [
"bot"
]
}
}
]
}Get Token Holders (Top 100)
Gets the top 100 holders for a specific token and the total holder count. Optional enrichment adds wallet identity (?enrich=identity) and/or PnL (?enrich=walletPnl). Use ?enrich=identity,walletPnl, ?enrich=all, or ?enrich=* for both. When enrichment is requested, the response includes an enrich array listing applied modules. pnl.token uses the same flat field set as PnL V2 (invested, proceeds, trade counts, volume, timing, avgCost, holdTimeSecs). pnl.wallet is lifetime wallet PnL. Enrichment fields are omitted per account when not applicable — for example, pool accounts may have identity only, and wallets with no trade history for the token omit pnl.
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getTokenHolders('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN');curl --request GET \
--url https://data.solanatracker.io/tokens/{tokenAddress}/holders \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/tokens/{tokenAddress}/holders"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://data.solanatracker.io/tokens/{tokenAddress}/holders', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data.solanatracker.io/tokens/{tokenAddress}/holders",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/tokens/{tokenAddress}/holders"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.solanatracker.io/tokens/{tokenAddress}/holders")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/tokens/{tokenAddress}/holders")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"total": 2,
"enrich": [
"identity",
"walletPnl"
],
"accounts": [
{
"wallet": "HYLHTXn74S378oYQHmoJa9yqrfr3DCd8TZtnFCNvySC5",
"amount": 1032622458.645721,
"value": {
"quote": 7.100269258380428,
"usd": 597.7253928072596
},
"percentage": 103.2622458645721,
"identity": {
"pool": {
"program": "pumpfun",
"poolAddress": "HYLHTXn74S378oYQHmoJa9yqrfr3DCd8TZtnFCNvySC5"
},
"type": "pool",
"tags": [
"pool"
]
}
},
{
"wallet": "BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s",
"amount": 967377541.354279,
"value": {
"quote": 6.651647909279076,
"usd": 559.9588853192754
},
"percentage": 96.7377541354279,
"pnl": {
"wallet": {
"realized": 63155439.72,
"unrealized": 21353443.56,
"total": 84508883.29,
"invested": 203648590.41,
"proceeds": 266804030.13,
"totalTrades": 24242430,
"tokensTraded": 639911
},
"token": {
"realized": 63.48,
"unrealized": -2.48,
"total": 61,
"invested": 48.27,
"proceeds": 109.27,
"roi": 126.36,
"buys": 5,
"sells": 6,
"totalTrades": 11,
"balance": 967377541.354279,
"costBasis": 2.48,
"value": 0,
"price": 0,
"avgCost": 0,
"totalBought": 31796306.208048,
"totalSold": 64418764.853769004,
"avgBuy": 9.65,
"avgSell": 18.21,
"firstBuy": 1779813188896,
"lastBuy": 1779813195367,
"firstSell": 1779813188038,
"lastSell": 1779813194596,
"firstTrade": 1779813188038,
"lastTrade": 1779813195367,
"holdTimeSecs": 26
}
},
"identity": {
"bot": {
"name": "Mayhem Bot",
"avatar": "https://kol-avatar.solanatracker.io/BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s"
},
"name": "Mayhem Bot",
"avatar": "https://kol-avatar.solanatracker.io/BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s",
"type": "bot",
"tags": [
"bot"
]
}
}
]
}SDK Example
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getTokenHolders('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN');
Authorizations
API Key for authentication
Path Parameters
Query Parameters
Optional enrichment modules. Use identity, walletPnl, identity,walletPnl, all, or *. When omitted, no extra enrichment work is done.
"all"
Was this page helpful?