Enhanced Stream

The PumpFun API for real-time Solana token launches, trades, and graduations

Pump.fun is the busiest memecoin pipe on Solana. Millions of trades a day across thousands of bonding curves, with graduations migrating tokens into PumpSwap and Raydium CPMM. The way most third-party APIs handle this is REST plus polling, which is slow enough that by the time you see a new token, the price has 4x'd. We push every Pump.fun event to your app the moment it lands: token creations, buys, sells, graduations, and the MEV-relevant transaction metadata (compute budget, priority fee, Jito tip). One gRPC connection. Sub-50ms p99. JSON or Protobuf, your choice.

Sub-50ms latencyToken creations + tradesGraduations & migrationsMEV transaction metadataJSON or ProtobufNo rate limits
On-chain programs

Try it live: PumpFun streams

decoded solana events over grpc · click Run to see live data

PumpFun Trades
1grpcurl -H "x-api-key: YOUR_API_KEY" \
2  -d '{"topic":"prod.rpc.solana.pumpfun.trade","format":"JSON"}' \
3  stream-1.nln.clr3.org:443 nln.stream.v1.StreamService/Subscribe
Live Output

See real data

Click Run to stream 5 live PumpFun Trades messages

Pro: 2 streams $49/mo · Ultra: 20 streams $199/mo · pre-parsed, zero infra

PumpFun streaming performance

last reviewed 2026-04-28

End-to-end latency
<50ms
p50 from on-chain transaction to your callback
Verified 2026-04-28
Daily Pump.fun events
2M+
Across creations, trades, and graduations on busy days
Stream uptime SLO
99.99%
Pro and Ultra plans, monthly rolling
Time to first event
5 min
Signup → API key → live stream

Token creations

CreateEntry
topic = prod.rpc.solana.pumpfun.create

Fires every time a new token is launched on Pump.fun. Includes the mint, the bonding curve, the creator wallet, the initial reserves, and the metadata URI, everything a sniper needs to size and submit a buy in the next slot.

FieldTypeDescription
signaturestringTransaction signature
tx_indexuint64Transaction index in the block
bonding_curvestringBonding curve account address
creatorstringWallet that created the token
is_mayhem_modebool?Whether token was created in mayhem mode
mintstringToken mint address
namestringToken display name
symbolstringToken ticker symbol
uristringMetadata JSON URI
token_programstring?SPL Token or Token-2022 program
token_total_supplystringTotal supply (raw units)
real_token_reservesstringReal token reserves in bonding curve
virtual_sol_reservesstringVirtual SOL reserves (lamports)
virtual_token_reservesstringVirtual token reserves (raw)
userstringWallet that signed the transaction
timestampstringUnix timestamp
slotuint64Solana slot number
block_timestringBlock timestamp
Sample payload
{
  "signature": "3Kf63DJexeo99sgZXnk52cKvnRojNFHv...",
  "tx_index": "724",
  "bonding_curve": "2z9Jxwzv7W7w7dczbViNKgLM7QHCJzhA3MeMjwRFYkN1",
  "creator": "FjXrmGSiAhYw17fiCboZaTQMCQ8RtLte7XymZPhkGGwb",
  "is_mayhem_mode": false,
  "mint": "HakYYnqeNDt8xweEfznycLxvxLmXUagYXcc4bP7aVwah",
  "name": "Mega Viral",
  "symbol": "Kyupiin",
  "uri": "https://mwgy.us/m/xOdV.json",
  "token_program": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
  "token_total_supply": "1000000000000000",
  "real_token_reserves": "793100000000000",
  "virtual_sol_reserves": "30000000000",
  "virtual_token_reserves": "1073000000000000",
  "user": "FjXrmGSiAhYw17fiCboZaTQMCQ8RtLte7XymZPhkGGwb",
  "timestamp": "1775629975",
  "slot": "411796395",
  "block_time": "1775629975"
}

Subscribe to token creations

topic: prod.rpc.solana.pumpfun.create

import Client from "@grpc/grpc-js";
import { StreamServiceClient } from "./gen/stream_service_grpc_pb";
import { SubscribeRequest } from "./gen/stream_service_pb";

const client = new StreamServiceClient(
  "stream-1.nln.clr3.org:443",
  Client.credentials.createSsl()
);
const metadata = new Client.Metadata();
metadata.set("x-api-key", "YOUR_API_KEY");

const req = new SubscribeRequest();
req.setTopic("prod.rpc.solana.pumpfun.create");
req.setFormat(1); // JSON

const stream = client.subscribe(req, metadata);
stream.on("data", (msg) => {
  const data = JSON.parse(Buffer.from(msg.getPayload()).toString());
  console.log(data);
});
stream.on("error", (err) => console.error("Stream error:", err));

Trades

TradeEntry
topic = prod.rpc.solana.pumpfun.trade

Every buy and sell on the Pump.fun bonding curve. Includes SOL/token amounts, the post-trade reserves state, fees, creator fees, and the instruction name (buy or sell).

FieldTypeDescription
signaturestringTransaction signature
tx_indexuint64Transaction index in the block
mintstringToken mint address
sol_amountstringSOL amount (lamports)
token_amountstringToken amount (raw units)
is_buyboolTrue if buy, false if sell
userstringTrader wallet address
timestampstringUnix timestamp
virtual_sol_reservesstringVirtual SOL reserves after trade
virtual_token_reservesstringVirtual token reserves after trade
real_sol_reservesstringReal SOL reserves after trade
real_token_reservesstringReal token reserves after trade
fee_recipientstringFee recipient address
fee_basis_pointsstringFee in basis points
feestringFee amount (lamports)
creatorstringToken creator wallet
creator_fee_basis_pointsstringCreator fee basis points
creator_feestringCreator fee amount
ix_namestring?Instruction name ("buy" or "sell")
slotuint64Solana slot number
block_timestringBlock timestamp
Sample payload
{
  "signature": "2FhofrT4F6vY88bkSsrfYkqzsuYoM6oz...",
  "tx_index": "1068",
  "mint": "6DLtSmrUzpoijBnF6SYgErWkeXPw2xCff3VMNxkYpump",
  "sol_amount": "13636072",
  "token_amount": "488316041498",
  "is_buy": false,
  "user": "BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s",
  "timestamp": "1775630038",
  "virtual_sol_reserves": "21741714044",
  "virtual_token_reserves": "1071646576884438",
  "real_sol_reserves": "36166972",
  "real_token_reserves": "791746576884438",
  "fee": "0",
  "creator": "8Kx61ptBPNLiG6SvDBA1XAwpzLhsw88Z9cSS1iQNDY3x",
  "creator_fee": "0",
  "ix_name": "sell",
  "slot": "411796554"
}

Subscribe to trades

topic: prod.rpc.solana.pumpfun.trade

import Client from "@grpc/grpc-js";
import { StreamServiceClient } from "./gen/stream_service_grpc_pb";
import { SubscribeRequest } from "./gen/stream_service_pb";

const client = new StreamServiceClient(
  "stream-1.nln.clr3.org:443",
  Client.credentials.createSsl()
);
const metadata = new Client.Metadata();
metadata.set("x-api-key", "YOUR_API_KEY");

const req = new SubscribeRequest();
req.setTopic("prod.rpc.solana.pumpfun.trade");
req.setFormat(1); // JSON

const stream = client.subscribe(req, metadata);
stream.on("data", (msg) => {
  const data = JSON.parse(Buffer.from(msg.getPayload()).toString());
  console.log(data);
});
stream.on("error", (err) => console.error("Stream error:", err));

Graduations

GraduateEvent
topic = prod.rpc.solana.pumpfun.graduate

Fires when a token completes its bonding curve and migrates to a DEX (PumpSwap or Raydium CPMM). Includes the new pool address, the migrated SOL and token amounts, and the migration fee.

FieldTypeDescription
signaturestringTransaction signature
slotuint64Solana slot number
tx_indexuint32Transaction index in the block
userstringWallet that triggered graduation
mintstringGraduated token mint address
mint_amountuint64Token amount moved to pool
sol_amountuint64SOL amount moved to pool (lamports)
pool_migration_feeuint64Migration fee (lamports)
bonding_curvestringBonding curve account address
timestampint64Unix timestamp
poolstringNew PumpSwap/Raydium pool address
Sample payload
{
  "signature": "5YmGe3F9kxQ8v7B2pWzN...",
  "slot": "411800123",
  "tx_index": 42,
  "user": "D9hiiHLWMdyZgDCnDm5goGcrvLzXVa3QmLQpaGvkWoXi",
  "mint": "AXWt2Ay6RuMqxD8FKMzs83ARzQPKSj6HtHE1k2Vxpump",
  "mint_amount": 206900000000000,
  "sol_amount": 78500000000,
  "pool_migration_fee": 1500000000,
  "bonding_curve": "ByYaWkuWFWEFsjPbWYTbF7GVDMc9MkhUVkucjawpvh4T",
  "timestamp": 1775630100,
  "pool": "8kJfq3Dm1Jv4e9WkBpTz6nEQ7PzGbiCfShNqR2Vxpump"
}

Subscribe to graduations

topic: prod.rpc.solana.pumpfun.graduate

import Client from "@grpc/grpc-js";
import { StreamServiceClient } from "./gen/stream_service_grpc_pb";
import { SubscribeRequest } from "./gen/stream_service_pb";

const client = new StreamServiceClient(
  "stream-1.nln.clr3.org:443",
  Client.credentials.createSsl()
);
const metadata = new Client.Metadata();
metadata.set("x-api-key", "YOUR_API_KEY");

const req = new SubscribeRequest();
req.setTopic("prod.rpc.solana.pumpfun.graduate");
req.setFormat(1); // JSON

const stream = client.subscribe(req, metadata);
stream.on("data", (msg) => {
  const data = JSON.parse(Buffer.from(msg.getPayload()).toString());
  console.log(data);
});
stream.on("error", (err) => console.error("Stream error:", err));

Transaction metadata (MEV)

PumpfunTransaction
topic = prod.rpc.solana.pumpfun.transaction

MEV-focused transaction metadata: compute budget, priority fee, Jito tip, instruction count, and unique program IDs touched. The signal layer for MEV searchers and gas-optimization research.

FieldTypeDescription
signaturestring?Transaction signature
slotuint64?Solana slot number
tx_indexuint32?Transaction index in the block
first_signerstring?First signer (fee payer) wallet
num_signersuint32?Number of signers
signers_hashedstring?MD5 hash of all signers
compute_unit_limituint64?Compute unit limit requested
compute_unit_priceuint64?Compute unit price (micro-lamports)
priority_feeuint64?Priority fee (lamports)
tip_provideruint32?Tip provider ID (e.g., Jito)
tip_walletstring?Tip recipient wallet
tip_amountuint64?Tip amount (lamports)
is_inner_instructionbool?Whether PumpFun ix is a CPI
ix_countuint32?Total instruction count
iix_countuint32?Inner instruction count
unique_programsstring?Comma-separated unique program IDs
Sample payload
{
  "signature": "UpzhqxTT4djEbPeNoejjxczGfX3afrfX...",
  "slot": "411796627",
  "tx_index": 41,
  "first_signer": "DMw5597ixEk71fkdgcgZjCTaVXmtCKiA74gKDNDjpct2",
  "compute_unit_limit": "400000",
  "compute_unit_price": "25000",
  "priority_fee": "10000",
  "tip_provider": 1,
  "tip_amount": "1000000",
  "ix_count": 6,
  "iix_count": 10
}

Subscribe to transaction metadata (mev)

topic: prod.rpc.solana.pumpfun.transaction

import Client from "@grpc/grpc-js";
import { StreamServiceClient } from "./gen/stream_service_grpc_pb";
import { SubscribeRequest } from "./gen/stream_service_pb";

const client = new StreamServiceClient(
  "stream-1.nln.clr3.org:443",
  Client.credentials.createSsl()
);
const metadata = new Client.Metadata();
metadata.set("x-api-key", "YOUR_API_KEY");

const req = new SubscribeRequest();
req.setTopic("prod.rpc.solana.pumpfun.transaction");
req.setFormat(1); // JSON

const stream = client.subscribe(req, metadata);
stream.on("data", (msg) => {
  const data = JSON.parse(Buffer.from(msg.getPayload()).toString());
  console.log(data);
});
stream.on("error", (err) => console.error("Stream error:", err));

What teams build on this stream

Sniper bots

Subscribe to the create topic and act on new mints in the next slot. The decoded payload includes the bonding curve, initial reserves, and the creator wallet, which is enough to size and submit a Jito-bundled buy without a separate getMint round-trip. The latency budget is mostly your code.

Copy trading

Filter the trade topic by leader-trader wallet and replicate sized buys and sells in the next slot. Sub-50ms parsing keeps most of the alpha intact even on volatile memecoin pairs.

MEV & priority-fee analytics

The transaction topic surfaces compute-unit price, priority fee, and Jito tip on every Pump.fun transaction. Drives block-builder pricing, anti-frontrun logic, and the gas-burn dashboards your CFO actually wants.

Graduation alerts

Subscribe to the graduate topic and pair with the PumpSwap stream to capture both legs of a migration in the same transaction. The most-watched signal in memecoin trading.

Pricing, and where we sit vs the rest

The Pump.fun data market splits three ways. PumpPortal sells per-message WebSocket. Cheap on a quiet day, expensive on a memecoin Tuesday. Bitquery sells GraphQL with deep historical queries. Best for analytics and post-hoc work; weaker for sub-second decisioning. Shyft ships parsed gRPC streams that overlap with our coverage. We charge flat, $49/month for two streams and $199/month for twenty, with no per-event surcharge and explicit MEV-transaction coverage that the others don't have.

Pro covers most production sniper and copy-trading workloads. Ultra adds 30 hours per month of custom Geyser-plugin development time, useful for teams that want a custom decoder fused with the existing parsed streams. Full breakdown is on the pricing page.

Frequently asked questions

Every Pump.fun event on Solana, pushed to your app the moment it lands on chain. Token creations, trades, bonding-curve graduations, and MEV-relevant transaction metadata. One gRPC connection. Decoded structures, not raw logs. Under 50ms from the on-chain transaction to your callback.

Start streaming PumpFun in under 5 minutes

Pro plan from $49/mo includes 2 parsed streams. Pick any two of create, trade, graduate, transaction. Or combine with PumpSwap, Raydium, Orca, Meteora.

Ready to get started?

Get your free API key and start building in under 30 seconds.

Talk to Sales