Documentation
We provide hourly parquet files for pump_fun (bonding curve) and pump_amm (graduated AMM).
1. Get your API key
Connect your wallet on the account page and generate an API key. Rate limit is 30 requests per minute. For questions or issues, reach out on Telegram.
2. Check available dates
Query /range?exchange=<exchange_name> with your API key to see the available date range and file count. Exchange must be pump_fun or pump_amm.
3. Download data
Call /download?exchange=<exchange_name>&date=YYYY-MM-DD&hour=HH to stream the parquet file directly. Each file costs 1 credit.
import requests
API_KEY = "pfd_your_key_here"BASE = "https://api.pumpfundata.com"
# Check available date range and file countrange_resp = requests.get(f"{BASE}/range", params={"exchange": "pump_fun"}, headers={"X-API-Key": API_KEY})print(range_resp.json()) # {"exchange": "pump_fun", "start": "...", "end": "...", "files": ...}
# Download a single hourresp = requests.get(f"{BASE}/download", params={ "exchange": "pump_fun", "date": "2026-04-10", "hour": "12"}, headers={"X-API-Key": API_KEY})
with open("pump_fun_2026-04-10_12.parquet", "wb") as f: f.write(resp.content)
# Batch download: loop over hoursfor hour in range(24): resp = requests.get(f"{BASE}/download", params={ "exchange": "pump_fun", "date": "2026-04-10", "hour": str(hour) }, headers={"X-API-Key": API_KEY}) if resp.status_code == 200: with open(f"pump_fun_2026-04-10_{hour:02d}.parquet", "wb") as f: f.write(resp.content) print(f"Downloaded hour {hour}")4. Schema reference
| Field | Type | Events | Description |
|---|---|---|---|
| event_type | string | all | swap, create, bonding_complete (pump_fun), liquidity (pump_amm) |
| signature | string | all | Transaction signature |
| slot_number | int64 | all | Solana slot |
| timestamp | double | all | Unix timestamp |
| token_mint | string | all | Token mint address |
| token_creator | string | all | Token creator wallet |
| can_be_frozen | bool | all | Freeze authority enabled |
| is_cashback_coin | bool | all | Cashback coin flag |
| action | string | swap, liquidity | buy, sell, deposit, or withdraw |
| user_wallet | string | swap, liquidity, bonding_complete | Trader wallet |
| token_amount | uint64 | swap, liquidity | Tokens traded |
| lamports_amount | uint64 | swap, liquidity | SOL traded (lamports) |
| fee_lamports | uint64 | swap | Fee (lamports) |
| name | string | create (pump_fun) | Token name |
| symbol | string | create (pump_fun) | Token symbol |
| uri | string | create (pump_fun) | Token metadata URI |
| token_total_supply | uint64 | create (pump_fun) | Total supply |
| is_mayhem_mode | bool | create | Mayhem mode enabled |
| pool_creator | string | create (pump_amm) | AMM pool creator wallet |
| lp_token_amount | uint64 | liquidity | LP tokens minted/burned |
| lp_mint_supply | uint64 | liquidity | Total LP token supply |
| real_token_reserve | uint64 | all | Actual token reserve in pool |
| real_lamports_reserve | uint64 | all | Actual SOL reserve (lamports) |
| virtual_token_reserve | uint64 | pump_fun only | Virtual token reserve (bonding curve) |
| virtual_lamports_reserve | uint64 | pump_fun only | Virtual SOL reserve (bonding curve) |
| buyback_fee | uint64 | swap (newer data) | Buyback fee (lamports) |
| buyback_fee_basis_points | int64 | swap (newer data) | Buyback fee rate in basis points |
| pool_address | string | pump_amm only | AMM pool address |
5. Guides
Want to see these files in action? Read how the Pump.fun bonding curve works to understand virtual reserves and price calculation, compare Pump.fun vs PumpSwap AMM to learn the safety differences, or jump straight to backtesting trading strategies with Python.