SDK
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getTokenHoldersPaginated('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', 100);curl --request GET \
--url https://data.solanatracker.io/tokens/{tokenAddress}/holders/paginated \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/tokens/{tokenAddress}/holders/paginated"
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/paginated', 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/paginated",
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/paginated"
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/paginated")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/tokens/{tokenAddress}/holders/paginated")
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": 629520,
"accounts": [
{
"wallet": "2RH6rUTPBJ9rUDPpuV9b8z1YL56k1tYU6Uk5ZoaEFFSK",
"account": "HkykUVWTctptXZmRTWearMsH4SaQNmE4Ku3tMJe5v2mH",
"amount": 800000026.912776,
"value": {
"quote": 4794089882.482378,
"usd": 4794089882.482378
},
"percentage": 80.00006034693021
},
{
"wallet": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
"account": "7DaumTmUaK3xcpd8XJXAjUzDrCqPuj3S1Sc2cbootBUN",
"amount": 29442390.303223,
"value": {
"quote": 176436825.90046737,
"usd": 176436825.90046737
},
"percentage": 2.944241152222513
}
],
"cursor": "Cd3HX8ToTVeJYTN4dB6BuRvnvmTFeXHJ3E4EAfR9s8QA",
"hasMore": true,
"limit": 10
}{
"error": "Invalid token address"
}{
"error": "Token not found, please check back later"
}{
"error": "Unable to fetch holders data"
}{
"error": "Request timeout while fetching holders data"
}Tokens
Get All Token Holders (Paginated)
Gets token holders with cursor-based pagination support. Returns holders sorted by amount in descending order.
GET
/
tokens
/
{tokenAddress}
/
holders
/
paginated
SDK
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getTokenHoldersPaginated('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', 100);curl --request GET \
--url https://data.solanatracker.io/tokens/{tokenAddress}/holders/paginated \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/tokens/{tokenAddress}/holders/paginated"
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/paginated', 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/paginated",
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/paginated"
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/paginated")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/tokens/{tokenAddress}/holders/paginated")
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": 629520,
"accounts": [
{
"wallet": "2RH6rUTPBJ9rUDPpuV9b8z1YL56k1tYU6Uk5ZoaEFFSK",
"account": "HkykUVWTctptXZmRTWearMsH4SaQNmE4Ku3tMJe5v2mH",
"amount": 800000026.912776,
"value": {
"quote": 4794089882.482378,
"usd": 4794089882.482378
},
"percentage": 80.00006034693021
},
{
"wallet": "9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM",
"account": "7DaumTmUaK3xcpd8XJXAjUzDrCqPuj3S1Sc2cbootBUN",
"amount": 29442390.303223,
"value": {
"quote": 176436825.90046737,
"usd": 176436825.90046737
},
"percentage": 2.944241152222513
}
],
"cursor": "Cd3HX8ToTVeJYTN4dB6BuRvnvmTFeXHJ3E4EAfR9s8QA",
"hasMore": true,
"limit": 10
}{
"error": "Invalid token address"
}{
"error": "Token not found, please check back later"
}{
"error": "Unable to fetch holders data"
}{
"error": "Request timeout while fetching holders data"
}SDK Example
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getTokenHoldersPaginated('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', 100);
Authorizations
API Key for authentication
Path Parameters
Solana token mint address
Pattern:
^[1-9A-HJ-NP-Za-km-z]{32,44}$Query Parameters
Number of holders to return per page (min: 1, max: 5000, default: 1000)
Required range:
1 <= x <= 5000Cursor for pagination. Use the cursor from the previous response to get the next page.
Response
Successful response
Total number of token holders
Array of holder accounts for current page
Show child attributes
Show child attributes
Cursor for retrieving the next page. Null if no more pages.
Indicates if there are more pages available
Number of items requested per page
Was this page helpful?
⌘I