Every new Solana liquidity pool, the moment it lands, in one stream
New pool detection on Solana isn't a single subscription. It's five. Raydium AMM v4 fires initialize2. Raydium CPMM fires createPool. Meteora DLMM fires initialize_lb_pair. Orca Whirlpool fires initializePool. PumpSwap fires create_pool. Five program IDs, five instruction names, five different account layouts, and any tracker that misses one is missing real launches. Birdeye and DexScreener show new pairs after their indexers catch up; you want the same data, decoded, before the aggregators see it. NoLimitNodes ships every pool-launch instruction across all five programs over a single gRPC stream, parsed, with the base mint, quote mint, initial reserves, and pool address already extracted. p50 from slot landing to your callback is around 12ms.
- Raydium AMM v4675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8, Constant-product pools. The initialize2 instruction is the canonical "new pool" signal
- Raydium CPMMCPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C, Newer constant-product. Used by Raydium Launchpad and post-Pump.fun graduations
- Meteora DLMMLBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo, Bin-based DLMM. initialize_lb_pair fires on each new pair launch
- Orca WhirlpoolwhirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc, Concentrated liquidity, tick-spacing aware. initializePool plus initializePoolV2 for Token-2022
- PumpSwappAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA, Pump.fun's post-graduation AMM. create_pool fires when a bonding curve completes
The pool-launch instructions you can stream
every initialize_* across Raydium, Meteora, Orca, and PumpSwap
| Event | Type | Description | Frequency | Latency |
|---|---|---|---|---|
| initialize2 (Raydium AMM v4) | instruction | New constant-product pool on AMM v4. Carries base mint, quote mint, openTime, and initial coin/PC amounts. | Medium | 12ms |
| createPool (Raydium CPMM) | instruction | New CPMM pool. Used by Raydium Launchpad. Carries token0/token1 mints, AMM config, and initial liquidity. | High | 12ms |
| initialize_lb_pair (Meteora DLMM) | instruction | New DLMM pair launch. Includes activeId (active bin), binStep, base/quote mint pair. | Medium | 12ms |
| initialize_lb_pair2 (Meteora DLMM) | instruction | Variant of initialize_lb_pair with extended preset config support. Same signal, different account shape. | Medium | 12ms |
| initializePool (Orca Whirlpool) | instruction | New Whirlpool. Carries token mint A/B, tickSpacing, and initialSqrtPrice. | Medium | 12ms |
| initializePoolV2 (Orca Whirlpool) | instruction | Token-2022-aware pool initialization. Required for any pair where one mint is the new SPL standard. | Low | 12ms |
| create_pool (PumpSwap) | instruction | PumpSwap pool creation, the moment a Pump.fun bonding curve graduates and migrates liquidity. | High | 12ms |
| deposit (first LP) | instruction | First liquidity-add following pool init. Useful when initial reserves on init are zero and the real size lands one tx later. | High | 14ms |
Pool-launch streaming performance
last reviewed 2026-04-28
The cross-DEX pool-launch problem nobody warns you about
The first time you build a new-pool tracker, you write it for one DEX. Probably Raydium AMM v4. You filter on initialize2, the pool addresses come through, and you ship.
Then a memecoin launches on Meteora DLMM and you don't see it. Then a Pump.fun graduation hits PumpSwap and you don't see it. Then a stable pair launches on Orca Whirlpool and you don't see it either. Each program has its own init instruction, its own discriminator, its own account layout, and its own way of encoding base mint, quote mint, and initial reserves.
A complete launch tracker on Solana is five subscriptions. Five IDLs. Five decoders. Or one parsed feed that already merges them. That's the version we ship.
The five program IDs you actually need to watch
The classic sniper signal. Constant-product pool, OpenBook integrated. Carries coin_mint, pc_mint, open_time, and the initial coin/PC amounts.
The newer constant-product. Cheaper than AMM v4, simpler accounts, used by Raydium Launchpad and Pump.fun graduations that route into Raydium instead of PumpSwap.
Bin-based AMM. The init carries activeId (the bin where price starts) and binStep (the spacing). Both matter if you're sizing entries.
CLMM init. Carries token mint A/B, tickSpacing, and initialSqrtPrice. Use initializePoolV2 for Token-2022 pairs.
Pump.fun's post-graduation AMM. Whenever a bonding curve completes, the migration program creates a PumpSwap pool with create_pool. If you only watch Raydium, you miss the bulk of memecoin graduations.
One stream. Five filters. Each event we ship carries a programVariant tag so you can route handlers without re-decoding the discriminator on your side.
What each initialize_* actually carries
The headline question is always the same: where in the instruction do I find the base mint, the quote mint, and the initial reserves. Different program, different answer.
| Program | Base / quote | Initial size | Quirk |
|---|---|---|---|
| AMM v4 | coin_mint, pc_mint | init_coin_amount, init_pc_amount | open_time can be future-dated |
| CPMM | token0_mint, token1_mint | init_amount0, init_amount1 | amm_config selects fee tier |
| DLMM | tokenMintX, tokenMintY | 0 at init; deposits land later | activeId + binStep set initial price |
| Whirlpool | tokenMintA, tokenMintB | 0 at init; first openPosition adds liq | initialSqrtPrice sets price |
| PumpSwap | base_mint, quote_mint (SOL) | migrated curve reserves, in same tx | graduation authority signs |
The big footgun is DLMM and Whirlpool. The init instruction doesn't seed liquidity; that's a separate transaction. If you size a buy off “init reserves” on those two, you'll be sizing off zeros. Our parsed event includes a firstLiquidityTx field that points to the first real deposit so you can wait for it before submitting.
Pre-aggregator detection vs Birdeye and DexScreener
Birdeye and DexScreener both publish “new pairs” pages. They're great for browsing. They're also indexers; what you see there is the chain seconds-to-minutes after the slot. Plenty of time for the snipers who've been on chain since the init landed to be in and partially out before the page even updates.
The same is true for PumpPortal on the Pump.fun side. The data is accurate, the surface is convenient, the latency cap is the indexer.
On chain, there is no indexer. The instruction lands at slot N, the validator gossips at slot N, our gRPC pushes at slot N, you see it ~12ms later. If you're trying to be first into the pool, that gap is the whole game. Pair the launch detection with our gRPC nodes and Jito bundle submission and the bot is fighting for slot priority, not waiting on a polling cycle.
The honest caveat: not every launch is worth sniping. Roughly 90% of new pools are rugs, soft rugs, or just dead on arrival. The stream gives you the same firehose the snipers see; the filter for which launches are worth touching is your edge, not ours.
What teams build with the launch stream
Sniper bots
Subscribe, decode, size, submit. The instruction itself carries base mint, quote mint, and (on AMM v4 and CPMM) initial reserves. No getMint round-trip needed. The fastest snipers we see clock ~25ms from slot landing to bundle submitted.
Anti-sniper / safety
The same feed powers rug-detection services. Cross-reference launches against creator wallets, mint authorities, and existing holdings to score risk before users see the pool in a UI.
Listings dashboards
New-pair feeds for your own UI. The parsed events include venue, pair, initial price, and creator wallet, which is the minimum data set for a useful listings page.
Graduation analytics
Pump.fun → PumpSwap and Pump.fun → Raydium CPMM graduations. The stream tags each create_pool / createPool with the upstream bonding curve so you can compute graduation rates and post-grad performance.
Frequently asked questions
Related products
Pair launch detection with full Raydium swap and LP data once the pool is live.
After a DLMM pair launches, follow the bin-level activity and active-bin migrations.
Whirlpool position and tick events once a new pool starts collecting volume.
Track post-graduation Pump.fun pools end-to-end on PumpSwap.
Browse every decoded Solana program we expose and pick the ones you care about.
18 curated topics across DEXes, lifecycle, and system events. The catalog hub.
Start streaming new pool launches in under 60 seconds
Pro plan from $49/mo includes 2 parsed streams. Pool Creations counts as one stream and covers all five programs in a single feed. Ultra adds 20 streams.