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.

pumpfungraduationwebsocketdatastreambonding-curve

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.

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.