Documentation
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. 30 req/min rate limit.
2. Check available dates
Query /range?exchange=pump_fun to see what date range and file count. Some hours may have gaps.
GET https://api.pumpfundata.com/range?exchange=pump_fun
{ "exchange": "pump_fun", "start": "2025-01-15", "end": "2026-04-30", "files": 2847 }
3. Download data
/download?exchange=pump_fun&date=YYYY-MM-DD&hour=HH — streams the parquet file directly. 1 credit per file.
import requests
API_KEY = "pfd_your_key_here"BASE = "https://api.pumpfundata.com"
# Check available date range and file count (no auth required)range_resp = requests.get(f"{BASE}/range", params={"exchange": "pump_fun"})print(range_resp.json()) # {"exchange": "pump_fun", "start": "...", "end": "...", "files": 2847}
# Download a single hourresp = requests.get(f"{BASE}/download", params={ "exchange": "pump_fun", "date": "2026-04-01", "hour": "12"}, headers={"X-API-Key": API_KEY})
with open("pump_fun_2026-04-01_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-01", "hour": str(hour) }, headers={"X-API-Key": API_KEY}) if resp.status_code == 200: with open(f"pump_fun_2026-04-01_{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, liquidity |
| signature | string | all | Transaction signature |
| slot_number | int | all | Solana slot |
| timestamp | float | all | Unix timestamp |
| token_mint | string | all | Token mint address |
| action | string | swap, liquidity | buy, sell, deposit, or withdraw |
| user_wallet | string | swap, 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 | Token name |
| symbol | string | create | Token symbol |
| token_total_supply | uint64 | create | Total supply |
| pool_creator | string | create (pump_amm) | Pool creator wallet |
| lp_token_amount | uint64 | liquidity | LP tokens minted/burned |
| lp_mint_supply | uint64 | liquidity | Total LP token supply |
| pool_address | string | pump_amm only | AMM pool address |
| real_token_reserve | uint64 | pump_amm only | Actual token reserve |
| real_lamports_reserve | uint64 | pump_amm only | Actual SOL reserve (lamports) |
| virtual_token_reserve | uint64 | pump_fun only | Virtual token reserve |
| virtual_lamports_reserve | uint64 | pump_fun only | Virtual SOL reserve (lamports) |
| token_creator | string | pump_fun only | Token creator wallet |
| can_be_frozen | bool | pump_fun only | Freeze authority enabled |
| buyback_fee | uint64 | pump_fun swap | Buyback fee (lamports) |