Tracking Pump.fun Token Mints in Real Time with GetBlock’s Yellowstone gRPC
A complete guide on how to track Pump.fun token launches on Solana in real-time using GetBlock’s Yellowstone gRPC service.
Overview
Traditional blockchain monitoring relies on polling RPC endpoints every few seconds, which introduces significant latency (2-5 seconds) and checking for updates that may not exist.
GetBlock's Yellowstone gRPC service solves this by streaming data from Solana validators in real time.
Here is a comparison:
2-5 second delays, constant API requests, high resource usage
1-3 second delays, server pushes updates when available
~400ms latency, bidirectional streaming, direct validator connection
Why GetBlock’s Yellowstone gRPC?
GetBlock provides access to Solana's Yellowstone Geyser gRPC plugin, delivering real-time blockchain data through a high-performance streaming protocol:
Ultra-Low Latency: Direct streaming from validators with ~400ms latency vs 2-5 seconds with traditional RPC polling
Efficient Filtering: Subscribe only to the specific programs and accounts you need, reducing bandwidth and processing overhead
Bidirectional Streaming: Single persistent connection handles both requests and data flow, eliminating polling waste
No Infrastructure Needed: GetBlock manages validators, updates, and monitoring across global data centers (Europe, USA, Asia)
Simple Integration: Standard HTTPS endpoint with token authentication, works with existing gRPC client libraries.
In this guide, you will learn how to:
Connects to GetBlock's Yellowstone gRPC service
Subscribes to all transactions involving Pump.fun's program
Filters for token creation instructions specifically
Parses instruction data to extract token metadata
Extracts account addresses (mint, creator, bonding curve)
Displays formatted output with Solscan explorer links
Tracks statistics and auto-reconnects on errors
Prerequisites
Before you begin, ensure you have:
Node.js and npm installed
Basic knowledge of JavaScript
A Dedicated Solana Node subscription on GetBlock - Required for Yellowstone gRPC access
Technology Stack:
Node.js
@triton-one/yellowstone-grpc - Official Yellowstone gRPC client
bs58 - Base58 encoding for Solana addresses
GetBlock’s Dedicated Solana Node with Yellowstone add-on
Step 1: Set Up Your GetBlock’s Yellowstone Endpoint
Deploy Your Dedicated Solana Node
First, you need to deploy a dedicated Solana node on GetBlock with the Yellowstone gRPC add-on enabled.
1. Sign up or log in
Go to GetBlock
Create an account or log in to your existing account
2. Deploy your dedicated node
Navigate to your user Dashboard
Switch to the "Dedicated nodes" tab
Scroll down to "My endpoints"
Under "Protocol", select Solana
Set the network to Mainnet
Click Get

3. Enable the Yellowstone gRPC add-on
In Step 3 of your node setup (Select API and Add-ons)
Check the box for Yellowstone gRPC under Add-ons
Complete payout and finalise the setup

Generate a Yellowstone gRPC Access Token
Once your node is live, you'll create an access token to authenticate your gRPC connections.
1. Return to your dashboard
Under your dedicated node dashboard, click on "My endpoints".
Select Yellowstone gRPC
Click on Add to generate an access token

2. Your endpoint URL
You'll receive an HTTPS-style gRPC endpoint URL based on your chosen region:
Ensure you securely store both the base endpoint and the access token. You'll need them in your code to authenticate with GetBlock's Yellowstone service.
Step 2: Set up Development Environment
Create a directory for your project
Install Dependencies:
What these packages do:
@triton-one/yellowstone-grpc - Official client for connecting to Yellowstone gRPC services (works with GetBlock)
[email protected] - Encodes binary data to base58 format (Solana's address format). Version 5.0.0 supports vanilla js.
Project Structure
Create the following files to have a basic structure for your project:
Step 3: Start Building Your Monitor
Import dependencies into
pumpfun-monitor.js:
What this does:
yellowstone gRPC Client for connecting to GetBlock
CommitmentLevelSettings for choosing transaction confirmation speedbs58for converting binary data into human-readable Solana addresses.
Add your GetBlock configuration:
What this does:
Stores your GetBlock credentials.
Replace YOUR_ACCESS_TOKEN with the actual token you generated in Step 1.
If you chose a different region, use that endpoint instead (e.g., https://go.getblock.us/<ACCESS_TOKEN> or https://go.getblock.asia/<ACCESS_TOKEN>.
Add Pump.fun constants:
What this does:
PUMPFUN_PROGRAM- The unique program ID for Pump.fun on SolanaCREATE_DISCRIMINATOR- The 8-byte identifier that marks token creation instructions (derived from hashing "global:create")
Add statistics tracker:
This creates an object to track how many tokens you've detected and when the last one appeared.
Step 4: Build Data Parser Functions
Now, you'll add a function to decode the binary data from Pump.fun's instruction format.
Add string decoder:
What this does:
Pump.fun stores strings as [4 bytes for length][UTF-8 string data]. This function reads that format and returns both the string value and how many bytes were consumed.
Add Instruction Parser:
What this does:
Reads the token's metadata from Pump.fun's instruction data format. The data is organized like this:
First 8 bytes: Discriminator (identifies this as a "create" instruction)
Token name (e.g., "Super Doge")
Token symbol (e.g., "SDOGE")
Metadata URI (link to token image and details)
The function starts at byte 8 (after the discriminator) and reads each string one by one using the decodeString helper function.
Step 5: Add Account Address Extractor
The next step is to create a function that extracts account addresses to identify newly created tokens' mint address, bonding curve pool address and creator's wallet address.
What this does:
Extracts three key addresses from the instruction:
accounts[0] - The newly created token's mint address
accounts[2] - The bonding curve pool address
accounts[7] - The creator's wallet address
These are defined by Pump.fun's program structure.
Step 6: Add Instruction Verifier
The next step is to verify the instruction:
What this does:
Verifies two things:
The instruction calling Pump.fun's program
The first 8 bytes which match the create discriminator
Only instructions passing both checks are token creations.
Step 7: Add Display Function
The next step is to add a function that displays the data in a readable format:
What this does:
Formats and displays all token information in a readable format
Updates statistics
Includes Solscan link to the token, transaction hash and creator.
Step 8: Build the Main Monitor Function
Now you'll create the core function that connects to GetBlock and processes blockchain data.
This section is broken into smaller parts for clarity.
Part A: Start the Function and Connect
What this does:
Creates a client connection to GetBlock using your credentials and opens a bi-directional streaming connection.
Part B: Configure Subscription
What this does:
Tells GetBlock you only want transactions involving Pump.fun's program, with CONFIRMED commitment level (~2-3 seconds, balanced speed/reliability).
Part C: Handle Incoming Data
What this does:
Processes each message from GetBlock - responds to keep-alive pings and extracts transaction data.
Part D: Process Instructions
What this does:
For each instruction, it checks if it's a create, parses metadata, extracts addresses, and displays results.
Part E: Handle Errors
What this does:
It handles stream errors and connection closures.
Part F: Send Request
What this does:
Sends your subscription request to GetBlock and confirms the connection is active.
This completes the monitorPumpfunMints() function - everything above is part of this one function in your pumpfun-monitor.js file.
Step 9: Add Execution Code
Finally, add the code to run your monitor:
What this does:
Runs your monitor and automatically restarts it if it crashes.
What this does:
Handles
Ctrl+Cto show final statistics before shutdown.
Step 10: Run Your Monitor
Run the following command in your terminal to start the server:
Expected Output
You'll see:
This means you're connected to GetBlock and monitoring is active.
When a Token Appears
When a new token appears, it displays like this:
Congratulations 🎉, you've successfully created an application that tracks Pump.fun token minted.
Troubleshooting
Connection issues:
This means there is a connection glitch:
Verify your ENDPOINT and TOKEN in
pumpfun-monitor.jsCheck your GetBlock dashboard to confirm if the node is active
Test your internet connection
Tokens not showing:
Be patient - Pump.fun typically has 50-200 tokens per day
Visit pump.fun to verify tokens are being created
Try
CommitmentLevel.PROCESSEDfor faster updates
Parser Errors:
These warnings are normal. This means some transactions aren't structured.
Security Best Practices
This is highly recommended to use environment variables instead of hard-coding. Create an .env file and store your token like this:
and reference it in your pumpfun-monitor.js like this:
Remember to add the .env file in your .gitignore file.
Conclusion
In this guide, you learn how to build a tracking application that monitors Pump.fun token minted using GetBlock Yellowstone gRPC. This guide explains the importance of using GetBlock Yellowstone gRPC, how to get your Yellowstone gRPC token, set up the application to get the expected result.
It also explains how to troubleshoot some errors you may encounter and possible ways to enhance the security and maintainability of your applications.
Additional Resources
Last updated
Was this helpful?