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

# Trades de ballenas y KOL en Solana: API y streams

> Consulta trades de ballenas y KOL en Solana, filtra por tamaño en USD o por token y suscríbete a feeds en vivo de Datastream con identidad de wallet.

Carga trades recientes de ballenas o KOL por REST y suscríbete a Datastream para recibir la actividad nueva. Los filtros de ballenas usan umbrales fijos en USD; el feed base de KOL también incluye trades por debajo de \$1,000.

> [!NOTE]
>
> La API REST devuelve los últimos trades indexados. Datastream entrega los trades nuevos en tiempo real por WebSocket. Ambos usan tu API key de la Data API de Solana Tracker.

## API REST

### Últimos trades de ballenas

Solicita trades de ballenas a partir de un umbral en USD admitido:

```bash theme={null}
curl "https://data.solanatracker.io/trades/whales?minVolume=10000&limit=50&hideArb=true" \
  -H "x-api-key: YOUR_API_KEY"
```

`minVolume` acepta `1000`, `2500`, `5000` o `10000`. Los resultados se ordenan del más reciente al más antiguo.

### Últimos trades de KOL

Obtén los trades de las wallets de la lista compartida de KOL:

```bash theme={null}
curl "https://data.solanatracker.io/trades/kols?minVolume=2500&limit=100" \
  -H "x-api-key: YOUR_API_KEY"
```

Para recibir todos los trades de KOL elegibles, usa `minVolume=0` u omite `minVolume`:

```bash theme={null}
curl "https://data.solanatracker.io/trades/kols?limit=100" \
  -H "x-api-key: YOUR_API_KEY"
```

Cuando hay datos de identidad disponibles, cada trade incluye:

```json theme={null}
{
  "wallet": "9jyqFiLnruggWnN4EQwBNFXwpbLM9hrA4hV59ytyAVVz",
  "type": "buy",
  "volume": 1517.82,
  "identity": {
    "name": "Example KOL",
    "twitter": "@example"
  }
}
```

### Trades de KOL de un token

Limita los trades de KOL a un mint para una página de token o una alerta:

```bash theme={null}
curl "https://data.solanatracker.io/trades/kols/TOKEN_MINT?minVolume=1000&hideArb=true" \
  -H "x-api-key: YOUR_API_KEY"
```

El endpoint de KOL por token también usa `minVolume=0` por defecto; pasa `minVolume=0` de forma explícita si quieres dejar claro ese comportamiento.

Con `hideArb=true`, la respuesta conserva solo las filas en las que el mint solicitado es uno de los lados del trade.

### Pagina el historial

Las respuestas incluyen `nextCursor` y `hasNextPage`. Devuelve el cursor opaco sin cambios:

```javascript theme={null}
const base = "https://data.solanatracker.io/trades/whales";
const params = new URLSearchParams({
  minVolume: "5000",
  limit: "250",
  showMeta: "true",
});

let cursor;
do {
  if (cursor) params.set("cursor", cursor);

  const response = await fetch(`${base}?${params}`, {
    headers: { "x-api-key": process.env.SOLANA_TRACKER_API_KEY },
  });
  const page = await response.json();

  for (const trade of page.trades) {
    console.log(trade.time, trade.type, trade.volume, trade.wallet);
  }

  cursor = page.hasNextPage ? page.nextCursor : null;
} while (cursor);
```

Usa `showMeta=true` cuando tu UI necesite nombres de token, símbolos, imágenes, decimales o precios históricos de los lados `from` y `to`.

> [!WARNING]
>
> Trata `nextCursor` como un valor opaco. No decodifiques, modifiques ni construyas cursores en el código de tu aplicación.

## Datastream en tiempo real

Conéctate a:

```text theme={null}
wss://datastream.solanatracker.io/{YOUR_API_KEY}
```

### Seguimiento de ballenas

Únete a la sala de un nivel para recibir los trades nuevos que lo alcancen:

```javascript theme={null}
const ws = new WebSocket(
  "wss://datastream.solanatracker.io/YOUR_API_KEY"
);

ws.addEventListener("open", () => {
  ws.send(JSON.stringify({
    type: "join",
    room: "transaction:whale:10000",
  }));
});

ws.addEventListener("message", (event) => {
  const message = JSON.parse(event.data);
  if (message.type !== "message") return;

  for (const trade of message.data) {
    const label = trade.type === "buy" ? "WHALE BUY" : "WHALE SELL";
    console.log(
      `${label} $${trade.volume.toLocaleString()} ` +
      `${trade.token?.to?.symbol ?? "token"} by ${trade.wallet}`
    );
  }
});
```

Salas de ballenas disponibles:

```text theme={null}
transaction:whale:1000
transaction:whale:2500
transaction:whale:5000
transaction:whale:10000
```

Las salas son acumulativas. Un trade de \$12,000 llega a las salas `1000`, `2500`, `5000` y `10000`. Únete solo a los niveles que necesite tu aplicación.

### Seguimiento de KOL

`transaction:kol` recibe todos los trades de KOL elegibles, incluidos los que están por debajo del umbral de \$1,000:

```javascript theme={null}
ws.send(JSON.stringify({
  type: "join",
  room: "transaction:kol",
}));

ws.addEventListener("message", (event) => {
  const message = JSON.parse(event.data);
  if (message.type !== "message" || message.room !== "transaction:kol") {
    return;
  }

  const trade = message.data[0];
  const identity = trade.identity?.twitter || trade.identity?.name || trade.wallet;
  console.log(
    `${identity}: ${trade.type} $${trade.volume.toLocaleString()} ` +
    `on ${trade.token?.to?.symbol ?? trade.token?.from?.symbol ?? "token"}`
  );
});
```

Para alertas de KOL de alto valor, usa las salas acumulativas por nivel:

```javascript theme={null}
ws.send(JSON.stringify({
  type: "join",
  room: "transaction:kol:5000",
}));
```

### Pipeline de señales de KOL

Aplica un filtro de tamaño a los trades de KOL entrantes antes de enviar una alerta:

```javascript theme={null}
function handleKolTrade(message) {
  if (message.type !== "message") return;

  for (const trade of message.data) {
    const identity = trade.identity;
    const token = trade.token?.to?.symbol || trade.token?.from?.symbol;

    if (trade.type === "buy" && trade.volume >= 5000) {
      console.log({
        event: "kol_buy_signal",
        wallet: trade.wallet,
        name: identity?.name,
        twitter: identity?.twitter,
        token,
        volumeUsd: trade.volume,
        signature: trade.tx,
      });
    }
  }
}

ws.addEventListener("message", (event) => {
  handleKolTrade(JSON.parse(event.data));
});
```

Guarda los trades en bruto por separado de las alertas que derives de ellos. Una alerta es un evento de tu aplicación; no envía ningún swap.

## Formato del mensaje

Los mensajes de ballenas y KOL de Datastream contienen un trade enriquecido en un array `data` de un solo elemento:

```json theme={null}
{
  "type": "message",
  "room": "transaction:whale:10000",
  "data": [
    {
      "tx": "TRANSACTION_SIGNATURE",
      "amount": 125000.5,
      "priceUsd": 0.00012,
      "solVolume": 12.5,
      "volume": 12500,
      "type": "buy",
      "wallet": "WALLET_ADDRESS",
      "time": 1786470000000,
      "program": "raydium",
      "token": {
        "from": { "symbol": "SOL", "amount": 12.5 },
        "to": { "symbol": "MEME", "amount": 125000.5 }
      },
      "identity": {
        "name": "Example KOL",
        "twitter": "@example"
      }
    }
  ]
}
```

`identity` está presente cuando la wallet que opera está en la lista compartida de KOL. `time` es un timestamp Unix en milisegundos. `volume` es el volumen absoluto en USD; usa `type` para saber si es una compra o una venta.

## Lista de comprobación para producción

1. Elimina duplicados por firma de transacción más wallet, token y lado si tu consumidor se reconecta.
2. Guarda el último `nextCursor` de REST al rellenar el historial.
3. Reconecta los clientes WebSocket con backoff exponencial.
4. Únete solo a las salas necesarias para evitar eventos acumulativos duplicados.
5. Guarda por separado el trade en bruto y la alerta que derives de él.
6. Aplica tus propias comprobaciones de riesgo y ejecución antes de hacer copy trading.

> [card] [API REST de ballenas y KOL](https://docs.solanatracker.io/es/data-api/whale-trades/latest-high-volume-whale-spot-trades.md)
>
> Consulta los parámetros de los endpoints, los esquemas de respuesta y la paginación.

> [card] [Datastream de ballenas y KOL](https://docs.solanatracker.io/es/datastream/websockets/whaletrades.md)
>
> Consulta las salas, los mensajes de unión y los payloads de trades en vivo.

> [card] [Swaps en vivo](https://docs.solanatracker.io/es/guides/live-transactions.md)
>
> Suscríbete a todos los swaps de un token.

> [card] [Rendimiento KOL](https://docs.solanatracker.io/es/guides/kol-tracking.md)
>
> Analiza el rendimiento de las wallets y la actividad de los KOL.


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