> ## 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.

# Consultar holders y concentración de tokens Solana

> Obtén los principales holders de un token Solana o recorre la lista completa con paginación para analizar la distribución.

Elige entre los primeros 20, los primeros 100 o la lista paginada. Combina balances, porcentajes de suministro y etiquetas de wallets para interpretar la distribución.

## Top 100 holders

El endpoint de [top 100 holders](/es/data-api/tokens/get-token-holders-top-100) devuelve las wallets con mayor saldo — rápido y sin necesidad de paginación.

<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 { accounts: 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["accounts"]):
      print(f"#{i+1} {h['wallet']} — {h['percentage']:.2f}%")
  ```
</CodeGroup>

## Top 20 holders

El endpoint de [top 20 holders](/es/data-api/tokens/get-top-20-token-holders) es una llamada más ligera — útil para comprobar rápidamente la concentración de ballenas sin descargar los 100 completos.

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

**Comprobación rápida de concentración:**

```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("Top 10 concentration exceeds the 50% alert threshold");
} else if (top10Pct > 30) {
  console.log("Top 10 concentration exceeds the 30% alert threshold");
} else {
  console.log("Top 10 concentration is at or below 30%");
}
```

## Todos los holders (paginado)

Para una exportación completa de cada holder — necesaria para construir un dashboard de holders, seguir la distribución de la oferta a lo largo del tiempo o hacer un análisis de riesgo profundo — usa el endpoint [paginado](/es/data-api/tokens/get-all-token-holders-paginated). Admite hasta 5,000 holders por página.

La paginación por cursor significa que la respuesta te devuelve un `cursor`. Envía ese cursor en la siguiente solicitud para obtener la siguiente página.

<CodeGroup>
  ```bash cURL theme={null}
  # Primera página
  curl "https://data.solanatracker.io/tokens/6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN/holders/paginated?limit=1000" \
    -H "x-api-key: YOUR_API_KEY"

  # Páginas siguientes — pasa el cursor de la respuesta anterior
  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.accounts);
      cursor = data.hasMore ? data.cursor : 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["accounts"])
          print(f"Fetched {len(all_holders)} / {data['total']} holders")

          cursor = data.get("cursor") if data.get("hasMore") else None
          if not cursor:
              break

      return all_holders

  holders = get_all_holders(
      "6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN",
      "YOUR_API_KEY"
  )
  print(f"Done — {len(holders)} total holders")
  ```
</CodeGroup>

## Análisis de concentración de holders

Una vez que tengas la lista de holders, puedes calcular la concentración de la oferta. Esto muestra cuánta oferta del token está controlada por las wallets más grandes.

<img src="https://mintcdn.com/solanatracker/ZM5vWoSAJUJFeh6A/images/guides/holders-wallet-tags.png?fit=max&auto=format&n=ZM5vWoSAJUJFeh6A&q=85&s=1823b98bbf8e0e8af9d34de2f59a3ea3" alt="Tabla de holders que muestra etiquetas de wallets junto a los holders principales" 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 ?? 0).toFixed(2)}%`);

  // Example display thresholds; choose thresholds for your application
  if ((holders[0]?.percentage ?? 0) > 20) console.log("Largest account holds more than 20%");
  if (top10 > 50)                  console.log("Top 10 accounts hold more than 50%");
}
```

<Tip>
  Cruza los datos de holders con la [puntuación de riesgo](/es/data-api/risk) devuelta por el endpoint de información del token — ya considera la concentración del top 10 y los umbrales de propiedad de una sola wallet. Consulta la guía de [Seguridad de tokens y Rugcheck](/es/guides/token-safety) para más detalles.
</Tip>

## Casos de uso

| Lo que estás construyendo | Endpoint que usar |
| - | - |
| Comprobación rápida de concentración antes de comprar | Top 20 holders |
| Insignia con el número de holders en una página de token | Top 100 (revisa el campo `total`) |
| Exportación completa de holders / CSV | Paginado (bucle con cursor) |
| Alerta de ballenas — detectar posiciones grandes | Top 100 o Top 20, filtrar por `percentage` |
| Distribución histórica de holders | Snapshots paginados a lo largo del tiempo |

## Actualizaciones de holders en vivo

Para seguir los cambios de holders en tiempo real — nuevos holders, salidas de ballenas y ventas de wallets del creador — usa el WebSocket de Datastream. Consulta la guía de [actualizaciones de holders en vivo](/es/guides/live-holder-updates).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.