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

# Sniper & Bundler Detection

> Find early Solana token buyers, detect bundled launches, identify insiders, and flag suspicious wallets with the Solana Tracker Data API.

Snipers and bundlers are common on Solana. Snipers are wallets that buy in the first seconds of a launch. Bundlers group transactions together, often to control order or get early access. This can involve MEV, which means profit from transaction ordering. The Data API gives you several endpoints to detect this activity.

## First Buyers

The [PnL V2 first buyers](/data-api/pnl-v2/get-token-first-buyers) endpoint returns chronological first buyers enriched with wallet PnL, token PnL, identity tags, and current holding state.

<CodeGroup>
  ```bash cURL theme={null}
  curl "https://data.solanatracker.io/v2/pnl/tokens/{token}/first-buyers?limit=50" \
    -H "x-api-key: YOUR_API_KEY"
  ```

  ```javascript JavaScript theme={null}
  const token = "38PgzpJYu2HkiYvV8qePFakB8tuobPdGm2FFEn7Dpump";

  const res = await fetch(
    `https://data.solanatracker.io/v2/pnl/tokens/${token}/first-buyers?limit=50`,
    { headers: { "x-api-key": "YOUR_API_KEY" } }
  );
  const { traders } = await res.json();

  traders.forEach((t, i) => {
    console.log(`#${i + 1} ${t.wallet} — first trade ${new Date(t.timing.firstTrade).toISOString()}`);
    console.log(`Token PnL: $${t.pnl.token.total.toFixed(2)}, balance: ${t.position.balance}`);
  });
  ```
</CodeGroup>

***

## Find Snipers Who Already Sold

Use the same response to find early buyers who already exited with realized profit.

```javascript theme={null}
const token = "38PgzpJYu2HkiYvV8qePFakB8tuobPdGm2FFEn7Dpump";

const res = await fetch(
  `https://data.solanatracker.io/v2/pnl/tokens/${token}/first-buyers?limit=50`,
  { headers: { "x-api-key": "YOUR_API_KEY" } }
);
const { traders } = await res.json();

// Find snipers who already sold
const sold = traders.filter(t => t.position.balance === 0 && t.pnl.token.realized > 0);

console.log(`${sold.length} early buyers already sold at a profit`);
sold.forEach(t => {
  const holdMins = (t.timing.lastTrade - t.timing.firstTrade) / 60000;
  console.log(`  ${t.wallet}: +$${t.pnl.token.realized.toFixed(2)}, held ${holdMins.toFixed(0)} minutes`);
});
```

### What to Look For

| Signal                           | What it means                                |
| -------------------------------- | -------------------------------------------- |
| Balance = 0, profit > 0          | Early buyer who bought fast and already sold |
| Hold time \< 5 minutes           | Likely automated or MEV-style behavior       |
| Multiple first-buyer appearances | Same wallet sniping many launches            |
| Large buy size relative to pool  | Whale entry that moved the price             |

***

## Bundler Detection

The [bundlers endpoint](/data-api/get-token-bundlers) identifies wallets involved in bundled transactions on a token.

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

Bundlers submit multiple transactions in a single block to control execution order. This is commonly used for:

* Launch sniping (buy in the same block as liquidity add)
* Sandwich attacks
* Coordinated wallet clusters

***

## Chart-Based Detection

These endpoints give you aggregated data over time, useful for building visual dashboards.

### Sniper Activity Chart

The [snipers chart](/data-api/get-snipers-chart-data) shows sniper activity over time for a token.

```bash theme={null}
curl "https://data.solanatracker.io/snipers/chart/{token}" \
  -H "x-api-key: YOUR_API_KEY"
```

### Bundler Activity Chart

The [bundlers chart](/data-api/get-bundlers-chart-data) tracks bundled transaction activity over time.

```bash theme={null}
curl "https://data.solanatracker.io/bundlers/chart/{token}" \
  -H "x-api-key: YOUR_API_KEY"
```

### Insider Activity Chart

The [insiders chart](/data-api/get-insiders-chart-data) shows insider wallet activity patterns.

```bash theme={null}
curl "https://data.solanatracker.io/insiders/chart/{token}" \
  -H "x-api-key: YOUR_API_KEY"
```

***

## Example: Full Sniper Report

Build a quick sniper report for any token:

```javascript theme={null}
const token = "38PgzpJYu2HkiYvV8qePFakB8tuobPdGm2FFEn7Dpump";
const headers = { "x-api-key": "YOUR_API_KEY" };

// 1. Get first buyers with PnL data
const { traders } = await fetch(
  `https://data.solanatracker.io/v2/pnl/tokens/${token}/first-buyers?limit=50`,
  { headers }
).then(r => r.json());

// 2. Get bundler data
const bundlers = await fetch(
  `https://data.solanatracker.io/tokens/${token}/bundlers`,
  { headers }
).then(r => r.json());

// 3. Analyze
const snipers = traders.filter(t => {
  const holdMins = (t.timing.lastTrade - t.timing.firstTrade) / 60000;
  return holdMins < 10 && t.pnl.token.realized > 0;
});

const bundlerWallets = new Set(bundlers.map(b => b.wallet));
const sniperBundlers = snipers.filter(s => bundlerWallets.has(s.wallet));

console.log(`First 50 buyers: ${traders.length}`);
console.log(`Quick-flip snipers (< 10 min hold, profitable): ${snipers.length}`);
console.log(`Bundler wallets: ${bundlers.length}`);
console.log(`Snipers who also bundled: ${sniperBundlers.length}`);
```

<CardGroup cols={2}>
  <Card title="Token Research" href="/guides/token-research">
    Full token lookup: stats, holders, trades, and events.
  </Card>

  <Card title="Token Intelligence" href="/guides/pnl-v2/token-intelligence">
    All traders on a token with PnL, sorting, and filtering.
  </Card>

  <Card title="Safety Streams" href="/guides/datastream-safety">
    Track snipers, bundlers, and insiders in real time via WebSocket.
  </Card>

  <Card title="Token Discovery Streams" href="/guides/datastream-tokens">
    Spot new tokens before the crowd and filter by graduation status.
  </Card>
</CardGroup>
