← Back to guides
March 1, 2026·8 min read

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

Parsing Pump.fun Bonding Curves via gRPC in < 5ms
Pump.fungRPCNode.jsTrading BotBonding Curve

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

EventDescriptionKey Fields
createNew token launched on bonding curvetoken, name, symbol, creator
buySOL spent to buy tokens on curvesol_amount, token_amount, bonding_curve_pct
sellTokens sold back to curve for SOLsol_amount, token_amount, bonding_curve_pct
migrateToken graduated to Raydium AMMtoken, 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 create events to catch new tokens at launch
  • Watch curve %: The bonding_curve_pct field tells you how close a token is to migration — higher = more demand
  • Track migrations: migrate events 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