We decode PancakeSwap V3 from BSC event logs ourselves and keep only pools created by the PancakeSwap V3 factory (0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865) and the events of its position NFT contract (0x46a15b0b27311cedf172ab29e4f4766fbe7f4364). The three tables use the same 44 columns as our Uniswap V3 Liquidity files, with nothing renamed or derived: Log_Signature_Name is the event, Call_Signature_Name is the method that ran, and Arguments holds the decoded values. A row is one event.
Most buyers start with one pool: filter Log_SmartContract, read amount and the two ticks from Arguments, then add on Mint rows and subtract on Burn rows to get depth at a tick. To follow one position, filter the position table on the tokenId argument. Swaps are not in this dataset; they are in BSC DEX Trades, which joins on the transaction hash and the pool.
Use cases
Liquidity depth by tick for one pool, rebuilt from mints and burns
Fee income and holding period of liquidity providers, by position
Just-in-time liquidity detection: a mint and a burn around one swap
Pool launches by fee tier and token, from the factory
3 tables
132 columns · free sample for each table
pcsv3_pools
44 columns
One row per PoolCreated event of the PancakeSwap V3 factory (0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865), in the standard events schema; Arguments holds token0, token1, fee, tickSpacing and pool.
One row per Mint, Burn, Collect or Flash event of a PancakeSwap V3 pool, in the standard events schema; Arguments holds the owner, tick range, liquidity and token amounts.
One row per IncreaseLiquidity, DecreaseLiquidity, Collect or Transfer event of the position NFT contract (0x46a15b0b27311cedf172ab29e4f4766fbe7f4364), in the standard events schema.
pcsv3_pools44 columnsOne row per PoolCreated event of the PancakeSwap V3 factory (0x0bfbcf9fa4f9c56b0f40a671ad40e0805a091865), in the standard events schema; Arguments holds token0, token1, fee, tickSpacing and pool.
ColumnTypeDescription
Other2
ArgumentsStringDecoded event arguments as a JSON array, when the signature resolved; empty otherwise
ChainIdUInt64EVM chain id; 56 for BSC
Block3
Block_DateDateUTC date of the block
Block_NumberUInt64Block height
Block_TimeDateTimeBlock timestamp, UTC
Call13
Call_CallPathArrayPath of call indexes from the transaction root down to the emitting frame
Call_CallerIndexInt32Call_Index of the frame that called the emitting frame; -1 at the top level
Call_CreateStringWhether the emitting frame deployed a contract; true or false
Call_ErrorStringError the emitting frame returned; empty on success
Call_FromStringCaller of the emitting frame, 0x-prefixed
Call_GasUInt64Gas supplied to the emitting frame
Call_GasUsedUInt64Gas consumed by the emitting frame and everything beneath it
Call_IndexUInt32Position of the emitting frame within the transaction; join to calls on this plus Transaction_Hash
Call_InternalCallsUInt32Number of calls made beneath the emitting frame
Call_RevertedStringWhether the emitting frame reverted; true or false
Call_SelfDestructStringWhether the emitting contract self-destructed; true or false
Call_ToStringAddress the emitting frame called, 0x-prefixed
Call_ValueStringNative BNB sent with the emitting frame, decimal adjusted
Call_Signature5
Call_Signature_AbiStringABI fragment of the function the emitting frame ran
Call_Signature_NameStringName of that function, when resolved
Call_Signature_SignatureStringCanonical signature of that function
Call_Signature_SignatureHashStringFour-byte selector of that function, hex
Call_Signature_SignatureTypeStringHow that function signature was resolved
Fee1
Fee_SenderFeeStringNetwork fee the sender paid for the whole transaction, in BNB. It repeats on every log of the transaction, so count it once per transaction
Log10
Log_EnterIndexUInt32Enter index of the emitting frame
Log_ExitIndexUInt32Exit index of the emitting frame
Log_IndexUInt32Position of the log within the transaction
Log_LogAfterCallIndexUInt32Index of the last call frame entered before this log, for ordering logs against calls
Log_Signature_AbiStringABI fragment for the resolved event; empty when the topic is unknown
Log_Signature_NameStringEvent name: PoolCreated
Log_Signature_SignatureStringCanonical event signature, for example Transfer(address,address,uint256)
Log_Signature_SignatureHashStringKeccak hash of the event signature, hex; the same value as topic 0
Log_Signature_SignatureTypeStringHow the event signature was resolved
Log_SmartContractStringContract that emitted the event, lowercase 0x hex: the factory
LogHeader4
LogHeader_AddressStringAddress recorded in the log header, 0x-prefixed
LogHeader_DataStringRaw non-indexed log data, hex
LogHeader_IndexUInt64Index of the log within the block, as the receipt records it
LogHeader_RemovedStringWhether the log was removed by a reorg; true or false
Topics1
Topics_HashArrayIndexed topics of the log, as an array of hex strings; the first is the event signature hash
Transaction4
Transaction_FromStringAddress that signed the transaction, 0x-prefixed
Transaction_HashStringHash of the containing transaction, 0x-prefixed. The join key
Transaction_IndexUInt64Position of the transaction within the block
Transaction_ToStringAddress the transaction called, 0x-prefixed
TransactionStatus1
TransactionStatus_SuccessStringWhether the transaction succeeded; true or false
pcsv3_liquidity_events44 columnsOne row per Mint, Burn, Collect or Flash event of a PancakeSwap V3 pool, in the standard events schema; Arguments holds the owner, tick range, liquidity and token amounts.
ColumnTypeDescription
Other2
ArgumentsStringDecoded event arguments as a JSON array, when the signature resolved; empty otherwise
ChainIdUInt64EVM chain id; 56 for BSC
Block3
Block_DateDateUTC date of the block
Block_NumberUInt64Block height
Block_TimeDateTimeBlock timestamp, UTC
Call13
Call_CallPathArrayPath of call indexes from the transaction root down to the emitting frame
Call_CallerIndexInt32Call_Index of the frame that called the emitting frame; -1 at the top level
Call_CreateStringWhether the emitting frame deployed a contract; true or false
Call_ErrorStringError the emitting frame returned; empty on success
Call_FromStringCaller of the emitting frame, 0x-prefixed
Call_GasUInt64Gas supplied to the emitting frame
Call_GasUsedUInt64Gas consumed by the emitting frame and everything beneath it
Call_IndexUInt32Position of the emitting frame within the transaction; join to calls on this plus Transaction_Hash
Call_InternalCallsUInt32Number of calls made beneath the emitting frame
Call_RevertedStringWhether the emitting frame reverted; true or false
Call_SelfDestructStringWhether the emitting contract self-destructed; true or false
Call_ToStringAddress the emitting frame called, 0x-prefixed
Call_ValueStringNative BNB sent with the emitting frame, decimal adjusted
Call_Signature5
Call_Signature_AbiStringABI fragment of the function the emitting frame ran
Call_Signature_NameStringName of that function, when resolved
Call_Signature_SignatureStringCanonical signature of that function
Call_Signature_SignatureHashStringFour-byte selector of that function, hex
Call_Signature_SignatureTypeStringHow that function signature was resolved
Fee1
Fee_SenderFeeStringNetwork fee the sender paid for the whole transaction, in BNB. It repeats on every log of the transaction, so count it once per transaction
Log10
Log_EnterIndexUInt32Enter index of the emitting frame
Log_ExitIndexUInt32Exit index of the emitting frame
Log_IndexUInt32Position of the log within the transaction
Log_LogAfterCallIndexUInt32Index of the last call frame entered before this log, for ordering logs against calls
Log_Signature_AbiStringABI fragment for the resolved event; empty when the topic is unknown
Log_Signature_NameStringEvent name: Mint, Burn, Collect or Flash
Log_Signature_SignatureStringCanonical event signature, for example Transfer(address,address,uint256)
Log_Signature_SignatureHashStringKeccak hash of the event signature, hex; the same value as topic 0
Log_Signature_SignatureTypeStringHow the event signature was resolved
Log_SmartContractStringContract that emitted the event, lowercase 0x hex: the pool
LogHeader4
LogHeader_AddressStringAddress recorded in the log header, 0x-prefixed
LogHeader_DataStringRaw non-indexed log data, hex
LogHeader_IndexUInt64Index of the log within the block, as the receipt records it
LogHeader_RemovedStringWhether the log was removed by a reorg; true or false
Topics1
Topics_HashArrayIndexed topics of the log, as an array of hex strings; the first is the event signature hash
Transaction4
Transaction_FromStringAddress that signed the transaction, 0x-prefixed
Transaction_HashStringHash of the containing transaction, 0x-prefixed. The join key
Transaction_IndexUInt64Position of the transaction within the block
Transaction_ToStringAddress the transaction called, 0x-prefixed
TransactionStatus1
TransactionStatus_SuccessStringWhether the transaction succeeded; true or false
pcsv3_position_events44 columnsOne row per IncreaseLiquidity, DecreaseLiquidity, Collect or Transfer event of the position NFT contract (0x46a15b0b27311cedf172ab29e4f4766fbe7f4364), in the standard events schema.
ColumnTypeDescription
Other2
ArgumentsStringDecoded event arguments as a JSON array, when the signature resolved; empty otherwise
ChainIdUInt64EVM chain id; 56 for BSC
Block3
Block_DateDateUTC date of the block
Block_NumberUInt64Block height
Block_TimeDateTimeBlock timestamp, UTC
Call13
Call_CallPathArrayPath of call indexes from the transaction root down to the emitting frame
Call_CallerIndexInt32Call_Index of the frame that called the emitting frame; -1 at the top level
Call_CreateStringWhether the emitting frame deployed a contract; true or false
Call_ErrorStringError the emitting frame returned; empty on success
Call_FromStringCaller of the emitting frame, 0x-prefixed
Call_GasUInt64Gas supplied to the emitting frame
Call_GasUsedUInt64Gas consumed by the emitting frame and everything beneath it
Call_IndexUInt32Position of the emitting frame within the transaction; join to calls on this plus Transaction_Hash
Call_InternalCallsUInt32Number of calls made beneath the emitting frame
Call_RevertedStringWhether the emitting frame reverted; true or false
Call_SelfDestructStringWhether the emitting contract self-destructed; true or false
Call_ToStringAddress the emitting frame called, 0x-prefixed
Call_ValueStringNative BNB sent with the emitting frame, decimal adjusted
Call_Signature5
Call_Signature_AbiStringABI fragment of the function the emitting frame ran
Call_Signature_NameStringName of that function, when resolved
Call_Signature_SignatureStringCanonical signature of that function
Call_Signature_SignatureHashStringFour-byte selector of that function, hex
Call_Signature_SignatureTypeStringHow that function signature was resolved
Fee1
Fee_SenderFeeStringNetwork fee the sender paid for the whole transaction, in BNB. It repeats on every log of the transaction, so count it once per transaction
Log10
Log_EnterIndexUInt32Enter index of the emitting frame
Log_ExitIndexUInt32Exit index of the emitting frame
Log_IndexUInt32Position of the log within the transaction
Log_LogAfterCallIndexUInt32Index of the last call frame entered before this log, for ordering logs against calls
Log_Signature_AbiStringABI fragment for the resolved event; empty when the topic is unknown
Log_Signature_NameStringEvent name: IncreaseLiquidity, DecreaseLiquidity, Collect or Transfer
Log_Signature_SignatureStringCanonical event signature, for example Transfer(address,address,uint256)
Log_Signature_SignatureHashStringKeccak hash of the event signature, hex; the same value as topic 0
Log_Signature_SignatureTypeStringHow the event signature was resolved
Log_SmartContractStringContract that emitted the event, lowercase 0x hex: the position NFT contract
LogHeader4
LogHeader_AddressStringAddress recorded in the log header, 0x-prefixed
LogHeader_DataStringRaw non-indexed log data, hex
LogHeader_IndexUInt64Index of the log within the block, as the receipt records it
LogHeader_RemovedStringWhether the log was removed by a reorg; true or false
Topics1
Topics_HashArrayIndexed topics of the log, as an array of hex strings; the first is the event signature hash
Transaction4
Transaction_FromStringAddress that signed the transaction, 0x-prefixed
Transaction_HashStringHash of the containing transaction, 0x-prefixed. The join key
Transaction_IndexUInt64Position of the transaction within the block
Transaction_ToStringAddress the transaction called, 0x-prefixed
TransactionStatus1
TransactionStatus_SuccessStringWhether the transaction succeeded; true or false
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:
Three Parquet tables with 44 columns each. pcsv3_pools has the PoolCreated events of the factory. pcsv3_liquidity_events has the Mint, Burn, Collect and Flash events of those pools. pcsv3_position_events has the IncreaseLiquidity, DecreaseLiquidity, Collect and Transfer events of the position NFT contract. Data starts on 1 April 2023.
How big is it?
The factory had created 150,961 pools by 21 October 2026. On 19 October 2026 the tables had 105 pools, 51,639 pool liquidity events (11,055 Mint, 23,125 Burn, 16,408 Collect, 1,051 Flash) and 37,538 position events. These are measured counts, not a size estimate; the delivery manifest gives exact rows and bytes.
How are positions tied to pools?
The position NFT contract's events carry the token id but not the pool or the ticks; those are on the pool event the same call caused. Join pcsv3_liquidity_events on Transaction_Hash where its Call_CallerIndex equals the position row's Call_Index. A position staked in MasterChef V3 moves there by Transfer.
How do I read the amounts and addresses?
Arguments is a JSON array with one entry per decoded argument: index, name, path, type and the value slots. Addresses and bytes are hex strings without the 0x prefix; uint112, uint128 and uint256 amounts are decimal strings in raw token units, so divide by the token's decimals yourself; small integers such as ticks sit in the integer slots. Call_Value and Fee_SenderFee are already in BNB. The token contracts of a pair or pool are in its creation row.
Are swaps included?
No. Swaps on these pools are in the BSC DEX Trades dataset. Join on Transaction_Hash and the pool contract when you need swaps next to liquidity changes.
What should I watch out for?
The liquidity argument is the raw L value, not a token amount. A Burn only marks tokens as owed; they leave the pool on Collect, which pays out principal and fees together. Burns outnumber mints because a zero Burn is how fees are settled before a Collect. Log_Index restarts in each call frame, so the row key is Transaction_Hash, Call_Index and Log_Index.
How are these produced, and how were they checked?
The export is one ClickHouse query per table over our decoded BSC events, filtered to the factory, its pools and the position NFT contract. We ran each query for 19 October 2026: row keys (Transaction_Hash, Call_Index, Log_Index) were unique and every row carried decoded Arguments.
How do I load it?
With DuckDB: SELECT Log_Signature_Name, count(*) FROM read_parquet('pcsv3_liquidity_events/*.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 each 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. Each table links to a public sample file covering BSC blocks 128,733,000 to 128,733,099 on 20 October 2026: 1 pool, 30 pool liquidity events and 15 position events. No email address required.