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

# Pump.fun & Bonding Curves

> Track, analyze, and trade Pump.fun tokens across their lifecycle — discover launches, monitor bonding curves, watch graduations, and swap on PumpSwap.

This guide covers Pump.fun tokens from launch to graduation. You will learn how to find new launches, track bonding curve progress, detect graduation events, swap tokens, and monitor risk signals.

All of these endpoints and streams also work with other bonding curve platforms (Raydium LaunchLab, Boop, Meteora DBC).

## Lifecycle Overview

Every Pump.fun token goes through the same stages. A bonding curve is a pricing path where the price changes as people buy or sell before the token moves to a normal trading pool.

1. **Created** — the token launches on the bonding curve.
2. **Graduating** — the bonding curve fills up from 0–100%.
3. **Graduated** — the curve is complete, and liquidity moves to a DEX pool.

You can track each stage with REST endpoints, real-time WebSocket streams, or both.

***

## Find New Pump.fun Tokens

### REST: Latest Tokens

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

Filter the response by `pools[0].market` to isolate Pump.fun tokens:

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

const latest = await fetch(
  "https://data.solanatracker.io/tokens/latest", { headers }
).then(r => r.json());

const pumpfun = latest.filter(t => t.pools?.[0]?.market === "pumpfun");
console.log(`${pumpfun.length} new Pump.fun tokens`);
```

### REST: Search with Filters

Use the [search endpoint](/data-api/token-search) to find Pump.fun tokens with specific criteria:

```bash theme={null}
# Pump.fun tokens with >50% curve, has socials, >$1k liquidity
curl "https://data.solanatracker.io/search?launchpad=pumpfun&minCurvePercentage=50&hasSocials=true&minLiquidity=1000" \
  -H "x-api-key: YOUR_API_KEY"
```

Key search filters for Pump.fun:

| Parameter            | Description                                              |
| -------------------- | -------------------------------------------------------- |
| `launchpad`          | `pumpfun`, or comma-separated for multiple               |
| `market`             | `pumpfun` for bonding curve, `pumpfun-amm` for graduated |
| `status`             | `graduating` or `graduated`                              |
| `minCurvePercentage` | Minimum bonding curve % (0–100)                          |
| `maxCurvePercentage` | Maximum bonding curve % (0–100)                          |
| `minGraduatedAt`     | Only tokens graduated after this timestamp (ms)          |
| `maxGraduatedAt`     | Only tokens graduated before this timestamp (ms)         |

### REST: Tokens by Deployer

Find all tokens launched by a specific wallet:

```bash theme={null}
curl "https://data.solanatracker.io/deployer/{wallet}?launchpad=pumpfun" \
  -H "x-api-key: YOUR_API_KEY"
```

### WebSocket: Live Feed

Stream every new token the moment it's created:

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

ws.onopen = () => {
  ws.send(JSON.stringify({ type: "join", room: "latest" }));
};

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

  const { token, pools } = msg.data;
  if (pools[0]?.market !== "pumpfun") return;

  console.log(`New Pump.fun: ${token.name} (${token.symbol})`);
  console.log(`  Mint: ${token.mint}`);
  console.log(`  Deployer: ${pools[0]?.deployer}`);
};
```

***

## Track Bonding Curve Progress

### REST: Graduating Tokens

Get all tokens currently on a bonding curve:

```bash theme={null}
# Tokens with curve > 60%, at least 20 holders
curl "https://data.solanatracker.io/tokens/multi/graduating?minCurve=60&minHolders=20" \
  -H "x-api-key: YOUR_API_KEY"
```

| Parameter      | Description                        | Default |
| -------------- | ---------------------------------- | ------- |
| `limit`        | Number of tokens (max 500)         | 100     |
| `minCurve`     | Minimum curve %                    | 40      |
| `maxCurve`     | Maximum curve %                    | 100     |
| `minHolders`   | Minimum holder count               | 20      |
| `markets`      | Filter by market (comma-separated) | all     |
| `minLiquidity` | Minimum liquidity (USD)            | —       |
| `minMarketCap` | Minimum market cap (USD)           | —       |
| `reduceSpam`   | Filter out quick-graduated spam    | —       |

### WebSocket: Graduating Stream

```javascript theme={null}
// All graduating tokens
ws.send(JSON.stringify({ type: "join", room: "graduating" }));

// Only Pump.fun tokens with at least 50 SOL in the curve
ws.send(JSON.stringify({ type: "join", room: "graduating:pumpfun:50" }));
```

### WebSocket: Curve Percentage Alerts

Get notified when any token hits a specific bonding curve milestone:

```javascript theme={null}
// Alert at 30% — early signal
ws.send(JSON.stringify({ type: "join", room: "pumpfun:curve:30" }));

// Alert at 50% — halfway
ws.send(JSON.stringify({ type: "join", room: "pumpfun:curve:50" }));

// Alert at 80% — approaching graduation
ws.send(JSON.stringify({ type: "join", room: "pumpfun:curve:80" }));
```

Supported markets for curve alerts: `pumpfun`, `launchpad`, `boop`, `meteora-curve`.

***

## Detect Graduation

### REST: Recently Graduated

```bash theme={null}
curl "https://data.solanatracker.io/tokens/multi/graduated?limit=50" \
  -H "x-api-key: YOUR_API_KEY"
```

| Parameter      | Description                       |
| -------------- | --------------------------------- |
| `limit`        | Number of tokens (max 500)        |
| `page`         | Pagination page number            |
| `reduceSpam`   | Filter out quick-graduated tokens |
| `markets`      | Filter by market                  |
| `minLiquidity` | Minimum post-graduation liquidity |

### WebSocket: Graduated Stream

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

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

  const { token, pools, graduationTx, graduationTime } = msg.data;
  console.log(`Graduated: ${token.name}`);
  console.log(`  Pool: ${pools[0]?.poolId}`);
  console.log(`  Liquidity: $${pools[0]?.liquidity?.usd?.toLocaleString()}`);
  console.log(`  Tx: ${graduationTx}`);
};
```

***

## Example: Graduation Pipeline

Watch tokens across their full Pump.fun lifecycle:

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

ws.onopen = () => {
  ws.send(JSON.stringify({ type: "join", room: "pumpfun:curve:50" }));
  ws.send(JSON.stringify({ type: "join", room: "graduating:pumpfun:50" }));
  ws.send(JSON.stringify({ type: "join", room: "graduated" }));
};

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

  const room = msg.room;
  const name = msg.data?.token?.name || "Unknown";

  if (room?.includes("curve:")) {
    console.log(`[50% CURVE] ${name}`);
  } else if (room === "graduating") {
    console.log(`[GRADUATING] ${name}`);
  } else if (room === "graduated") {
    console.log(`[GRADUATED] ${name} — now on DEX`);
  }
};
```

***

## Swap Pump.fun Tokens

Use the [Raptor Swap API](/raptor/overview) to buy and sell Pump.fun tokens. It handles bonding curve swaps and post-graduation DEX swaps automatically.

```javascript theme={null}
const headers = { "Content-Type": "application/json" };

// Buy a Pump.fun token with 0.1 SOL
const response = await fetch("https://swap-v2.solanatracker.io/swap", {
  method: "POST",
  headers,
  body: JSON.stringify({
    wallet: "YOUR_WALLET_ADDRESS",
    from: "So11111111111111111111111111111111111111112",
    to: "TOKEN_MINT_ADDRESS",
    amount: 0.1,
    slippage: 15,
    priorityFee: 0.0005
  })
});

const { txn } = await response.json();
// Sign and send the transaction
```

Raptor automatically routes through Pump.fun's bonding curve for pre-graduation tokens, and through the DEX pool for graduated tokens.

See the full [Swap API guide](/guides/swap-api) for sending transactions and WebSocket streaming.

***

## Risk Signals

Pump.fun tokens carry specific risks you can monitor:

| Risk Factor              | Score | Meaning                                                   |
| ------------------------ | ----- | --------------------------------------------------------- |
| Pump.fun contract risks  | 10    | Pump.fun contracts can be changed by Pump.fun at any time |
| Incomplete bonding curve | 4000  | No DEX liquidity yet, still on the curve                  |

Use these Datastream rooms to monitor safety signals on any Pump.fun token:

| Room                  | What it tracks                |
| --------------------- | ----------------------------- |
| `sniper:{token}`      | Sniper wallet balance changes |
| `bundlers:{token}`    | Bundled transaction wallets   |
| `insider:{token}`     | Insider wallet movements      |
| `dev_holding:{token}` | Creator/deployer holdings     |
| `holders:{token}`     | Total holder count            |
| `top10:{token}`       | Top 10 holder concentration   |

See the [Safety Streams guide](/guides/datastream-safety) for full examples.

***

## Yellowstone gRPC (Advanced)

For low-level transaction parsing, use Yellowstone gRPC to stream raw Pump.fun transactions directly from Solana:

* [Pump.fun Buy/Sell Detection](/yellowstone-grpc/examples/pumpfun-transactions) — parse buy/sell events with full IDL decoding
* [Pump.fun Account Streaming](/yellowstone-grpc/examples/pumpfun-accounts) — monitor bonding curve account state changes

***

## Room Reference

| Room                       | What you get                                      |
| -------------------------- | ------------------------------------------------- |
| `latest`                   | All new tokens (filter by `market === "pumpfun"`) |
| `graduating`               | All tokens approaching curve completion           |
| `graduating:pumpfun:{sol}` | Pump.fun tokens with minimum SOL in curve         |
| `graduated`                | All tokens that just migrated to DEX              |
| `pumpfun:curve:{pct}`      | Tokens hitting a specific curve %                 |

## API Endpoints

| Endpoint                                                        | Description                            |
| --------------------------------------------------------------- | -------------------------------------- |
| [GET /tokens/multi/graduating](/data-api/get-graduating-tokens) | Tokens on bonding curve                |
| [GET /tokens/multi/graduated](/data-api/get-graduated-tokens)   | Recently graduated tokens              |
| [GET /tokens/latest](/data-api/get-latest-tokens)               | Newest tokens                          |
| [GET /search](/data-api/token-search)                           | Search with `launchpad=pumpfun` filter |
| [GET /deployer/{wallet}](/data-api/get-tokens-by-deployer)      | Tokens by deployer wallet              |

<CardGroup cols={2}>
  <Card title="Token Discovery" href="/guides/token-discovery">
    Trending, volume leaders, and top performers across all markets.
  </Card>

  <Card title="Token Discovery Streams" href="/guides/datastream-tokens">
    Real-time graduating, graduated, and curve percentage streams.
  </Card>

  <Card title="Safety Streams" href="/guides/datastream-safety">
    Sniper, bundler, insider, and holder monitoring.
  </Card>

  <Card title="Swap API" href="/guides/swap-api">
    Buy and sell tokens through Raptor with automatic routing.
  </Card>
</CardGroup>
