前 100 名持有者
top 100 holders 端点按余额返回最大的钱包——快速且无需分页。curl "https://data.solanatracker.io/tokens/6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN/holders" \
-H "x-api-key: YOUR_API_KEY"
const token = "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN";
const res = await fetch(`https://data.solanatracker.io/tokens/${token}/holders`, {
headers: { "x-api-key": "YOUR_API_KEY" }
});
const { holders, total } = await res.json();
console.log(`Total holders: ${total}`);
holders.forEach((h, i) => {
console.log(`#${i + 1} ${h.wallet} — ${h.percentage.toFixed(2)}% (${h.amount.toLocaleString()} tokens)`);
});
import requests
token = "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN"
res = requests.get(
f"https://data.solanatracker.io/tokens/{token}/holders",
headers={"x-api-key": "YOUR_API_KEY"}
)
data = res.json()
print(f"Total holders: {data['total']}")
for i, h in enumerate(data["holders"]):
print(f"#{i+1} {h['wallet']} — {h['percentage']:.2f}%")
前 20 名持有者
top 20 holders 端点是一个更轻量的调用——适用于快速检查巨鲸集中度,无需拉取完整的 100 名。curl "https://data.solanatracker.io/tokens/6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN/holders/top" \
-H "x-api-key: YOUR_API_KEY"
const res = await fetch(`https://data.solanatracker.io/tokens/${token}/holders/top`, {
headers: { "x-api-key": "YOUR_API_KEY" }
});
const holders = await res.json();
const top10Pct = holders.slice(0, 10).reduce((sum, h) => sum + h.percentage, 0);
console.log(`Top 10 wallets hold ${top10Pct.toFixed(1)}% of supply`);
if (top10Pct > 50) {
console.log("🚨 High concentration — rug risk");
} else if (top10Pct > 30) {
console.log("⚠️ Moderate concentration — proceed with caution");
} else {
console.log("✅ Reasonably distributed supply");
}
所有持有者(分页)
如需完整导出每个持有者——用于构建持有者面板、追踪供应分布变化或进行深度风险分析——请使用分页持有者端点。每页最多支持 5,000 个持有者。 游标分页是指响应会返回一个nextCursor。在下次请求中传入该游标以获取下一页。
# 第一页
curl "https://data.solanatracker.io/tokens/6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN/holders/paginated?limit=1000" \
-H "x-api-key: YOUR_API_KEY"
# 后续页 — 传入上一次响应中的游标
curl "https://data.solanatracker.io/tokens/6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN/holders/paginated?limit=1000&cursor=CURSOR_FROM_PREV_RESPONSE" \
-H "x-api-key: YOUR_API_KEY"
async function getAllHolders(token) {
const allHolders = [];
let cursor = null;
do {
const url = new URL(`https://data.solanatracker.io/tokens/${token}/holders/paginated`);
url.searchParams.set("limit", "1000");
if (cursor) url.searchParams.set("cursor", cursor);
const res = await fetch(url.toString(), {
headers: { "x-api-key": "YOUR_API_KEY" }
});
const data = await res.json();
allHolders.push(...data.holders);
cursor = data.nextCursor ?? null;
console.log(`Fetched ${allHolders.length} / ${data.total} holders`);
} while (cursor);
return allHolders;
}
const token = "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN";
const holders = await getAllHolders(token);
console.log(`Total holders fetched: ${holders.length}`);
import requests
def get_all_holders(token, api_key):
all_holders = []
cursor = None
base_url = f"https://data.solanatracker.io/tokens/{token}/holders/paginated"
headers = {"x-api-key": api_key}
while True:
params = {"limit": 1000}
if cursor:
params["cursor"] = cursor
res = requests.get(base_url, headers=headers, params=params)
data = res.json()
all_holders.extend(data["holders"])
print(f"Fetched {len(all_holders)} / {data['total']} holders")
cursor = data.get("nextCursor")
if not cursor:
break
return all_holders
holders = get_all_holders(
"6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN",
"YOUR_API_KEY"
)
print(f"Done — {len(holders)} total holders")
持有者集中度分析
获取持有者列表后,您可以计算供应集中度。它显示了代币供应量中有多少由最大的钱包控制。
async function analyzeConcentration(token) {
const res = await fetch(
`https://data.solanatracker.io/tokens/${token}/holders/top`,
{ headers: { "x-api-key": "YOUR_API_KEY" } }
);
const holders = await res.json();
const top5 = holders.slice(0, 5).reduce((s, h) => s + h.percentage, 0);
const top10 = holders.slice(0, 10).reduce((s, h) => s + h.percentage, 0);
const top20 = holders.reduce((s, h) => s + h.percentage, 0);
console.log(`Top 5 wallets: ${top5.toFixed(1)}%`);
console.log(`Top 10 wallets: ${top10.toFixed(1)}%`);
console.log(`Top 20 wallets: ${top20.toFixed(1)}%`);
console.log(`Largest single holder: ${holders[0].percentage.toFixed(2)}%`);
// Flag high-risk patterns
if (holders[0].percentage > 20) console.log("🚨 Single whale holds >20% — high risk");
if (top10 > 50) console.log("🚨 Top 10 hold >50% of supply — danger");
}
请将持有者数据与代币信息端点返回的风险评分交叉对比——它已考虑了前 10 集中度和单钱包持有阈值。详情请参阅代币安全与 Rugcheck 指南。
用例
| 您要构建的内容 | 使用的端点 |
|---|---|
| 购买前快速集中度检查 | 前 20 名持有者 |
| 代币页面上的持有者数量徽章 | 前 100(检查 total 字段) |
| 完整的持有者导出 / CSV | 分页(游标循环) |
| 巨鲸提醒 — 检测大额持仓 | 前 100 或前 20,按 percentage 过滤 |
| 历史持有者分布 | 随时间的分页快照 |