# Solana | Bitquery Data Store The last 12 months of Solana as flat Parquet at slot resolution: blocks, transactions, SOL and token transfers, DEX swaps, pool events and order-book events on all indexed programs, and block rewards. Dataset page: https://bitquery.io/datastore/datasets/solana Network: Solana Category: Blocks, Transactions, Transfers, Trades, Pools, Orders, Rewards Tables: 7 Columns: 300 Coverage: first block to 2026-10-04 Format: Apache Parquet, ZSTD compression, one prefix per table Licence: https://bitquery.io/datastore/legal/data-license ## What this is Seven flat Parquet tables covering the last twelve months of Solana at slot resolution: blocks, transactions, transfers, dex_trades, dex_pools, dex_orders and rewards. Every table carries Block_Slot and Block_Time, and every table but blocks and rewards carries Transaction_Signature, so they join without a lookup table. Solana's data model is not the EVM's, and the schema follows the chain. Transfers name both the token account and the wallet that owns it, so you do not need to resolve token accounts yourself. Trades, pools and orders carry the program address and protocol family on every row, so one filter slices the whole market down to any venue. Row-level Solana history is held for the last twelve months on a rolling basis, so this dataset is sold as 1, 6 and 12 month windows and has no full-history tier. Addresses are base58, amounts are decimal strings adjusted from lamports or the token's decimals, and the S3 prefix is solana/. ## What people use it for - Whole-chain analytics without running a Solana RPC node or replaying ledger history - Token flow and wallet activity across all programs, with token-account owners resolved on each transfer - Whole-market DEX research: swaps, pool reserves and order-book events across all indexed venues in one schema - Validator and fee economics from per-block rewards and per-transaction fees ## Tables (7) ### blocks: 9 columns One row per Solana block, with slot, height, parent slot, hash and reward count. Bucket prefix: solana/blocks File naming: _.parquet, 50 slots per file, sorted ascending Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/blocks/390740350_390740399.parquet Sample updated: Jan 2, 2026 | column | type | description | | --- | --- | --- | | Block_Date | Date | UTC date of the block | | Block_Hash | String | Block hash, base58 | | Block_Height | UInt64 | Count of blocks produced before this one; lower than the slot because some slots are skipped | | Block_ParentHash | String | Hash of the parent block, base58 | | Block_ParentSlot | UInt64 | Slot of the parent block; lower than Block_Slot minus one when slots were skipped | | Block_RewardsCount | UInt32 | Reward records attached to the block | | Block_Slot | UInt64 | Slot number of the block; delivered files are split by slot range | | Block_Time | DateTime | Block timestamp, UTC | | Block_TxCount | UInt32 | Transactions in the block | ### transactions: 17 columns One row per Solana transaction, with signer, fee, result, the accounts loaded and instruction and balance-change counts. Bucket prefix: solana/transactions File naming: _.parquet, 50 slots per file, sorted ascending Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/transactions/390740200_390740249.parquet Sample updated: Jan 2, 2026 | column | type | description | | --- | --- | --- | | Block_Date | Date | UTC date of the block | | Block_Height | UInt64 | Count of blocks produced before this one; lower than the slot because some slots are skipped | | Block_Slot | UInt64 | Slot number of the block; delivered files are split by slot range | | Block_Time | DateTime | Block timestamp, UTC | | Transaction_Accounts | String | Accounts the transaction loaded, as a JSON array of address, is-signer flag and token metadata | | Transaction_BalanceUpdatesCount | UInt32 | SOL balance changes caused by the transaction | | Transaction_Fee | String | Network fee paid, in SOL | | Transaction_FeeInUSD | Float64 | Network fee, in USD | | Transaction_FeePayer | String | Wallet that paid the network fee; Solana makes it the first signer | | Transaction_Index | UInt32 | Position of the transaction within the block | | Transaction_InstructionsCount | UInt32 | Instructions in the transaction, inner instructions included | | Transaction_RecentBlockhash | String | Recent blockhash the transaction was signed against, base58 | | Transaction_Result_ErrorMessage | String | Error the runtime returned when the transaction failed; empty on success | | Transaction_Result_Success | String | Whether the transaction succeeded | | Transaction_Signature | String | Transaction signature, base58 | | Transaction_Signer | String | Wallet that signed the transaction and paid its fee | | Transaction_TokenBalanceUpdatesCount | UInt32 | Token account balance changes caused by the transaction | ### transfers: 47 columns One row per SOL or SPL token transfer, with sending and receiving token accounts and their owners, token metadata and a USD value where a price exists. Bucket prefix: solana/transfers File naming: _.parquet, 50 slots per file, sorted ascending Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/transfers/390740100_390740149.parquet Sample updated: Jan 2, 2026 | column | type | description | | --- | --- | --- | | Block_Date | Date | UTC date of the block | | Block_Height | UInt64 | Count of blocks produced before this one; lower than the slot because some slots are skipped | | Block_Slot | UInt64 | Slot number of the block; delivered files are split by slot range | | Block_Time | DateTime | Block timestamp, UTC | | Instruction_CallPath | Array | Instruction_Index values of the parent instructions; empty on a top-level instruction | | Instruction_ExternalSeqNumber | UInt32 | Number of the top-level instruction this row falls under, counting from 1 | | Instruction_Index | UInt32 | Position of the instruction in the transaction, counting inner instructions | | Instruction_InternalSeqNumber | UInt32 | Position under its top-level instruction, counting from 1; 0 on a top-level instruction | | Instruction_Program_Address | String | Program that executed the instruction | | Instruction_Program_Method | String | Decoded instruction name, for example swap, buy or route | | Instruction_Program_Name | String | Decoded program name | | Transaction_Fee | String | Network fee paid, in SOL | | Transaction_FeeInUSD | Float64 | Network fee, in USD | | Transaction_FeePayer | String | Wallet that paid the network fee; Solana makes it the first signer | | Transaction_Index | UInt32 | Position of the transaction within the block | | Transaction_Result_ErrorMessage | String | Error the runtime returned when the transaction failed; empty on success | | Transaction_Result_Success | String | Whether the transaction succeeded | | Transaction_Signature | String | Transaction signature, base58 | | Transaction_Signer | String | Wallet that signed the transaction and paid its fee | | Transfer_Amount | String | Amount transferred, decimal adjusted, as a decimal string. Multiply by 10^Transfer_Currency_Decimals for the raw on-chain integer | | Transfer_AmountInUSD | Float64 | Amount valued in USD at the hourly price for the block's hour; 0 for tokens with no price | | Transfer_Authority_Address | String | Account that authorised the transfer, usually the token account owner or its delegate | | Transfer_Currency_CollectionAddress | String | NFT collection of the transferred token; empty for fungible tokens | | Transfer_Currency_Decimals | UInt32 | Decimals of the transferred token | | Transfer_Currency_EditionNonce | UInt32 | Metaplex edition bump seed of the transferred token; a technical value, 0 when unset | | Transfer_Currency_Fungible | String | Whether the transferred token is fungible; the string true or false | | Transfer_Currency_IsMutable | String | Whether the transferred token's metadata can still be changed; the string true or false | | Transfer_Currency_Key | String | Metaplex metadata account type of the transferred token, such as MetadataV1 | | Transfer_Currency_MetadataAddress | String | Metaplex metadata account of the transferred token, when recorded | | Transfer_Currency_MintAddress | String | Mint address of the transferred token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped) | | Transfer_Currency_Name | String | Name of the transferred token | | Transfer_Currency_Native | String | true for SOL, false for every SPL token; the string true or false | | Transfer_Currency_PrimarySaleHappened | String | Whether the transferred token's first sale has happened, from Metaplex metadata; the string true or false | | Transfer_Currency_ProgramAddress | String | Program that owns the transferred token's mint, SPL Token or Token-2022, when recorded | | Transfer_Currency_SellerFeeBasisPoints | UInt32 | Creator royalty on the transferred token in basis points (100 = 1%); 0 for nearly all fungible coins | | Transfer_Currency_Symbol | String | Symbol of the transferred token; reported by the token metadata, not unique | | Transfer_Currency_TokenCreator_Address | Array | Creator wallets from the transferred token's metadata; mostly empty in this table | | Transfer_Currency_TokenStandard | String | Metaplex standard of the transferred token, such as Fungible or FungibleAsset, when recorded | | Transfer_Currency_UpdateAuthority | String | Account that can change the transferred token's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL | | Transfer_Currency_Uri | String | Link to the transferred token's off-chain metadata file, often on IPFS or Arweave | | Transfer_Currency_VerifiedCollection | String | Whether the transferred token's NFT collection is verified; false for fungible tokens | | Transfer_Currency_Wrapped | String | Whether the transferred token is wrapped SOL; the string true or false | | Transfer_Index | UInt32 | Position of the transfer within the transaction | | Transfer_Receiver_Address | String | Receiving token account, base58; for SOL the receiving wallet | | Transfer_Receiver_Token_Owner | String | Wallet that owns the receiving token account; the address you usually want | | Transfer_Sender_Address | String | Sending token account, base58; for SOL the sending wallet | | Transfer_Sender_Token_Owner | String | Wallet that owns the sending token account; the address you usually want | ### dex_trades: 82 columns One row per swap on an indexed Solana DEX program, with buy and sell sides, venue identifiers, token metadata and USD pricing. Bucket prefix: solana/dex_trades File naming: _.parquet, 50 slots per file, sorted ascending Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/dex_trades/390740200_390740249.parquet Sample updated: Jan 2, 2026 | column | type | description | | --- | --- | --- | | Block_Date | Date | UTC date of the block | | Block_Height | UInt64 | Count of blocks produced before this one; lower than the slot because some slots are skipped | | Block_Slot | UInt64 | Slot number of the block; delivered files are split by slot range | | Block_Time | DateTime | Block timestamp, UTC | | Instruction_CallPath | Array | Instruction_Index values of the parent instructions; empty on a top-level instruction | | Instruction_ExternalSeqNumber | UInt32 | Number of the top-level instruction this row falls under, counting from 1 | | Instruction_Index | UInt32 | Position of the instruction in the transaction, counting inner instructions | | Instruction_InternalSeqNumber | UInt32 | Position under its top-level instruction, counting from 1; 0 on a top-level instruction | | Instruction_Program_Address | String | Program that executed the instruction | | Instruction_Program_Method | String | Decoded instruction name, for example swap, buy or route | | Instruction_Program_Name | String | Decoded program name | | Trade_Buy_Account_Address | String | Token account that received the bought tokens; empty on nearly all DFlow rows, and a plain wallet on some native SOL rows | | Trade_Buy_Account_Token_Owner | String | Wallet that owns the receiving token account; often the signer, and often empty | | Trade_Buy_Amount | String | Amount bought, decimal adjusted | | Trade_Buy_AmountInUSD | Float64 | Amount bought, in USD; 0 when unpriced or when only the sold side was valued, then use Trade_Buy_Amount × Trade_Buy_PriceInUSD | | Trade_Buy_Currency_CollectionAddress | String | NFT collection of the bought asset; empty for fungible tokens | | Trade_Buy_Currency_Decimals | UInt32 | Decimal places of the bought token, as its mint sets them | | Trade_Buy_Currency_EditionNonce | UInt32 | Metaplex edition bump seed; a technical value, 0 when unset | | Trade_Buy_Currency_Fungible | String | Whether the bought asset is fungible; false for NFTs | | Trade_Buy_Currency_MetadataAddress | String | Metaplex metadata account of the bought asset, when recorded | | Trade_Buy_Currency_MintAddress | String | Mint address of the bought token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped) | | Trade_Buy_Currency_Name | String | Name from the bought token's metadata; lookalikes copy real names | | Trade_Buy_Currency_ProgramAddress | String | Program that owns the bought mint, SPL Token or Token-2022, when recorded | | Trade_Buy_Currency_SellerFeeBasisPoints | UInt32 | Creator royalty in basis points (100 = 1%); 0 for nearly all fungible coins | | Trade_Buy_Currency_Symbol | String | Ticker of the bought token; not unique, so join on the mint address | | Trade_Buy_Currency_TokenCreator_Address | Array | Creator wallets from the bought asset's metadata; mostly empty in this table | | Trade_Buy_Currency_TokenStandard | String | Metaplex standard, such as Fungible or FungibleAsset, when recorded | | Trade_Buy_Currency_Uri | String | Link to the bought asset's off-chain metadata file, often on IPFS or Arweave | | Trade_Buy_Currency_UpdateAuthority | String | Account that can change the bought asset's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL | | Trade_Buy_Currency_VerifiedCollection | String | Whether the NFT collection is verified; false for fungible tokens | | Trade_Buy_Order_Account | String | Account of the matched order; set only on Magic Eden marketplace trades, empty on AMM and order-book swaps | | Trade_Buy_Order_BuySide | String | Whether the matched order is a buy; false when none is attached | | Trade_Buy_Order_LimitAmount | UInt64 | Order size limit; 0 in all rows checked, Magic Eden included | | Trade_Buy_Order_LimitPrice | UInt64 | Order limit price; 0 in all rows checked, Magic Eden included | | Trade_Buy_Order_Mint | String | Mint of the NFT or token the order is for, when one is attached | | Trade_Buy_Order_OrderId | String | Order ID, when one is attached | | Trade_Buy_Order_Owner | String | Wallet that placed the order, when one is attached | | Trade_Buy_Order_Payer | String | Account that paid for the order, normally its owner | | Trade_Buy_Price | Float64 | Price of the bought currency in units of the sold currency | | Trade_Buy_PriceInUSD | Float64 | USD price of one bought token; 0 when unpriced or when only Trade_Buy_AmountInUSD is set, then divide that by Trade_Buy_Amount | | Trade_Dex_ProgramAddress | String | Program address of the DEX that ran the swap, base58; filter on it to pick out one venue | | Trade_Dex_ProtocolFamily | String | Venue family as indexed, which can span several programs; for example Pumpswap, Meteora, Raydium, Jupiter, OrcaWhirpool or OKX | | Trade_Dex_ProtocolName | String | Program name and version as indexed; forks can share one, so pair it with the program address; for example pump_amm, lb_clmm, whirlpool, or amm_v3 for both Raydium CLMM and PancakeSwap | | Trade_Index | UInt32 | Position of the swap within the transaction | | Trade_Market_MarketAddress | String | Pool, bonding curve or order-book market the swap ran against; empty when the program reports none, as on Jupiter, DFlow, OKX and Aquifer | | Trade_PriceAsymmetry | Float64 | Relative difference between buy and sell side USD values; 0 when only one side is valued | | Trade_Sell_Account_Address | String | Token account that the sold tokens came from; empty on nearly all DFlow rows, and a plain wallet on some native SOL rows | | Trade_Sell_Account_Token_Owner | String | Wallet that owns the paying token account; often the signer, and often empty | | Trade_Sell_Amount | String | Amount sold, decimal adjusted | | Trade_Sell_AmountInUSD | Float64 | Amount sold, in USD; 0 when unpriced or when only the bought side was valued, then use Trade_Sell_Amount × Trade_Sell_PriceInUSD | | Trade_Sell_Currency_CollectionAddress | String | NFT collection of the sold asset; empty for fungible tokens | | Trade_Sell_Currency_Decimals | UInt32 | Decimal places of the sold token, as its mint sets them | | Trade_Sell_Currency_EditionNonce | UInt32 | Metaplex edition bump seed; a technical value, 0 when unset | | Trade_Sell_Currency_Fungible | String | Whether the sold asset is fungible; false for NFTs | | Trade_Sell_Currency_MetadataAddress | String | Metaplex metadata account of the sold asset, when recorded | | Trade_Sell_Currency_MintAddress | String | Mint address of the sold token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped) | | Trade_Sell_Currency_Name | String | Name from the sold token's metadata; lookalikes copy real names | | Trade_Sell_Currency_ProgramAddress | String | Program that owns the sold mint, SPL Token or Token-2022, when recorded | | Trade_Sell_Currency_SellerFeeBasisPoints | UInt32 | Creator royalty in basis points (100 = 1%); 0 for nearly all fungible coins | | Trade_Sell_Currency_Symbol | String | Ticker of the sold token; not unique, so join on the mint address | | Trade_Sell_Currency_TokenCreator_Address | Array | Creator wallets from the sold asset's metadata; mostly empty in this table | | Trade_Sell_Currency_TokenStandard | String | Metaplex standard, such as Fungible or FungibleAsset, when recorded | | Trade_Sell_Currency_Uri | String | Link to the sold asset's off-chain metadata file, often on IPFS or Arweave | | Trade_Sell_Currency_UpdateAuthority | String | Account that can change the sold asset's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL | | Trade_Sell_Currency_VerifiedCollection | String | Whether the NFT collection is verified; false for fungible tokens | | Trade_Sell_Order_Account | String | Account of the matched order; set only on Magic Eden marketplace trades, empty on AMM and order-book swaps | | Trade_Sell_Order_BuySide | String | Whether the matched order is a buy; false when none is attached | | Trade_Sell_Order_LimitAmount | UInt64 | Order size limit; 0 in all rows checked, Magic Eden included | | Trade_Sell_Order_LimitPrice | UInt64 | Order limit price; 0 in all rows checked, Magic Eden included | | Trade_Sell_Order_Mint | String | Mint of the NFT or token the order is for, when one is attached | | Trade_Sell_Order_OrderId | String | Order ID, when one is attached | | Trade_Sell_Order_Owner | String | Wallet that placed the order, when one is attached | | Trade_Sell_Order_Payer | String | Account that paid for the order, normally its owner | | Trade_Sell_Price | Float64 | Price of the sold currency in units of the bought currency | | Trade_Sell_PriceInUSD | Float64 | USD price of one sold token; 0 when unpriced or when only Trade_Sell_AmountInUSD is set, then divide that by Trade_Sell_Amount | | Transaction_Fee | String | Network fee paid, in SOL | | Transaction_FeeInUSD | Float64 | Network fee, in USD | | Transaction_FeePayer | String | Wallet that paid the network fee; Solana makes it the first signer | | Transaction_Index | UInt32 | Position of the transaction within the block | | Transaction_Result_Success | String | Whether the transaction succeeded | | Transaction_Signature | String | Transaction signature, base58 | | Transaction_Signer | String | Wallet that signed the transaction and paid its fee | ### dex_pools: 64 columns One row per pool or market state change on an indexed Solana DEX program, with the change amount and the resulting balance for both sides, USD-valued at block time. Bucket prefix: solana/dex_pools File naming: _.parquet, 50 slots per file, sorted ascending Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/dex_pools/390740200_390740249.parquet Sample updated: Jan 2, 2026 | column | type | description | | --- | --- | --- | | Block_Date | Date | UTC date of the block | | Block_Slot | UInt64 | Slot number of the block; delivered files are split by slot range | | Block_Time | DateTime | Block timestamp, UTC | | Instruction_CallPath | Array | Instruction_Index values of the parent instructions; empty on a top-level instruction | | Instruction_ExternalSeqNumber | UInt32 | Number of the top-level instruction this row falls under, counting from 1 | | Instruction_Index | UInt32 | Position of the instruction in the transaction, counting inner instructions | | Instruction_InternalSeqNumber | UInt32 | Position under its top-level instruction, counting from 1; 0 on a top-level instruction | | Instruction_Program_Address | String | Program that executed the instruction | | Instruction_Program_Method | String | Decoded instruction name, for example swap, buy or route | | Instruction_Program_Name | String | Decoded program name | | Pool_BaseCurrency_ChangeAmount | String | Base-token amount the event added to the pool (positive) or took out (negative), decimal adjusted | | Pool_BaseCurrency_ChangeAmountInUSD | Float64 | Base-token change in USD; 0 when unpriced or when only the quote side was valued | | Pool_BaseCurrency_PostAmount | String | Base-token reserve left in the pool after the event, decimal adjusted | | Pool_BaseCurrency_PostAmountInUSD | Float64 | Base-token reserve after the event, in USD; 0 when unpriced or when only the quote side was valued | | Pool_BaseCurrency_Price | Float64 | Quote-token reserve divided by base-token reserve after the event; a fair price only on constant-product pools | | Pool_BaseCurrency_PriceInUSD | Float64 | Base-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_Dex_ProgramAddress | String | Program address of the DEX that owns the pool, base58; filter on it to pick out one venue | | Pool_Dex_ProtocolFamily | String | Venue family as indexed, which can span several programs; for example Pumpswap, Meteora, Raydium, OrcaWhirpool, Phoenix or Manifest | | Pool_Dex_ProtocolName | String | Program name and version as indexed; forks can share one, so pair it with the program address; for example pump_amm, lb_clmm, whirlpool, or amm_v3 for both Raydium CLMM and PancakeSwap | | Pool_Market_BaseCurrency_CollectionAddress | String | NFT collection of the base asset; empty for fungible tokens | | Pool_Market_BaseCurrency_Decimals | UInt32 | Decimal places of the base token, as its mint sets them | | Pool_Market_BaseCurrency_EditionNonce | UInt32 | Metaplex edition bump seed; a technical value, 0 when unset | | Pool_Market_BaseCurrency_Fungible | String | Whether the base asset is fungible; false for NFTs | | Pool_Market_BaseCurrency_MetadataAddress | String | Metaplex metadata account of the base asset, when recorded | | Pool_Market_BaseCurrency_MintAddress | String | Mint address of the base token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped) | | Pool_Market_BaseCurrency_Name | String | Name from the base token's metadata; lookalikes copy real names | | Pool_Market_BaseCurrency_ProgramAddress | String | Program that owns the base mint, SPL Token or Token-2022, when recorded | | Pool_Market_BaseCurrency_SellerFeeBasisPoints | UInt32 | Creator royalty in basis points (100 = 1%); 0 for nearly all fungible coins | | Pool_Market_BaseCurrency_Symbol | String | Ticker of the base token; not unique, so join on the mint address | | Pool_Market_BaseCurrency_TokenCreators_Address | Array | Creator wallets from the base asset's metadata; often empty | | Pool_Market_BaseCurrency_TokenStandard | String | Metaplex standard, such as Fungible or FungibleAsset, when recorded | | Pool_Market_BaseCurrency_Uri | String | Link to the base asset's off-chain metadata file, often on IPFS or Arweave | | Pool_Market_BaseCurrency_UpdateAuthority | String | Account that can change the base asset's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL | | Pool_Market_BaseCurrency_VerifiedCollection | String | Whether the NFT collection is verified; false for fungible tokens | | Pool_Market_MarketAddress | String | Address of the pool, bonding curve or order-book market | | Pool_Market_QuoteCurrency_CollectionAddress | String | NFT collection of the quote asset; empty for fungible tokens | | Pool_Market_QuoteCurrency_Decimals | UInt32 | Decimal places of the quote token, as its mint sets them | | Pool_Market_QuoteCurrency_EditionNonce | UInt32 | Metaplex edition bump seed; a technical value, 0 when unset | | Pool_Market_QuoteCurrency_Fungible | String | Whether the quote asset is fungible; false for NFTs | | Pool_Market_QuoteCurrency_MetadataAddress | String | Metaplex metadata account of the quote asset, when recorded | | Pool_Market_QuoteCurrency_MintAddress | String | Mint address of the quote token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped) | | Pool_Market_QuoteCurrency_Name | String | Name from the quote token's metadata; lookalikes copy real names | | Pool_Market_QuoteCurrency_ProgramAddress | String | Program that owns the quote mint, SPL Token or Token-2022, when recorded | | Pool_Market_QuoteCurrency_SellerFeeBasisPoints | UInt32 | Creator royalty in basis points (100 = 1%); 0 for nearly all fungible coins | | Pool_Market_QuoteCurrency_Symbol | String | Ticker of the quote token; not unique, so join on the mint address | | Pool_Market_QuoteCurrency_TokenCreators_Address | Array | Creator wallets from the quote asset's metadata; often empty | | Pool_Market_QuoteCurrency_TokenStandard | String | Metaplex standard, such as Fungible or FungibleAsset, when recorded | | Pool_Market_QuoteCurrency_Uri | String | Link to the quote asset's off-chain metadata file, often on IPFS or Arweave | | Pool_Market_QuoteCurrency_UpdateAuthority | String | Account that can change the quote asset's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL | | Pool_Market_QuoteCurrency_VerifiedCollection | String | Whether the NFT collection is verified; false for fungible tokens | | Pool_QuoteCurrency_ChangeAmount | String | Quote-token amount the event added to the pool (positive) or took out (negative), decimal adjusted | | Pool_QuoteCurrency_ChangeAmountInUSD | Float64 | Quote-token change in USD; 0 when unpriced or when only the base side was valued | | Pool_QuoteCurrency_PostAmount | String | Quote-token reserve left in the pool after the event, decimal adjusted | | Pool_QuoteCurrency_PostAmountInUSD | Float64 | Quote-token reserve after the event, in USD; 0 when unpriced or when only the base side was valued | | Pool_QuoteCurrency_Price | Float64 | Base-token reserve divided by quote-token reserve after the event; a fair price only on constant-product pools | | Pool_QuoteCurrency_PriceInUSD | Float64 | Quote-token USD price from the reserve ratio, so off on order books and concentrated liquidity; Pool_QuoteCurrency_PostAmountInUSD ÷ Pool_QuoteCurrency_PostAmount matches trade prices | | PoolEvent_Index | UInt32 | Position of the pool event within its instruction | | Transaction_Fee | String | Network fee paid, in SOL | | Transaction_FeeInUSD | Float64 | Network fee, in USD | | Transaction_FeePayer | String | Wallet that paid the network fee; Solana makes it the first signer | | Transaction_Index | UInt32 | Position of the transaction within the block | | Transaction_Result_Success | String | Whether the transaction succeeded | | Transaction_Signature | String | Transaction signature, base58 | | Transaction_Signer | String | Wallet that signed the transaction and paid its fee | ### dex_orders: 63 columns One row per order-book event on indexed Solana order-book programs, NFT marketplaces such as Magic Eden included, with the market, both currencies, side, size and limit price. Bucket prefix: solana/dex_orders File naming: _.parquet, 50 slots per file, sorted ascending Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/dex_orders/390740200_390740249.parquet Sample updated: Jan 2, 2026 | column | type | description | | --- | --- | --- | | Block_Date | Date | UTC date of the block | | Block_Slot | UInt64 | Slot number of the block; delivered files are split by slot range | | Block_Time | DateTime | Block timestamp, UTC | | Instruction_CallPath | Array | Instruction_Index values of the parent instructions; empty on a top-level instruction | | Instruction_ExternalSeqNumber | UInt32 | Number of the top-level instruction this row falls under, counting from 1 | | Instruction_Index | UInt32 | Position of the instruction in the transaction, counting inner instructions | | Instruction_InternalSeqNumber | UInt32 | Position under its top-level instruction, counting from 1; 0 on a top-level instruction | | Instruction_Program_Address | String | Program that executed the instruction | | Instruction_Program_Method | String | Decoded instruction name, for example swap, buy or route | | Instruction_Program_Name | String | Decoded program name | | OrderEvent_Dex_ProgramAddress | String | Program address of the order-book program that recorded the event, base58 | | OrderEvent_Dex_ProtocolFamily | String | Order-book protocol family, for example Magic Eden, Phoenix or OpenBook | | OrderEvent_Dex_ProtocolName | String | Order-book protocol name and version | | OrderEvent_Index | UInt32 | Position of the order event within the transaction | | OrderEvent_Market_BaseCurrency_CollectionAddress | String | NFT collection of the market's base currency; empty for fungible tokens | | OrderEvent_Market_BaseCurrency_Decimals | UInt32 | Decimals of the market's base currency | | OrderEvent_Market_BaseCurrency_EditionNonce | UInt32 | Metaplex edition bump seed of the market's base currency; a technical value, 0 when unset | | OrderEvent_Market_BaseCurrency_Fungible | String | Whether the market's base currency is fungible; the string true or false | | OrderEvent_Market_BaseCurrency_MetadataAddress | String | Metaplex metadata account of the market's base currency, when recorded | | OrderEvent_Market_BaseCurrency_MintAddress | String | Mint address of the market's base currency and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped) | | OrderEvent_Market_BaseCurrency_Name | String | Name of the market's base currency | | OrderEvent_Market_BaseCurrency_ProgramAddress | String | Program that owns the market's base currency's mint, SPL Token or Token-2022, when recorded | | OrderEvent_Market_BaseCurrency_SellerFeeBasisPoints | UInt32 | Creator royalty on the market's base currency in basis points (100 = 1%); 0 for nearly all fungible coins | | OrderEvent_Market_BaseCurrency_Symbol | String | Symbol of the market's base currency; reported by the token metadata, not unique | | OrderEvent_Market_BaseCurrency_TokenCreator_Address | Array | Creator wallets from the market's base currency's metadata; mostly empty in this table | | OrderEvent_Market_BaseCurrency_TokenStandard | String | Metaplex standard of the market's base currency, such as Fungible or FungibleAsset, when recorded | | OrderEvent_Market_BaseCurrency_Uri | String | Link to the market's base currency's off-chain metadata file, often on IPFS or Arweave | | OrderEvent_Market_BaseCurrency_UpdateAuthority | String | Account that can change the market's base currency's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL | | OrderEvent_Market_BaseCurrency_VerifiedCollection | String | Whether the market's base currency's NFT collection is verified; false for fungible tokens | | OrderEvent_Market_MarketAddress | String | Order-book market the order was placed on, base58 | | OrderEvent_Market_QuoteCurrency_CollectionAddress | String | NFT collection of the market's quote currency; empty for fungible tokens | | OrderEvent_Market_QuoteCurrency_Decimals | UInt32 | Decimals of the market's quote currency | | OrderEvent_Market_QuoteCurrency_EditionNonce | UInt32 | Metaplex edition bump seed of the market's quote currency; a technical value, 0 when unset | | OrderEvent_Market_QuoteCurrency_Fungible | String | Whether the market's quote currency is fungible; the string true or false | | OrderEvent_Market_QuoteCurrency_MetadataAddress | String | Metaplex metadata account of the market's quote currency, when recorded | | OrderEvent_Market_QuoteCurrency_MintAddress | String | Mint address of the market's quote currency and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped) | | OrderEvent_Market_QuoteCurrency_Name | String | Name of the market's quote currency | | OrderEvent_Market_QuoteCurrency_ProgramAddress | String | Program that owns the market's quote currency's mint, SPL Token or Token-2022, when recorded | | OrderEvent_Market_QuoteCurrency_SellerFeeBasisPoints | UInt32 | Creator royalty on the market's quote currency in basis points (100 = 1%); 0 for nearly all fungible coins | | OrderEvent_Market_QuoteCurrency_Symbol | String | Symbol of the market's quote currency; reported by the token metadata, not unique | | OrderEvent_Market_QuoteCurrency_TokenCreator_Address | Array | Creator wallets from the market's quote currency's metadata; mostly empty in this table | | OrderEvent_Market_QuoteCurrency_TokenStandard | String | Metaplex standard of the market's quote currency, such as Fungible or FungibleAsset, when recorded | | OrderEvent_Market_QuoteCurrency_Uri | String | Link to the market's quote currency's off-chain metadata file, often on IPFS or Arweave | | OrderEvent_Market_QuoteCurrency_UpdateAuthority | String | Account that can change the market's quote currency's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL | | OrderEvent_Market_QuoteCurrency_VerifiedCollection | String | Whether the market's quote currency's NFT collection is verified; false for fungible tokens | | OrderEvent_Order_Account | String | Account that holds the order on the book | | OrderEvent_Order_BuySide | String | Whether the order buys the base currency; the string true or false | | OrderEvent_Order_LimitAmount | String | Order size in the base currency, decimal adjusted, as a decimal string | | OrderEvent_Order_LimitAmountInUSD | Float64 | Order size valued in USD at the hourly price for the block's hour; 0 when no price | | OrderEvent_Order_LimitPrice | String | Limit price in quote per base, as a decimal string | | OrderEvent_Order_LimitPriceInUSD | Float64 | Limit price valued in USD at the hourly price for the block's hour; 0 when no price | | OrderEvent_Order_Mint | String | Mint the order is denominated in, base58 | | OrderEvent_Order_OrderId | String | Order id assigned by the market | | OrderEvent_Order_Owner | String | Wallet that owns the order | | OrderEvent_Order_Payer | String | Account that paid for placing the order | | OrderEvent_Type | String | Event type as the program records it, for example Open or Cancel | | Transaction_Fee | String | Network fee paid, in SOL | | Transaction_FeeInUSD | Float64 | Network fee, in USD | | Transaction_FeePayer | String | Wallet that paid the network fee; Solana makes it the first signer | | Transaction_Index | UInt32 | Position of the transaction within the block | | Transaction_Result_Success | String | Whether the transaction succeeded | | Transaction_Signature | String | Transaction signature, base58 | | Transaction_Signer | String | Wallet that signed the transaction and paid its fee | ### rewards: 18 columns One row per reward paid in a block: the leader's fee reward on every block, and staking, voting and rent rewards where the chain records them. Bucket prefix: solana/rewards File naming: _.parquet, 50 slots per file, sorted ascending Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/rewards/390740350_390740399.parquet Sample updated: Jan 2, 2026 | column | type | description | | --- | --- | --- | | Block_Date | Date | UTC date of the block | | Block_Hash | String | Block hash, base58 | | Block_Height | UInt64 | Count of blocks produced before this one; lower than the slot because some slots are skipped | | Block_ParentHash | String | Hash of the parent block, base58 | | Block_ParentSlot | UInt64 | Slot of the parent block; lower than Block_Slot minus one when slots were skipped | | Block_RewardsCount | UInt32 | Reward records attached to the block | | Block_Slot | UInt64 | Slot number of the block; delivered files are split by slot range | | Block_Time | DateTime | Block timestamp, UTC | | Block_TxCount | UInt32 | Transactions in the block | | Reward_Address | String | Account that received the reward, base58 | | Reward_Amount | String | Reward paid in SOL, decimal adjusted from lamports, as a decimal string | | Reward_AmountInUSD | Float64 | Reward valued in USD at the hourly SOL price for the block's hour | | Reward_Commission | String | Validator commission on staking and voting rewards, in percent, as a decimal string; 0 for fee rewards | | Reward_CommissionInUSD | Float64 | Commission valued in USD at the hourly SOL price for the block's hour | | Reward_Index | UInt32 | Position of the reward within the block's reward list | | Reward_PostBalance | String | Account balance in SOL after the reward, decimal adjusted, as a decimal string | | Reward_PostBalanceInUSD | Float64 | Post-reward balance valued in USD at the hourly SOL price for the block's hour | | Reward_RewardType | String | Reward type as the chain records it: Fee on every block, and Rent, Staking or Voting where the block carries them | ## Price - Latest month (Sep 4, 2026 → Oct 4, 2026): $1,200 one-time, USD - Last 6 months (Apr 4, 2026 → Oct 4, 2026): $6,000 one-time, USD - Last 12 months (Oct 4, 2025 → Oct 4, 2026): $12,000 one-time, USD Every window includes all 7 tables and 300 columns. Only the time range changes. ## Questions buyers ask Q: What is included in the Solana dataset? A: Seven Parquet tables with 300 documented columns in total: blocks (9), transactions (17), transfers (47), dex_trades (82), dex_pools (64), dex_orders (63) and rewards (18). Each purchase covers the window you choose, 1, 6 or 12 months, through to yesterday, refreshed daily. Q: Why is there no full-history tier? A: Because we hold row-level Solana data, meaning individual transactions, transfers, swaps and orders, for the last twelve months on a rolling basis. Aggregated series such as per-token OHLCV go back further and are sold separately. The 12-month tier is therefore the deepest window we can deliver at this grain, and we would rather say so than sell a longer label. Q: How large is a window? A: Large. In the sample window Solana carried about 1,100 transactions and 700 transfers per slot, at roughly two and a half slots a second, and the DEX tables add one row per swap and per pool change. We size it per table before delivery and send you the exact figures with the manifest. If you need only the DEX tables, the Solana DEX Trades and Pools dataset is the same two tables at a lower price. Q: How do the tables join? A: On Transaction_Signature, which appears in every table except blocks and rewards; those two join on Block_Slot. Within a transaction, Transfer_Index, Trade_Index and OrderEvent_Index order the rows, and the Instruction_CallPath columns say which program invocation each row came from. Q: What is deliberately not in this dataset? A: Two things. Balance updates, the per-account pre and post balances for every transaction, exist in our store but are not in this bundle, because they run to several rows per transfer and would dominate the size. Raw instructions are also not a table here. If you need either, ask and we will quote them alongside this one. Q: Why do slots and block heights differ? A: A slot is a scheduled chance to produce a block, and some slots pass with no block. Block_Slot is the slot, Block_Height counts only blocks actually produced, and Block_ParentSlot shows the gap when slots were skipped. Files are cut by slot range, 50 slots per file, so a file can hold fewer than 50 blocks. Q: Which address should I use for a wallet? A: The owner. On Solana a token is held in a token account owned by a wallet, and most people mean the wallet. Transfers carry both: Transfer_Sender_Address and Transfer_Receiver_Address are the token accounts, Transfer_Sender_Token_Owner and Transfer_Receiver_Token_Owner are the wallets. For SOL itself the two coincide. Q: Which venues are in the DEX tables? A: All programs we decode, identified by the ProtocolFamily and ProgramAddress columns on every row. In the sample window dex_trades held Pumpswap, Meteora, Raydium, Jupiter, Pump.fun, Orca Whirlpool, PancakeSwap and SolFi among others, and dex_orders held Magic Eden order events. The set grows as new programs are indexed; nothing is pinned to a fixed venue list. Q: What is in rewards? A: What the chain attaches to each block. Every block carries the leader's fee reward, which is what the sample window shows; blocks at epoch boundaries also carry staking and voting rewards, and rent rewards where they occur. Reward_RewardType says which, and Reward_Commission is the validator's cut on the staking and voting kinds. Q: How much of it is valued in USD? A: Swaps are priced from the safer side, so nearly every trade with SOL or a stablecoin on one side carries a value, and the token side's PriceInUSD is derived through it. Transfers and rewards are valued only for tokens with an hourly price series. A USD value of 0 means either a zero-value row or no price; the column cannot tell the two apart. Q: Are failed transactions included? A: Yes. Transaction_Result_Success carries the outcome on every table that has it, and Transaction_Result_ErrorMessage carries the runtime's error text when it failed. The export applies no filter of its own, so vote transactions, spam tokens and zero-value rows are all kept; the columns let you drop what you do not want. Q: How do I get one program's or one token's activity? A: Filter Trade_Dex_ProgramAddress in dex_trades, Pool_Dex_ProgramAddress in dex_pools or OrderEvent_Dex_ProgramAddress in dex_orders to the program, base58. For a token, filter the MintAddress columns: Transfer_Currency_MintAddress in transfers, and the Buy or Sell currency mint in dex_trades. Join on mint addresses rather than symbols, which repeat. Q: How are amounts and booleans encoded? A: Amounts are decimal-adjusted decimal strings, carrying exactly as many places as the token has decimals; SOL is adjusted from lamports, where one SOL is a billion lamports. Multiply by ten to the power of the decimals for the raw integer. Casting to float loses precision on large values. Booleans are the strings true and false. Q: How do I load it? A: One line in DuckDB: SELECT * FROM read_parquet('transfers/*.parquet') LIMIT 10. Pandas works too: pandas.read_parquet(path). The sample files open without credentials. Q: How is the data delivered, and how current is it? A: As flat Parquet named by block range, 50 slots per file and sorted ascending, 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. Enterprise orders can be delivered into your own S3, GCS or R2 bucket. Refreshed daily with T+1 latency, so a purchase made today includes everything to yesterday. Q: Can I try before I buy? A: Yes. Each table links to a public sample file with real records, and the sample bucket holds full Parquet files you can load directly. No email address required. ## What this file is, and is not This is a description of one dataset sold by Bitquery, written for assistants and for people. It lists every column but holds no data rows. The sample files linked under each table are real Parquet and are free to download. Figures here come from the product record and are exact unless marked otherwise; the delivery manifest is authoritative for a purchased file. If a question needs a row that is not in a sample, say so rather than guessing at it.