Raydium CLMM Liquidity Changes holds the liquidity adds and removes on Raydium CLMM (program CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK), cut from our Solana pools table so you do not have to load the swaps. Each row is one instruction that changed a pool's reserves: the pool, both tokens, the amount that moved on each side, the reserve left afterwards and the wallet that signed.
Group by Pool_Market_MarketAddress and Block_Date and sum the two change amounts to get net liquidity flow per pool and day. Amounts are decimal adjusted, and USD values use the price at block time when we have one for the token. Rows from failed transactions are kept, so filter on Transaction_Result_Success when you need changes that took effect.
Use cases
Net liquidity added and removed per pool and day
Liquidity drain alerts on new pools, from large removes by one wallet
LP wallet activity by signer, across pools
Reserve history after each liquidity change, without loading swaps
Table
64 columns · free sample for the table
raydium_clmm_liquidity_changes
64 columns
One row per instruction that added liquidity, removed it or collected position fees, with the change and the resulting reserve for both tokens.
Block_SlotUInt64Slot number of the block; delivered files are split by slot range
Block_TimeDateTimeBlock timestamp, UTC
Instruction7
Instruction_CallPathArrayInstruction_Index values of the parent instructions; empty on a top-level instruction
Instruction_ExternalSeqNumberUInt64Number of the top-level instruction this row falls under, counting from 1
Instruction_IndexUInt64Position of the instruction in the transaction, counting inner instructions
Instruction_InternalSeqNumberUInt64Position under its top-level instruction, counting from 1; 0 on a top-level instruction
Instruction_Program_AddressStringProgram that executed the instruction
Instruction_Program_MethodStringDecoded instruction name and the action taken, for example increaseLiquidityV2 or decreaseLiquidityV2
Instruction_Program_NameStringDecoded program name
Pool_BaseCurrency6
Pool_BaseCurrency_ChangeAmountDecimalBase-token amount the event added to the pool (positive) or took out (negative), decimal adjusted
Pool_BaseCurrency_ChangeAmountInUSDFloat64Base-token change in USD; 0 when unpriced or when only the quote side was valued
Pool_BaseCurrency_PostAmountDecimalBase-token reserve left in the pool after the event, decimal adjusted
Pool_BaseCurrency_PostAmountInUSDFloat64Base-token reserve after the event, in USD; 0 when unpriced or when only the quote side was valued
Pool_BaseCurrency_PriceFloat64Quote-token reserve divided by base-token reserve after the event; a fair price only on constant-product pools
Pool_BaseCurrency_PriceInUSDFloat64Base-token USD price from the reserve ratio, so off on order books and concentrated liquidity; Pool_BaseCurrency_PostAmountInUSD ÷ Pool_BaseCurrency_PostAmount matches trade prices
Pool_Dex3
Pool_Dex_ProgramAddressStringProgram address of the DEX that owns the pool, base58; Raydium CLMM's is CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK
Pool_Dex_ProtocolFamilyStringVenue family as indexed, which can span several programs; Raydium for Raydium CLMM
Pool_Dex_ProtocolNameStringProgram name and version as indexed; forks can share one, so pair it with the program address; amm_v3 for Raydium CLMM
Pool_Market31
Pool_Market_BaseCurrency_CollectionAddressStringNFT collection of the base asset; empty for fungible tokens
Pool_Market_BaseCurrency_DecimalsUInt64Decimal places of the base token, as its mint sets them
Pool_Market_BaseCurrency_EditionNonceUInt64Metaplex edition bump seed; a technical value, 0 when unset
Pool_Market_BaseCurrency_FungibleBoolWhether the base asset is fungible; false for NFTs
Pool_Market_BaseCurrency_MetadataAddressStringMetaplex metadata account of the base asset, when recorded
Pool_Market_BaseCurrency_MintAddressStringMint address of the base token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped)
Pool_Market_BaseCurrency_NameStringName from the base token's metadata; lookalikes copy real names
Pool_Market_BaseCurrency_ProgramAddressStringProgram that owns the base mint, SPL Token or Token-2022, when recorded
Pool_Market_BaseCurrency_SellerFeeBasisPointsUInt64Creator royalty in basis points (100 = 1%); 0 for nearly all fungible coins
Pool_Market_BaseCurrency_SymbolStringTicker of the base token; not unique, so join on the mint address
Pool_Market_BaseCurrency_TokenCreators_AddressArrayCreator wallets from the base asset's metadata; often empty
Pool_Market_BaseCurrency_TokenStandardStringMetaplex standard, such as Fungible or FungibleAsset, when recorded
Pool_Market_BaseCurrency_UriStringLink to the base asset's off-chain metadata file, often on IPFS or Arweave
Pool_Market_BaseCurrency_UpdateAuthorityStringAccount that can change the base asset's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL
Pool_Market_BaseCurrency_VerifiedCollectionBoolWhether the NFT collection is verified; false for fungible tokens
Pool_Market_MarketAddressStringAddress of the pool, bonding curve or order-book market
Pool_Market_QuoteCurrency_CollectionAddressStringNFT collection of the quote asset; empty for fungible tokens
Pool_Market_QuoteCurrency_DecimalsUInt64Decimal places of the quote token, as its mint sets them
Pool_Market_QuoteCurrency_EditionNonceUInt64Metaplex edition bump seed; a technical value, 0 when unset
Pool_Market_QuoteCurrency_FungibleBoolWhether the quote asset is fungible; false for NFTs
Pool_Market_QuoteCurrency_MetadataAddressStringMetaplex metadata account of the quote asset, when recorded
Pool_Market_QuoteCurrency_MintAddressStringMint address of the quote token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped)
Pool_Market_QuoteCurrency_NameStringName from the quote token's metadata; lookalikes copy real names
Pool_Market_QuoteCurrency_ProgramAddressStringProgram that owns the quote mint, SPL Token or Token-2022, when recorded
Pool_Market_QuoteCurrency_SellerFeeBasisPointsUInt64Creator royalty in basis points (100 = 1%); 0 for nearly all fungible coins
Pool_Market_QuoteCurrency_SymbolStringTicker of the quote token; not unique, so join on the mint address
Pool_Market_QuoteCurrency_TokenCreators_AddressArrayCreator wallets from the quote asset's metadata; often empty
Pool_Market_QuoteCurrency_TokenStandardStringMetaplex standard, such as Fungible or FungibleAsset, when recorded
Pool_Market_QuoteCurrency_UriStringLink to the quote asset's off-chain metadata file, often on IPFS or Arweave
Pool_Market_QuoteCurrency_UpdateAuthorityStringAccount that can change the quote asset's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL
Pool_Market_QuoteCurrency_VerifiedCollectionBoolWhether the NFT collection is verified; false for fungible tokens
Pool_QuoteCurrency6
Pool_QuoteCurrency_ChangeAmountDecimalQuote-token amount the event added to the pool (positive) or took out (negative), decimal adjusted
Pool_QuoteCurrency_ChangeAmountInUSDFloat64Quote-token change in USD; 0 when unpriced or when only the base side was valued
Pool_QuoteCurrency_PostAmountDecimalQuote-token reserve left in the pool after the event, decimal adjusted
Pool_QuoteCurrency_PostAmountInUSDFloat64Quote-token reserve after the event, in USD; 0 when unpriced or when only the base side was valued
Pool_QuoteCurrency_PriceFloat64Base-token reserve divided by quote-token reserve after the event; a fair price only on constant-product pools
Pool_QuoteCurrency_PriceInUSDFloat64Quote-token USD price from the reserve ratio, so off on order books and concentrated liquidity; Pool_QuoteCurrency_PostAmountInUSD ÷ Pool_QuoteCurrency_PostAmount matches trade prices
PoolEvent1
PoolEvent_IndexUInt64Position of the pool event within its instruction
Transaction7
Transaction_FeeDecimalNetwork fee paid, in SOL
Transaction_FeeInUSDFloat64Network fee, in USD
Transaction_FeePayerStringWallet that paid the network fee; Solana makes it the first signer
Transaction_IndexUInt64Position of the transaction within the block
Transaction_Result_SuccessBoolWhether the transaction succeeded
Send this dataset’s full schema to an assistant and ask it anything. It reads the plain-text brief ↗ first, so the answer comes from the real column list rather than a guess.
Opens a new chat with the question filled in. Nothing about you is sent to Bitquery, and the assistant sees only the public brief.
Delivery
Parquet files in a Requester Pays S3 bucket or a Cloudflare R2 bucket, chosen at checkout. On S3 you download with your own AWS account and AWS bills the transfer; on R2 you download with a read-only API key and pay no egress. Layout:
What is included in Raydium CLMM Liquidity Changes?
One Parquet table, raydium_clmm_liquidity_changes, with 64 columns in the standard Solana pools schema. A row is one instruction on Raydium CLMM whose method name contains the word liquidity or starts with collectFees. Data starts on 29 October 2025.
How big is it?
About 1,800,000 rows and 0.6 GB of ZSTD Parquet from 29 October 2025 to 1 October 2026. Both figures are estimates from four sampled days. On 1 October 2026 the table had 15,823 rows.
How do I tell an add from a remove?
Instruction_Program_Method names the action, for example increaseLiquidityV2 or decreaseLiquidityV2. Pool_BaseCurrency_ChangeAmount and Pool_QuoteCurrency_ChangeAmount are positive when tokens enter the pool and negative when they leave.
What is left out?
Swaps and pool creations are left out. The table has no position account, tick or bin range, and no rows for opening or closing a position, because the pools table does not carry them. Removes (decreaseLiquidityV2) start about 25 March 2026; earlier days hold adds only. The first deposit made when a position is opened (openPositionV2) has no rows in the source pools table today. Missing rows can be re-processed for an order, so ask before you buy if you need them.
How does this differ from the Raydium CLMM dataset?
Raydium CLMM has the swaps table and the full pools table, including a row for each swap's effect on the pool. This dataset is the liquidity rows of that pools table only, so it is smaller and costs less.
How are the USD values produced?
Each amount is multiplied by the token's USD price in the 10-minute window of the block. About 4,400 tokens have a price; others get 0. In the sample file 278 of 281 rows have at least one side priced. We checked the method against our published Meteora DLMM pools file for 1 June 2026 and the values matched.
How do I load it?
With DuckDB: SELECT Instruction_Program_Method, count(*) FROM read_parquet('dex_pools/*.parquet') GROUP BY 1. pandas, Polars, Spark and ClickHouse read the same files.
How is the data delivered?
As flat Parquet files under a stable layout, one prefix per table, with a JSON manifest listing every file and its sha256. We prepare the files within 7 business days of purchase and email you the location. You choose at checkout where to collect them: a Requester Pays S3 bucket, downloaded with your own AWS account, or a Cloudflare R2 bucket with a read-only API key and no egress fees. Files stay available for 7 days from delivery.
Can I try before I buy?
Yes. The table links to a public sample file with 281 real rows from 1 October 2026, slots 452,119,504 to 452,125,503. No email address required.