NoLimitNodes
PricingDocsBlogAbout
SupportContact
Log in
  1. Home/
  2. Products/
  3. Enhanced Streams/
  4. Orca Whirlpool
Enhanced Stream

The Orca Whirlpool API: real-time concentrated liquidity data on Solana and Eclipse

Whirlpool is Solana's second-biggest concentrated liquidity venue, and the same program ID runs on Eclipse mainnet. That makes it the only major Solana DEX with first-class cross-chain CLMM coverage out of the box. The official dev surface is genuinely thin: a Web3.js v2 SDK, a Rust SDK, and a REST endpoint at api.orca.so. All useful, none built for real-time streaming. We watch the program directly and ship parsed Whirlpool events over gRPC: every swap, openPosition, increaseLiquidity, collectFees, and tick-array crossing, decoded as the transaction lands.

Solana + EclipseTick-array decodingPosition NFT trackingReal-time deliverygRPC + WebSocket
On-chain programs
  • Orca WhirlpoolwhirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc, Same program ID on Solana mainnet and Eclipse mainnet, single IDL, two chains

Try it live: Orca Whirlpool streams

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

1 streamslive
Orca Whirlpool
Orca Whirlpool concentrated liquidity swaps
1grpcurl -H "x-api-key: YOUR_API_KEY" \
2  -d '{"topic":"prod.mat.solana.program.swaps.orca_whirlpool","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 Orca Whirlpool messages

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

The Whirlpool events you can stream

every decoded instruction across swap, position, and pool lifecycle

EventTypeDescriptionFrequency
swapinstructionWhirlpool swap (legacy). Decoded with sqrt-price-limit, tick-array crossings, and amount in/out.Very high
swapV2instructionToken-2022 aware swap with extension support. The current default for Whirlpool clients.Very high
openPositioninstructionMints a new Whirlpool Position NFT for a tick range. The canonical LP entry signal.High
openPositionWithMetadatainstructionSame as openPosition but with Metaplex token metadata attached to the Position NFT.Medium
increaseLiquidityinstructionAdds tokens to an existing position. Includes both A and B token amounts and the resulting liquidity delta.High
decreaseLiquidityinstructionWithdraws liquidity from a position. Often paired with collectFees + closePosition for full exits.High
collectFeesinstructionRealizes the fees accrued in a Position. Useful for computing per-position yield.Medium
collectRewardinstructionClaims the reward emissions on positions in incentivized pools (up to three rewards per pool).Medium
closePositioninstructionBurns the Position NFT after liquidity is fully withdrawn. Marks position lifecycle end.Medium
initializePoolinstructionCreates a new Whirlpool with a chosen tick spacing (fee tier). Surfaces new pair launches.Low
updateFeesAndRewardsinstructionRefreshes the per-position fee + reward growth checkpoint. Required before collectFees / collectReward.Medium

Whirlpool streaming performance

last reviewed 2026-04-28

Active Whirlpools tracked
3,000+
Solana + Eclipse mainnet combined
Verified 2026-04-28
Daily swap instructions
500k-1.5M
Across all Whirlpools. Solana mainnet
Stream uptime SLO
99.95%
Pro and Ultra plans, monthly rolling

What Whirlpool actually is, and the unusual bit

Whirlpool is Orca's concentrated-liquidity AMM, modeled on Uniswap V3. LPs pick a tick range, supply both tokens in a ratio that depends on where price sits in that range, and earn fees only while the active price is inside their bounds. Swaps consume liquidity tick by tick until the input is filled, so executions walk through precisely-priced bins instead of a smooth curve. So far, standard CLMM mechanics.

Here's the unusual bit. The same program ID is deployed on Solana mainnet and Eclipse mainnet, byte-for-byte identical IDL. Whirlpool ends up as the only major Solana DEX with first-class cross-chain CLMM coverage out of the box. For data consumers this is a small win that compounds: one parsed-event handler, one decoder, two chains.

The Whirlpool program ID and account model

Program ID: whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc. It owns four account types that together describe every CLMM pool, every LP entry, and the fee structure they live under.

Whirlpool

The pool itself. Token A / token B mints, current sqrt-price (Q64.64), tick spacing, fee rate, protocol fee, reward info[3]. Watch sqrt-price for live price; watch tickCurrentIndex for cross-tick events.

TickArray

A fixed-size account holding 88 contiguous initialized ticks. Every swap that crosses a tick boundary writes to one or more. Tracking which TickArrays a pool actively uses tells you where liquidity concentrates.

Position

An LP entry, paired with a Position NFT. Holds tickLower, tickUpper, liquidity, feeOwedA/B, and the per-position fee growth checkpoint. The NFT is the access token to manage the position.

WhirlpoolsConfig + FeeTier

Top-level configuration and the supported tick spacings (1, 8, 64, 128, 256). Every Whirlpool resolves to one FeeTier; reading these tells you which fee bucket a pool sits in.

Three ways to query Whirlpool data: REST, SDK, gRPC

Orca offers two surfaces. The on-chain stream is a third. Each fits a different use case; mixing them in a single product is normal.

SurfaceRight forLatencyDecoded?
api.orca.so RESTPool dashboards, leaderboardsPolling, ~10-30s lagYes (aggregates only)
@orca-so/whirlpools SDKApp backends, periodic syncsPer-RPC-callYes (typed account fetch)
Yellowstone gRPCBots, MEV, market makingReal-timeYes (NoLimitNodes parsed)

The SDK is the right tool when you need a single Whirlpool's state on demand: fetching positions for a wallet, computing quote previews, building a one-shot query. gRPC is the right tool when you need everything happening live across many pools. REST is fine for a chart on a dashboard. Don't pick gRPC for a chart and don't pick REST for a bot. See the gRPC nodes page for transport details.

What teams build with Whirlpool data

LP analytics & range monitors

Watch tickCurrentIndex on each Whirlpool. When the active tick crosses outside a tracked Position's tickLower/tickUpper, that position stops earning fees. That's your rebalance signal. The parsed swap stream gives you the cross within .

Fee dashboards

collectFees, increaseLiquidity, and decreaseLiquidity together give you the inputs and outputs to compute per-position yield curves. Anchor IDL decoding gives you the exact fee currency split per position with no hand-rolled math.

MEV & arb

Whirlpool swaps are a primary input to Solana arb engines that equalize price across Raydium, Meteora, and Orca. Real-time sqrt-price updates let you compute the post-trade pool state before the next slot lands. That's the whole game.

New-pool detection

Filter on initializePool to catch new Whirlpools at creation. The instruction reveals tick spacing (fee tier), both mints, and the initial sqrt-price, which is enough to size and place a limit-order-like position immediately.

Whirlpool on Eclipse: same program, separate stream

Eclipse is an SVM L2. Whirlpool is deployed there at the identical address, whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc. The IDL matches Solana mainnet byte-for-byte, which means the same parsed-event decoder, the same SDK, and the same client code work without modification. That's rare. It's also the strongest argument for treating Whirlpool as a single product across two chains.

What differs is the gRPC endpoint and the live state. Eclipse has its own block production, its own validator set, and a different set of active Whirlpool addresses. We provide separate gRPC endpoints for the two networks; teams running cross-chain analytics or arbitrage subscribe to both and tag the originating chain downstream.

Frequently asked questions

whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc on Solana mainnet, and the same address on Eclipse mainnet. Whirlpool is the only major Solana DEX with cross-chain coverage on a single deployed program. Filter on this ID to capture every swap, position, and pool event across both networks.
getProgramAccounts on the Whirlpool program with a 653-byte dataSize filter. The @orca-so/whirlpools SDK wraps that as fetchAllWhirlpoolsByConfig. For continuous discovery, subscribe to initializePool in the parsed stream and append new Whirlpool addresses as they launch. Polling getProgramAccounts every minute is the lazy alternative; the stream version doesn't miss launches between polls.
A Whirlpool Position is an SPL Token NFT. The mint authority belongs to the Whirlpool program; the on-chain Position account is a PDA derived from the NFT mint. Fetch the Position account, deserialize against the Anchor IDL, and you have tickLowerIndex, tickUpperIndex, liquidity, feeOwedA/B, and the per-position fee growth checkpoint. The official SDK exposes fetchAllPosition for batched lookup.
The legacy Orca AMM (the 'Aquafarms / classic Orca' you might have used in 2022) was constant-product with token-pair pools. Straight x·y=k. Whirlpool is the Uniswap V3-style CLMM that replaced it: tick ranges, sqrt-price math, Position NFTs. Classic AMM is on its way out; Whirlpool handles the vast majority of current Orca volume. Two different programs, two different account models. Streaming Orca data today means subscribing to Whirlpool only.
Yes. Same program ID (whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc) on Solana mainnet and Eclipse mainnet, with byte-for-byte identical IDL. The same parsed-event decoder works on both chains without changes. We run separate gRPC endpoints for the two networks; teams doing cross-chain analytics or arbitrage subscribe to both and tag the originating chain downstream.
Yellowstone gRPC. Subscribe with a transactions filter on whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc, set commitment to processed, and swap and swapV2 land in your callback as the slot is processed. WebSocket logsSubscribe also works for low-volume use, but you're parsing raw program logs by hand. Our parsed stream emits typed swap events with tick crossings already resolved.
The official api.orca.so is free with light rate limits. Fine for low-frequency dashboards. Real-time streaming is not part of the official product. We run a free RPC tier and parsed Whirlpool gRPC streaming on Pro ($49/month, 2 streams) and Ultra ($199/month, 20 streams).

Related products

Raydium AMM v4, CLMM, CPMM Enhanced Stream

Cross-DEX coverage, combine with Whirlpool for full Solana CLMM picture.

Meteora DLMM Enhanced Stream

Bin-based dynamic liquidity, different LP math, complementary data.

Whirlpool program explorer

Browse every decoded instruction and event the Orca Whirlpool program emits.

Yellowstone gRPC nodes

The transport layer behind every NoLimitNodes Whirlpool subscription.

All Enhanced Streams

18 curated topics across DEXes, lifecycle, and system events. The catalog hub.

Pump.fun Enhanced Stream

Bonding curve creates, trades, and graduations decoded in real time.

Start streaming Orca Whirlpool in under 60 seconds

Pro plan from $49/mo includes 2 parsed streams. Pick Whirlpool plus any other Solana or Eclipse program in our explorer.

See pricingTalk to sales

Ready to get started?

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

Talk to Sales
NoLimitNodes

Solana RPC infrastructure built for performance and scale.

RPC Access
  • HTTP RPC
  • WebSocket
  • gRPC
Infrastructure
  • Compute Platform
  • VPS
  • VDS
  • Bare Metal
  • Geyser Plugin Hosting
Enhanced Streams
  • PumpFun
  • PumpSwap
  • Raydium
  • Orca
  • Meteora
  • System Events
  • Browse All →
Program Streams
  • PumpFun
  • PumpSwap
  • Raydium CLMM
  • Orca Whirlpool
  • Meteora DLMM
  • Jupiter Swap
  • Jupiter Perps
  • Kamino Lending
  • Browse All 37 →
Trading
  • EZWallet
Analytics
  • Historical Datasets
  • Historical Raw Blocks
Company
  • About
Resources
  • Pricing
  • Custom Development
  • Documentation
  • Blog
  • Support
  • Contact Sales
Compare
  • Yellowstone gRPC vs LaserStream
  • Triton vs Helius
  • Raydium API vs Helius
  • PumpSwap API vs Bitquery
  • QuickNode Streams vs NLN
  • All comparisons →
Legal
  • Terms & Conditions
  • Privacy Policy
© 2026 CLR3 Inc., operating as NoLimitNodes. Registered in Ontario, Canada. All rights reserved.solana mainnet