# Pump.fun Early Holders | Bitquery Data Store Every transfer of every Pump.fun token in its first 7 days, in the standard Solana transfers schema, for point-in-time holder counts and concentration. Dataset page: https://bitquery.io/datastore/datasets/pumpfun-early-holders Network: Solana Category: Transfers, Balances Tables: 1 Columns: 47 Coverage: 2025-10-28 to 2026-10-20 Rows: about 4.7B Size: about 764 GB Format: Apache Parquet, ZSTD compression, one prefix per table Licence: https://bitquery.io/datastore/legal/data-license ## What this is Holder data for new tokens is the layer buyers say they cannot rebuild from RPC. This dataset has every transfer of every Pump.fun token during its first 7 days, so a running sum of receipts minus sends per owner gives each wallet's balance at any moment, and from it holder counts and concentration. Rows are the standard Solana transfers schema, 47 columns, with nothing renamed or added. Our Solana transfers hold transfer instructions only, not the mint into the bonding curve, so the curve's own running sum starts at zero; every other wallet's is its balance. ## What people use it for - Holder count and top-10 share at any moment - Dev and insider supply tracking - Distribution right before graduation ## Tables (1) ### pumpfun_early_holder_transfers: 47 columns Every transfer of every Pump.fun token in its first 7 days, in the standard Solana transfers schema. Bucket prefix: solana/pumpfun_launch/early_holder_transfers File naming: .parquet, one file per creation day Free sample (real Parquet, no email needed): https://bitquery-blockchain-dataset.s3.us-east-1.amazonaws.com/solana/pumpfun_launch/early_holder_transfers/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 | | 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 | ## Price - Latest month (Sep 20, 2026 → Oct 20, 2026): $300 one-time, USD - Last 6 months (Apr 20, 2026 → Oct 20, 2026): $1,500 one-time, USD - Last 12 months (Oct 20, 2025 → Oct 20, 2026): $2,500 one-time, USD Every window includes all 47 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: Each token's row needs its first 7 days, and our Solana pool and transfer archive runs about 8 days behind. A purchase covers tokens created up to about 15 days before delivery. Q: Why only the first 7 days? A: That is where holder questions about launches sit, and it keeps every token's history complete from creation. Later transfers of long-lived tokens are not included. Q: How do I get holders at a time T? A: Sum Transfer_Amount received minus sent per Transfer_Receiver_Token_Owner / Transfer_Sender_Token_Owner for rows before T, ignoring the bonding-curve account, and count owners above zero. Q: How do I load it? A: With DuckDB: SELECT * FROM read_parquet('pumpfun_early_holder_transfers/*.parquet') LIMIT 10. pandas, Polars, Spark and ClickHouse read the same files. Q: Can I try before I buy? A: Yes. Each table links to a public sample file from 1 October 2026: tokens created in slots 452,119,504 to 452,120,503 (the first 7 minutes of the day). Its trades and transfers stop at 02:14 UTC, so in the sample the 24-hour and 7-day figures cover about 2 hours. 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.