BitqueryBitqueryData Store
Solana logoSolanaRWATransfersTrades

Solana Tokenized Stocks

Transfers and DEX trades of xStocks, Ondo, Backpack Securities and PreStocks tokens on Solana since October 2025, one row per transfer or trade.

Coverage
Oct 28, 2025→ Oct 14, 2026 · yesterday
Rows
≈550Mrows · estimate
Size
≈100 GBParquet · estimate
Tokens
≈335distinct · estimate
Tables
2Parquet, one prefix each
Columns
129across 2 tables
Coverage ends yesterday, UTC

Overview

Tokenized stocks on Solana come from four issuers, and pump.fun copies with the same names are everywhere. We keep only the real mints: xStocks by Backed (names ending "xStock", mints starting "Xs", 71 tokens traded on 1 October 2026), Ondo Global Markets ("(Ondo Tokenized)", mints ending "ondo", 186), PreStocks pre-IPO tokens (mints starting "Pre", 9) and Backpack Securities (a listed set of 69 mints). Each table keeps the standard Solana schema, with nothing renamed or added.

Two tables. transfers has every transfer of a stock token; dex_trades has every DEX trade with a stock token on either side, including Jupiter Z RFQ fills from 29 September 2026. Filter on the mint address, never on the symbol. Ondo's tokens trade almost only through RFQ, so most of their activity shows up in transfers rather than pool trades.

Use cases

  • Volume and liquidity per stock token across DEXs, such as TSLAx or NVDAx
  • Holder and wallet flows for one tokenized stock
  • On-chain price against the listed share price
  • Comparing issuers of the same stock: xStocks, Ondo and Backpack

2 tables

129 columns · free sample for each table

transfers

47 columns

One row per transfer of an xStocks, Ondo, Backpack Securities or PreStocks token, in the standard Solana transfers schema.

solana/tokenized_stocks_transfers<start_slot>_<end_slot>.parquet
Browse columns Sample fileSample updated Oct 15, 2026

dex_trades

82 columns

One row per DEX trade with a stock token on either side, in the standard Solana dex_trades schema.

solana/tokenized_stocks_dex_trades<start_slot>_<end_slot>.parquet
Browse columns Sample fileSample updated Oct 15, 2026

Schema reference

copies a column name
129 columns
transfers47 columnsOne row per transfer of an xStocks, Ondo, Backpack Securities or PreStocks token, in the standard Solana transfers schema.
ColumnTypeDescription
Block4
Block_DateDateUTC date of the block
Block_HeightUInt64Count of blocks produced before this one; lower than the slot because some slots are skipped
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_ExternalSeqNumberUInt32Number of the top-level instruction this row falls under, counting from 1
Instruction_IndexUInt32Position of the instruction in the transaction, counting inner instructions
Instruction_InternalSeqNumberUInt32Position 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, for example swap, buy or route
Instruction_Program_NameStringDecoded program name
Transaction8
Transaction_FeeStringNetwork fee paid, in SOL
Transaction_FeeInUSDFloat64Network fee, in USD
Transaction_FeePayerStringWallet that paid the network fee; Solana makes it the first signer
Transaction_IndexUInt32Position of the transaction within the block
Transaction_Result_ErrorMessageStringError the runtime returned when the transaction failed; empty on success
Transaction_Result_SuccessStringWhether the transaction succeeded
Transaction_SignatureStringTransaction signature, base58
Transaction_SignerStringWallet that signed the transaction and paid its fee
Transfer8
Transfer_AmountStringAmount transferred, decimal adjusted, as a decimal string. Multiply by 10^Transfer_Currency_Decimals for the raw on-chain integer
Transfer_AmountInUSDFloat64Amount valued in USD at the hourly price for the block's hour; 0 for tokens with no price
Transfer_Authority_AddressStringAccount that authorised the transfer, usually the token account owner or its delegate
Transfer_IndexUInt32Position of the transfer within the transaction
Transfer_Receiver_AddressStringReceiving token account, base58; for SOL the receiving wallet
Transfer_Receiver_Token_OwnerStringWallet that owns the receiving token account; the address you usually want
Transfer_Sender_AddressStringSending token account, base58; for SOL the sending wallet
Transfer_Sender_Token_OwnerStringWallet that owns the sending token account; the address you usually want
Transfer_Currency20
Transfer_Currency_CollectionAddressStringNFT collection of the transferred token; empty for fungible tokens
Transfer_Currency_DecimalsUInt32Decimals of the transferred token
Transfer_Currency_EditionNonceUInt32Metaplex edition bump seed of the transferred token; a technical value, 0 when unset
Transfer_Currency_FungibleStringWhether the transferred token is fungible; the string true or false
Transfer_Currency_IsMutableStringWhether the transferred token's metadata can still be changed; the string true or false
Transfer_Currency_KeyStringMetaplex metadata account type of the transferred token, such as MetadataV1
Transfer_Currency_MetadataAddressStringMetaplex metadata account of the transferred token, when recorded
Transfer_Currency_MintAddressStringMint address of the transferred token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped)
Transfer_Currency_NameStringName of the transferred token
Transfer_Currency_NativeStringtrue for SOL, false for every SPL token; the string true or false
Transfer_Currency_PrimarySaleHappenedStringWhether the transferred token's first sale has happened, from Metaplex metadata; the string true or false
Transfer_Currency_ProgramAddressStringProgram that owns the transferred token's mint, SPL Token or Token-2022, when recorded
Transfer_Currency_SellerFeeBasisPointsUInt32Creator royalty on the transferred token in basis points (100 = 1%); 0 for nearly all fungible coins
Transfer_Currency_SymbolStringSymbol of the transferred token; reported by the token metadata, not unique
Transfer_Currency_TokenCreator_AddressArrayCreator wallets from the transferred token's metadata; mostly empty in this table
Transfer_Currency_TokenStandardStringMetaplex standard of the transferred token, such as Fungible or FungibleAsset, when recorded
Transfer_Currency_UpdateAuthorityStringAccount that can change the transferred token's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL
Transfer_Currency_UriStringLink to the transferred token's off-chain metadata file, often on IPFS or Arweave
Transfer_Currency_VerifiedCollectionStringWhether the transferred token's NFT collection is verified; false for fungible tokens
Transfer_Currency_WrappedStringWhether the transferred token is wrapped SOL; the string true or false
Sample file
dex_trades82 columnsOne row per DEX trade with a stock token on either side, in the standard Solana dex_trades schema.
ColumnTypeDescription
Block4
Block_DateDateUTC date of the block
Block_HeightUInt64Count of blocks produced before this one; lower than the slot because some slots are skipped
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_ExternalSeqNumberUInt32Number of the top-level instruction this row falls under, counting from 1
Instruction_IndexUInt32Position of the instruction in the transaction, counting inner instructions
Instruction_InternalSeqNumberUInt32Position 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, for example swap, buy or route
Instruction_Program_NameStringDecoded program name
Trade_Buy29
Trade_Buy_Account_AddressStringToken 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_OwnerStringWallet that owns the receiving token account; often the signer, and often empty
Trade_Buy_AmountStringAmount bought, decimal adjusted
Trade_Buy_AmountInUSDFloat64Amount 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_CollectionAddressStringNFT collection of the bought asset; empty for fungible tokens
Trade_Buy_Currency_DecimalsUInt32Decimal places of the bought token, as its mint sets them
Trade_Buy_Currency_EditionNonceUInt32Metaplex edition bump seed; a technical value, 0 when unset
Trade_Buy_Currency_FungibleStringWhether the bought asset is fungible; false for NFTs
Trade_Buy_Currency_MetadataAddressStringMetaplex metadata account of the bought asset, when recorded
Trade_Buy_Currency_MintAddressStringMint address of the bought token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped)
Trade_Buy_Currency_NameStringName from the bought token's metadata; lookalikes copy real names
Trade_Buy_Currency_ProgramAddressStringProgram that owns the bought mint, SPL Token or Token-2022, when recorded
Trade_Buy_Currency_SellerFeeBasisPointsUInt32Creator royalty in basis points (100 = 1%); 0 for nearly all fungible coins
Trade_Buy_Currency_SymbolStringTicker of the bought token; not unique, so join on the mint address
Trade_Buy_Currency_TokenCreator_AddressArrayCreator wallets from the bought asset's metadata; mostly empty in this table
Trade_Buy_Currency_TokenStandardStringMetaplex standard, such as Fungible or FungibleAsset, when recorded
Trade_Buy_Currency_UriStringLink to the bought asset's off-chain metadata file, often on IPFS or Arweave
Trade_Buy_Currency_UpdateAuthorityStringAccount that can change the bought asset's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL
Trade_Buy_Currency_VerifiedCollectionStringWhether the NFT collection is verified; false for fungible tokens
Trade_Buy_Order_AccountStringAccount of the matched order; set only on Magic Eden marketplace trades, empty on AMM and order-book swaps
Trade_Buy_Order_BuySideStringWhether the matched order is a buy; false when none is attached
Trade_Buy_Order_LimitAmountUInt64Order size limit; 0 in all rows checked, Magic Eden included
Trade_Buy_Order_LimitPriceUInt64Order limit price; 0 in all rows checked, Magic Eden included
Trade_Buy_Order_MintStringMint of the NFT or token the order is for, when one is attached
Trade_Buy_Order_OrderIdStringOrder ID, when one is attached
Trade_Buy_Order_OwnerStringWallet that placed the order, when one is attached
Trade_Buy_Order_PayerStringAccount that paid for the order, normally its owner
Trade_Buy_PriceFloat64Price of the bought currency in units of the sold currency
Trade_Buy_PriceInUSDFloat64USD price of one bought token; 0 when unpriced or when only Trade_Buy_AmountInUSD is set, then divide that by Trade_Buy_Amount
Trade_Dex3
Trade_Dex_ProgramAddressStringProgram address of the DEX that ran the swap, base58; filter on it to pick out one venue
Trade_Dex_ProtocolFamilyStringVenue family as indexed, which can span several programs; for example Pumpswap, Meteora, Raydium, Jupiter, OrcaWhirpool or OKX
Trade_Dex_ProtocolNameStringProgram 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
Trade3
Trade_IndexUInt32Position of the swap within the transaction
Trade_Market_MarketAddressStringPool, bonding curve or order-book market the swap ran against; empty when the program reports none, as on Jupiter, DFlow, OKX and Aquifer
Trade_PriceAsymmetryFloat64Relative difference between buy and sell side USD values; 0 when only one side is valued
Trade_Sell29
Trade_Sell_Account_AddressStringToken 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_OwnerStringWallet that owns the paying token account; often the signer, and often empty
Trade_Sell_AmountStringAmount sold, decimal adjusted
Trade_Sell_AmountInUSDFloat64Amount 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_CollectionAddressStringNFT collection of the sold asset; empty for fungible tokens
Trade_Sell_Currency_DecimalsUInt32Decimal places of the sold token, as its mint sets them
Trade_Sell_Currency_EditionNonceUInt32Metaplex edition bump seed; a technical value, 0 when unset
Trade_Sell_Currency_FungibleStringWhether the sold asset is fungible; false for NFTs
Trade_Sell_Currency_MetadataAddressStringMetaplex metadata account of the sold asset, when recorded
Trade_Sell_Currency_MintAddressStringMint address of the sold token and the key for joins; SOL shows as 11111111111111111111111111111111 (native) or So11111111111111111111111111111111111111112 (wrapped)
Trade_Sell_Currency_NameStringName from the sold token's metadata; lookalikes copy real names
Trade_Sell_Currency_ProgramAddressStringProgram that owns the sold mint, SPL Token or Token-2022, when recorded
Trade_Sell_Currency_SellerFeeBasisPointsUInt32Creator royalty in basis points (100 = 1%); 0 for nearly all fungible coins
Trade_Sell_Currency_SymbolStringTicker of the sold token; not unique, so join on the mint address
Trade_Sell_Currency_TokenCreator_AddressArrayCreator wallets from the sold asset's metadata; mostly empty in this table
Trade_Sell_Currency_TokenStandardStringMetaplex standard, such as Fungible or FungibleAsset, when recorded
Trade_Sell_Currency_UriStringLink to the sold asset's off-chain metadata file, often on IPFS or Arweave
Trade_Sell_Currency_UpdateAuthorityStringAccount that can change the sold asset's metadata unless it is immutable; NativeLoader1111111111111111111111111111111 for SOL
Trade_Sell_Currency_VerifiedCollectionStringWhether the NFT collection is verified; false for fungible tokens
Trade_Sell_Order_AccountStringAccount of the matched order; set only on Magic Eden marketplace trades, empty on AMM and order-book swaps
Trade_Sell_Order_BuySideStringWhether the matched order is a buy; false when none is attached
Trade_Sell_Order_LimitAmountUInt64Order size limit; 0 in all rows checked, Magic Eden included
Trade_Sell_Order_LimitPriceUInt64Order limit price; 0 in all rows checked, Magic Eden included
Trade_Sell_Order_MintStringMint of the NFT or token the order is for, when one is attached
Trade_Sell_Order_OrderIdStringOrder ID, when one is attached
Trade_Sell_Order_OwnerStringWallet that placed the order, when one is attached
Trade_Sell_Order_PayerStringAccount that paid for the order, normally its owner
Trade_Sell_PriceFloat64Price of the sold currency in units of the bought currency
Trade_Sell_PriceInUSDFloat64USD price of one sold token; 0 when unpriced or when only Trade_Sell_AmountInUSD is set, then divide that by Trade_Sell_Amount
Transaction7
Transaction_FeeStringNetwork fee paid, in SOL
Transaction_FeeInUSDFloat64Network fee, in USD
Transaction_FeePayerStringWallet that paid the network fee; Solana makes it the first signer
Transaction_IndexUInt32Position of the transaction within the block
Transaction_Result_SuccessStringWhether the transaction succeeded
Transaction_SignatureStringTransaction signature, base58
Transaction_SignerStringWallet that signed the transaction and paid its fee
Sample file

Ask an AI about this data

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.

Start with

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:

# transfers
solana/tokenized_stocks_transfers<start_slot>_<end_slot>.parquet

# dex_trades
solana/tokenized_stocks_dex_trades<start_slot>_<end_slot>.parquet
  1. Download a free sampleNo email needed.
  2. Pay nowName, work email and licence check.
  3. Pay the invoiceBy card or bank transfer.
  4. Download from S3 or R2The team prepares the export and emails the bucket path, plus a read-only API key for R2 orders.

Time windows

Every window includes all 2 tables and 129 columns. Only the time range changes.

30 days
Latest month
Sep 14, 2026 → Oct 14, 2026
$300
Pay now
365 days
Last 12 months
Oct 14, 2025 → Oct 14, 2026
$3,000
Pay now
In every window
  • All 2 tables, 129 columns
  • Parquet files in the layout under Delivery
  • S3 or R2 download, chosen at checkout
  • Licensed under the Data License

FAQ

10 questions
What is in the Solana Tokenized Stocks dataset?

Two Parquet tables in the standard Solana schema: transfers (47 columns) and dex_trades (82 columns), from 28 October 2025, the start of our Solana archive. Earlier xStocks history, from its launch on 30 June 2025, is not included.

Which issuers and tokens are included?

xStocks by Backed, Ondo Global Markets, Backpack Securities and PreStocks: about 335 tokens traded on 1 October 2026. Copies under the same names from pump.fun and other launchpads are left out by checking each issuer's mint pattern, or for Backpack its listed mints.

How big is it?

Roughly 220 million DEX trades and 330 million transfers to mid-October 2026, about 100 GB of ZSTD Parquet, estimated from sampled days. A recent month is about 35 to 45 GB. Activity grew fast: stock-token trades went from about 60,000 a day in January 2026 to 3.8 million on 1 October 2026. Failed transactions are included and marked.

Are there mint and burn records?

No. Our Solana transfers hold transfer instructions only, so issuance and redemption are not in this dataset. The Robinhood Tokenized Stocks dataset has a mint_burn table.

How were the tables checked?

For one block range on 1 October 2026 (slots 452,119,504 to 452,149,503) the query returned 269,135 NVDAx trades against 269,101 from our GraphQL API, a 0.01% gap. Prices and USD values in the sample match the market, for example NVDAx at about $230.

Are USD values included?

Yes, from our 10-minute Solana price feed. A token it does not price gets 0; on 1 October 2026 that included the Backpack tokens.

What should I watch for?

Symbols are not unique, so filter by mint address. Failed transactions are kept; filter Transaction_Result_Success = 'true' for trades that took effect. A Backpack listing added after 1 October 2026 is only included once we add its mint.

How do I load it?

With DuckDB: SELECT Trade_Buy_Currency_Symbol, count(*) FROM read_parquet('dex_trades/*.parquet') WHERE Transaction_Result_Success = 'true' GROUP BY 1 ORDER BY 2 DESC. 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 from 1 October 2026, slots 452,119,600 to 452,119,699: 1,606 transfers and 1,062 DEX trades. No email address required.