Solana Tracker LogoSolana Tracker
Swap
Developers
⌘K
Affiliate
All Resources
Catch Pump.fun Graduations Before and After Migration
Pump.funTypeScriptMay 29, 20262 min read

Catch Pump.fun Graduations Before and After Migration

Alert before a Pump.fun bonding curve fills, then catch the exact graduation event as liquidity migrates to Raydium.

  • pumpfun,
  • graduation,
  • websocket,
  • datastream,
  • bonding-curve
Pump.fun API›Solana Data API›

Graduation alerts need warning and confirmation

A Pump.fun token "graduates" when its bonding curve fills up and liquidity migrates to Raydium / pumpfun-amm. That moment matters for trading, and you want to see it coming, not after the fact. A good graduation monitor tracks both sides of the event: tokens approaching the curve threshold and tokens that just migrated.

What you need

  • Node.js 18+
  • A Solana Tracker API key (free) and Datastream key (Premium+, same dashboard)

Step 1: Alert on near-graduation (bonding curve %)

The Datastream can notify you as soon as a token crosses a curve threshold:

import WebSocket from 'ws';
(globalThis as any).WebSocket = WebSocket;
const { Datastream } = await import('@solana-tracker/data-api');
const ds = new Datastream({ wsUrl: `wss://datastream.solanatracker.io/${process.env.ST_DATASTREAM_KEY}` });
await ds.connect();

ds.subscribe.curvePercentage('pumpfun', 90).on((token) => {
  const pct = token.pools[0]?.curvePercentage;
  console.log(`Near graduation: ${token.token.mint}, ${pct}%`);
});

Step 2: Catch the graduation moment itself

ds.subscribe.graduated().on((token) => {
  const pool = token.pools[0]?.poolId;
  console.log(`Graduated: ${token.token.name} -> ${pool}`);
});

Step 3: Fetch recently graduated tokens (REST, for backfill)

const graduated = await fetch(
  'https://data.solanatracker.io/tokens/multi/graduated',
  { headers: { 'x-api-key': process.env.ST_API_KEY } }
).then(r => r.json());

Step 4: Combine into one pipeline

const watching = new Set<string>();

ds.subscribe.curvePercentage('pumpfun', 85).on(t => watching.add(t.token.mint));

ds.subscribe.graduated().on(t => {
  if (watching.has(t.token.mint)) {
    console.log('Watchlist token graduated:', t.token.mint);
    watching.delete(t.token.mint);
  }
});

FAQ

What does "graduation" mean on Pump.fun?

The moment the bonding curve is full and liquidity migrates to a Raydium or pumpfun-amm pool.

Can I choose the threshold myself?

Yes, pass any percentage to curvePercentage("pumpfun", threshold), e.g. 80, 90 or 95.

Do I get pool data at graduation?

Yes, token responses include pool and curve data so you can find the new Raydium pool immediately.

Previous: Stream Pump.fun launches -> · More on the Pump.fun API page.

Download the example

Clone the full runnable project on GitHub, npm install && npm start with your keys in .env. Or open it in StackBlitz to run in your browser (free). See the tutorial for step-by-step context.

View source on GitHub›Run in StackBlitz›

Runnable Node.js project — clone from GitHub, add keys to .env, then npm start. StackBlitz runs REST and Datastream examples in your browser for free.

Related Guides

Stream Pump.fun Launches Before REST Polling Catches Up
Pump.fun

Stream Pump.fun Launches Before REST Polling Catches Up

Read more
Detect New Pump.fun Token Mints with Solana gRPC
Pump.fun

Detect New Pump.fun Token Mints with Solana gRPC

Read more
Find Pump.fun First Buyers Before You Trade
Pump.fun

Find Pump.fun First Buyers Before You Trade

Read more

Products

  • Data API
  • Pump.fun API
  • Solana RPC
  • Dedicated Nodes
  • Yellowstone gRPC
  • Raptor Swap API
  • Enterprise

Trading

  • Swap
  • Latest Tokens
  • Trending
  • Top Gainers
  • Memescope
  • Whale Watch
  • KOL Tracker

Tools

  • Wallet Tracker
  • Rugcheck
  • PnL Leaderboard
  • KOLScan
  • Axiom Leaderboard
  • Photon Leaderboard
  • Bloom Leaderboard
  • My Positions
  • Teams

Resources

  • Developer Guides
  • Blog
  • Documentation
  • API Reference
  • Status
  • Affiliate Program — 25% recurring, uncapped
Solana TrackerSolana Tracker© 2026
Terms of ServicePrivacy PolicyContact