Parsing Pump.fun Bonding Curves via gRPC in < 5ms

Pump.fun token launches happen in milliseconds. If your bot is polling via JSON-RPC or parsing raw WebSocket events, you're already too late. This guide shows how to receive pre-parsed Pump.fun events — token creates, buys, sells, and migrations — using Subglow filtered gRPC, with code you can copy directly into your trading bot.
Why Pump.fun Data Needs Server-Side Filtering
The Solana network processes thousands of transactions per second. Pump.fun alone generates hundreds of events per minute during peak activity. If you subscribe to the raw Yellowstone gRPC firehose, your bot receives every transaction on the network — and spends most of its CPU discarding irrelevant data.
With server-side filtering, only Pump.fun transactions reach your bot. Our infrastructure handles the Borsh deserialization and instruction parsing, delivering clean JSON with fields like sol_amount, bonding_curve_pct, and token_amount already extracted.
Supported Pump.fun Events
| Event | Description | Key Fields |
|---|---|---|
create | New token launched on bonding curve | token, name, symbol, creator |
buy | SOL spent to buy tokens on curve | sol_amount, token_amount, bonding_curve_pct |
sell | Tokens sold back to curve for SOL | sol_amount, token_amount, bonding_curve_pct |
migrate | Token graduated to Raydium AMM | token, raydium_pool, liquidity |
Node.js Implementation
Connect to Subglow and start receiving filtered Pump.fun events. This example logs every buy where the bonding curve is under 50% — the sweet spot for early entries.
const client = new Subglow({
url: "grpc.subglow.io:443",
apiKey: process.env.SUBGLOW_KEY,
filter: ["pump_fun"],
});
client.subscribe((tx) => {
const { type, parsed } = tx;
if (type === "buy" && parsed.bonding_curve_pct < 50) {
console.log(`Early buy: ${parsed.sol_amount} SOL at ${parsed.bonding_curve_pct}%`);
}
});
What You'd Need Without Filtered gRPC
Without server-side filtering, you'd need to: subscribe to the raw Yellowstone firehose (~15,000 tx/s), filter by Pump.fun Program ID 6EF8rrecthR3GrMvjWpMS4MXf..., deserialize each Borsh-encoded instruction, map discriminators to event types, and handle all the error cases. That's 200+ lines of infrastructure code that breaks every time Pump.fun ships an update.
With Subglow, it's 10 lines. And the parsing is always up to date.
Best Practices for Pump.fun Bots
- Filter early: React to
createevents to catch new tokens at launch - Watch curve %: The
bonding_curve_pctfield tells you how close a token is to migration — higher = more demand - Track migrations:
migrateevents mean the token has graduated to Raydium with real liquidity - Use slot lag as timing: Subglow delivers events ~4ms after the slot — fast enough for most strategies
Ready to try it?
Get your API key and start receiving filtered data in under 5 minutes. Free tier available.
Get started →