# Pump.fun Graduation Window | Bitquery Data Store Every PumpSwap trade in the first hour after each Pump.fun token graduates, in the standard Solana dex_trades schema with slot-level ordering and USD values. Dataset page: https://bitquery.io/datastore/datasets/pumpfun-graduation-window Network: Solana Category: Trades Tables: 1 Columns: 82 Coverage: 2025-10-28 to 2026-10-20 Rows: about 2.3B Size: about 592 GB Format: Apache Parquet, ZSTD compression, one prefix per table Licence: https://bitquery.io/datastore/legal/data-license ## What this is The hour after a Pump.fun token graduates is when its PumpSwap pool is newest and most traded. This dataset keeps every PumpSwap trade on that pool from the graduation transaction to 60 minutes after it, for every graduation since 28 October 2025. Rows are the standard Solana dex_trades schema, 82 columns, with nothing renamed or added, and failed transactions kept and marked. Pair it with the Pump.fun Token Registry for the migration rows themselves. ## What people use it for - Post-graduation momentum research - Execution and slippage on new PumpSwap pools - Sniping behaviour at migration ## Tables (1) ### pumpfun_graduation_window_trades: 82 columns Every PumpSwap trade in the first 60 minutes after a Pump.fun graduation, in the standard Solana dex_trades schema. Bucket prefix: solana/pumpfun_launch/graduation_window_trades File naming: .parquet, one file per graduation day Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/pumpfun_launch/graduation_window_trades/2026-10-01_452119504_452120503.parquet Sample updated: Oct 21, 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 | ## Price - Latest month (Sep 20, 2026 → Oct 20, 2026): $200 one-time, USD - Last 6 months (Apr 20, 2026 → Oct 20, 2026): $1,000 one-time, USD - Last 12 months (Oct 20, 2025 → Oct 20, 2026): $1,500 one-time, USD Every window includes all 82 columns. Only the time range changes. ## Questions buyers ask Q: What dates are covered? A: Tokens created from 28 October 2025, the first day with complete raw Solana trades in our archive. A 12-month purchase starts there until the rolling window passes that date. Earlier Pump.fun history exists only as aggregated candles and volume, which these tables do not use. Q: How current is it? A: Our Solana pool and transfer archive runs about 8 days behind, so a purchase covers up to about 8 days before delivery. Q: How big is it? A: On 1 October 2026, 00:00 to 02:14 UTC, 121 graduations gave 610,331 trades in their first hour, 41,039 of them failed. Expect several million rows a day. Q: Which graduations are included? A: Every successful migrate or migrate_v2 that moved a curve's tokens on that day, including tokens created before October 2025. Q: How do I load it? A: With DuckDB: SELECT * FROM read_parquet('pumpfun_graduation_window_trades/*.parquet') LIMIT 10. pandas, Polars, Spark and ClickHouse read the same files. Q: Can I try before I buy? A: Yes. The table links to a public sample file from 1 October 2026: the PumpSwap trades after graduations in slots 452,119,504 to 452,120,503. No email address required. Q: How is the data delivered? A: As flat Parquet files (ZSTD) 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. ## 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.