> ## Documentation Index
> Fetch the complete documentation index at: https://docs.solanatracker.io/llms.txt
> Use this file to discover all available pages before exploring further.

# 获取 Solana 代币的所有持有者

> 获取任意 Solana 代币的完整持有者列表——头部钱包、巨鲸集中度，以及用于风险检查、社区分析与持有者看板的完整分页导出。

在购买代币之前,了解谁持有该代币至关重要。如果少数钱包持有大部分供应量,这些钱包可以操纵市场或造成严重风险。Data API 根据您需要的持有者数据量,提供了三种端点。

## 前 100 名持有者

[top 100 holders 端点](/cn/data-api/get-token-holders-top-100)按余额返回最大的钱包——快速且无需分页。

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://data.solanatracker.io/tokens/6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN/holders" \
    -H "x-api-key: YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  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)`);
  });
  ```

  ```python Python theme={null}
  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}%")
  ```
</CodeGroup>

***

## 前 20 名持有者

[top 20 holders 端点](/cn/data-api/get-top-20-token-holders)是一个更轻量的调用——适用于快速检查巨鲸集中度,无需拉取完整的 100 名。

```bash theme={null}
curl "https://data.solanatracker.io/tokens/6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN/holders/top" \
  -H "x-api-key: YOUR_API_KEY"
```

**快速集中度检查:**

```javascript theme={null}
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");
}
```

***

## 所有持有者(分页)

如需完整导出每个持有者——用于构建持有者面板、追踪供应分布变化或进行深度风险分析——请使用[分页持有者端点](/cn/data-api/get-all-token-holders-paginated)。每页最多支持 5,000 个持有者。

游标分页是指响应会返回一个 `nextCursor`。在下次请求中传入该游标以获取下一页。

<CodeGroup>
  ```bash cURL theme={null}
  # 第一页
  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"
  ```

  ```javascript JavaScript theme={null}
  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}`);
  ```

  ```python Python theme={null}
  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")
  ```
</CodeGroup>

***

## 持有者集中度分析

获取持有者列表后,您可以计算供应集中度。它显示了代币供应量中有多少由最大的钱包控制。

<img src="https://mintcdn.com/solanatracker/ZM5vWoSAJUJFeh6A/images/guides/holders-wallet-tags.png?fit=max&auto=format&n=ZM5vWoSAJUJFeh6A&q=85&s=1823b98bbf8e0e8af9d34de2f59a3ea3" alt="显示头部代币持有者旁边钱包标签的持有者表格" width="3032" height="678" data-path="images/guides/holders-wallet-tags.png" />

```javascript theme={null}
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");
}
```

<Tip>
  请将持有者数据与代币信息端点返回的[风险评分](/cn/data-api/risk)交叉对比——它已考虑了前 10 集中度和单钱包持有阈值。详情请参阅[代币安全与 Rugcheck](/cn/guides/token-safety) 指南。
</Tip>

***

## 用例

| 您要构建的内容        | 使用的端点                         |
| -------------- | ----------------------------- |
| 购买前快速集中度检查     | 前 20 名持有者                     |
| 代币页面上的持有者数量徽章  | 前 100(检查 `total` 字段)          |
| 完整的持有者导出 / CSV | 分页(游标循环)                      |
| 巨鲸提醒 — 检测大额持仓  | 前 100 或前 20,按 `percentage` 过滤 |
| 历史持有者分布        | 随时间的分页快照                      |

***

## 实时持有者更新

要实时追踪持有者变化——新持有者、巨鲸退出和创建者钱包抛售——请使用 Datastream WebSocket。请参阅[实时代币持有者更新](/cn/guides/live-holder-updates)指南。
