Solana Tracker LogoSolana Tracker
Swap
Developers
⌘K
Affiliate
All Resources
Detect Pump.fun Mints from gRPC Instructions
Pump.funTypeScriptMarch 25, 20264 min readUpdated September 20, 2026Solana Tracker

Detect Pump.fun Mints from gRPC Instructions

Build a Pump.fun mint detector with program validation, create and create_v2 decoding, lookup-table account resolution, and recovery tests.

  • pumpfun,
  • grpc,
  • typescript,
  • token-launch,
  • bonding-curve
Yellowstone gRPC›Pump.fun API›Solana Data API›

Detecting a new Pump.fun mint from raw transactions requires identifying a create instruction and resolving its mint account. A program subscription alone also delivers buys, sells, and other interactions. Treat the subscription as a candidate feed, then decode with the current program IDL.

Use raw decoding when instruction detail matters

Choose Datastream launch events for indexed token objects. Choose gRPC when you need instruction-level timing, custom fields, or independent decoding. Raw streaming adds parser maintenance and recovery work; it does not guarantee that every observation becomes finalized chain history.

Configure the Pump.fun subscription

Start with the Yellowstone setup. Read the Pump program address and IDL from the official Pump public documentation. Keep the IDL revision with your deployed parser so changes are reviewable.

Use failed: false and vote: false for successful non-vote candidates. Keep processed observations provisional and preserve slot plus signature for later reconciliation.

Decode both create variants

The parser needs to recognize the create variants present in its pinned IDL, including create and create_v2. Read each discriminator from the IDL rather than defining one constant and referencing an undefined second discriminator.

For each transaction:

  1. Build the effective key list from static keys, loaded writable keys, then loaded readonly keys.
  2. Visit top-level and inner instructions while preserving their positions.
  3. Resolve programIdIndex; skip instructions from another program.
  4. Match the discriminator against supported create instructions.
  5. Decode using that instruction's IDL and resolve its named mint account from its account layout.
  6. Emit every supported create, including mint, signature, slot, and instruction path.

This is a parser algorithm, not a claim that all instruction variants have identical account positions. The linked companion contains the broader project structure; compare its bundled IDL with upstream before use.

Treat metadata as untrusted input

A token name, symbol, and URI can be empty, duplicated, long, or maliciously formatted. Use the mint as identity. Escape text in the UI and limit length. Fetch metadata URIs through a controlled service with timeouts, response-size limits, and protections against private-network URLs.

Do not block the transaction callback while fetching images or metadata. Emit the mint immediately and enrich it asynchronously. Unknown metadata should not cause the create event to disappear.

Test the cases that lose mints

Keep fixtures for each supported create variant, an unrelated instruction with similar bytes, a CPI create, a versioned transaction using loaded addresses, a malformed body, and multiple creates in one transaction. Replaying the same fixture twice should not create two durable records.

The September changelog notes Pump.fun Transaction V1 and holder-reward support. Those platform updates are a reason to review assumptions in a custom parser; they do not automatically update a locally bundled IDL.

Follow the mint through its lifecycle

Creation, curve completion, migration, and destination-pool availability are separate observations. Use the graduation guide to model those states. Do not label every curve account update as a graduation or assume a Raydium destination.

FAQ

Can a single transaction create more than one token?

Design the parser to retain every matching instruction instead of returning after the first.

Does accountInclude validate the instruction program?

No. Resolve and check programIdIndex for each candidate instruction.

What happens during a disconnect?

Record the gap, reconnect once, restore filters, and recover missed state through an appropriate historical source.

References

  • Pump program documentation and IDLs
  • Platform release notes

Companion project

The companion example contains a fuller project layout. Check the companion dependencies and bundled program layouts against the versions described here before use. Keep credentials in a local environment file, never in a shared browser workspace.

View source on GitHub›

Runnable Node.js project — clone from GitHub, add keys to .env, then npm start. gRPC examples use native dependencies — run locally with Node.js.

Related Guides

Stream Pump.fun Token Launches with TypeScript
Pump.fun

Stream Pump.fun Token Launches with TypeScript

Read more
Find Pump.fun First Buyers with the PnL V2 API
Pump.fun

Find Pump.fun First Buyers with the PnL V2 API

Read more
Track Pump.fun Bonding Curves and Graduations
Pump.fun

Track Pump.fun Bonding Curves and Graduations

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
  • FOMO Leaderboard
  • GMGN Leaderboard
  • Pump.fun App Leaderboard
  • Terminal Leaderboard
  • Platform Compare
  • My Positions
  • Teams

Resources

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