For developers: full schemas
gradtrades
Example rows (from the sample)
grad
{"type":"grad","t":1791640841373,"bt":1791640840,"slot":455281028,"sig":"45ZhqvZwD3SC18TUZ8wQjR1uWHQn91cqTJyiftnyFnJkeoyqoiRXopZTxhHo1TpopAi6HFSwEzsSEUMPcpTfuJWQ","mint":"9pAbYE6q9t5F8tDdrJWrVyMKEYhZnPLwB6hNEHPSnkkt","pool":"2uNzE8XXwRksCymmGtyPfg7oYBYn5E2Kg1hrgP3GteK4","coinCreator":"CfZELPLk52fdxb5DTwfEnZqepPv8vjWsfJZMnGRXLgJP","poolBase":198060505.73945,"poolQuote":88.783503748,"virtualQuote":17.584505653,"price":5.37048e-7,"capSol":537.05,"curveSol":88.783503748}
trade
{"type":"trade","t":1791640800002,"bt":1791640787,"slot":455280784,"sig":"5QxGRXZWhMUGwHbYMf4rzZYBRKZ3735w5QhfYVX56kTzJPTsXGeGuwYQqLveKdzMmnQZjuUWbQNd9Xy7gLtW4tGG","i":0,"mint":"95ccfn4UAUu3mQSvi7NJSJkHEnoLdW58qcRwwzmepump","side":"buy","user":"Doofp8oxQrc3BL5xCtiSADYM5BdTvgRqRTPX9EunRAPE","baseAmount":3475.693603,"quoteAmount":0.000977776,"price":2.81318e-7,"poolBase":250399895,"poolQuote":53.41453236,"priceAfter":2.81322e-7,"userTokensBefore":1480831.488923,"lpFee":1.96e-7,"protocolFee":0.000009094,"creatorFee":0.000002934,"ix":"buy_exact_quote_in_v2"}
end
{"type":"end","t":1791640817904,"mint":"R22RNSXj4ambV2wNFJJkLEuvUa54CPTCbqkwkBZpump","why":"window","buys":2799,"sells":3186}
down / up
{"type":"down","t":1791640822088}
{"type":"up","t":1791640823203}
The down / up pair is real: at 14:00:22.088 UTC the feed connection dropped and it was back 1.1 s later. Trades in that second may be missing. The gap is written as rows, never filled in.
Schema
Every row has type and t (ms since 1970 UTC, when our recorder received it). SOL amounts in SOL, token amounts in whole tokens (6 decimals). Source: Solana public RPC (PumpSwap program logs).
gradtnumbergraduation time (ms; chain block time for late pick-ups)
gradbtnumberblock time (s)
gradslot, signumber, stringslot and signature of the graduation (migration) transaction
gradmintstringthe coin's token mint
gradpoolstringits PumpSwap pool
gradcoinCreatorstringwallet that receives the coin's creator fees
gradpoolBase, poolQuotenumberstarting tokens / SOL in the pool
gradvirtualQuotenumberPumpSwap's extra virtual SOL in the price math (~17.6 SOL, Oct 2026)
gradpricenumberSOL per token at graduation
gradcapSolnumberprice × 1e9 (market cap in SOL, ~496 for a normal graduate)
gradcurveSolnumberSOL raised by the bonding curve
gradlateboolpicked up late; trades before followFrom are missing
gradfollowFromnumberms; trades are complete from here on
gradfollowboolfalse = coin not followed (cap outside 300–600 SOL, or found too late)
tradebt, slot, sig, inumber, number, string, numberblock time (s), slot, signature, index of the PumpSwap trade inside the transaction. A sig of 64 1s means the RPC did not report the signature (rare: a few rows per million)
trademintstringcoin
tradeside"buy" / "sell"direction
tradeuserstringwallet that traded
tradebaseAmountnumbertokens bought or sold
tradequoteAmountnumberSOL paid (buy, fees included) or received (sell, after fees)
tradepricenumberquoteAmount / baseAmount (effective price, fees included)
tradepoolBase, poolQuotenumberpool tokens / real SOL after the trade
tradepriceAfternumberpool price after the trade: (poolQuote + virtualQuote) / poolBase
tradevirtualQuotenumberonly when the pool's virtual SOL changes (rare)
tradeuserTokensBeforenumberthe wallet's balance of this coin just before the trade
tradelpFee, protocolFee, creatorFeenumberfees in SOL
tradecreatorbooltrue when the trader is the coin's creator
tradeixstringinstruction variant, e.g. buy_exact_quote_in; absent for a normal buy
traderecoveredboolthe log was truncated; trade read from the full transaction
endmint, why, buys, sellsstring, string, number, numbercoin no longer followed: window (30 min done), evicted (cap of 30 coins), budget (data budget); counts recorded
down, uptnumbera feed connection dropped / came back: trades in between may be missing
resumemintstringcoin picked up again after a restart; the gap before t is missing
pregrad
Example rows (from the sample)
create
{"type":"create","t":1791640827094,"mint":"EYrWRPj4umi4AyUgiG2S6YjKhpu3oz6hc4wFNKPypump","creator":"7mHmNh6BFNWpFp5qh2VXRNzsK63zZ5ZQGQY77khANBQW","sig":"f6etp6K3nBnA6P5fhrupy8CZafaMQ9NQ7UQN1ZZbUwEvwEdi2uMndc3d1aYTz3mBYC5hqXTqg8KFJqynwqEgTx5","name":"beer","sym":"beer","devTokens":2442400.964047,"devSol":0.068442865,"capSol":28.087,"curve":"BwWK17cbHxwWBKZkUYvzxLcNQ1YVyaFezduWbtm2de6s","mayhem":true}
curvex
{"type":"curvex","t":1791640818055,"slot":455280896,"curve":"9UfpfsVkwAi9ynZHq6Wi7WjZEzL2Kp8jEbDdfWfjs5gV","mint":"9pAbYE6q9t5F8tDdrJWrVyMKEYhZnPLwB6hNEHPSnkkt","cap":304.08,"cross":300,"sol":68.935,"sinceFirstS":196.7}
ctrade
{"type":"ctrade","t":1791640836449,"bt":1791640836,"slot":455281007,"sig":"eMR2wKhSwrcTvpdLLxRkTpAJ91PYf8EHNvhJJGVuBQaJtVSqeQQsad4QWQxNHp6VQurGi4KRUToU6tzV7F7FcQJ","i":0,"mint":"9LcWKxyvcWTbzwumh7cHaUakgy4eKW4B7pWo4ZLcVM64","side":"buy","user":"E2ridaSSvdWMDJ2YfiH1X6TYSurf2gTZpDFLJ9qMmQLk","sol":0.048888888,"tokens":244185.00765,"capAfter":200.334,"curveSol":50.304208}
migrate
{"type":"migrate","t":1791640841042,"mint":"9pAbYE6q9t5F8tDdrJWrVyMKEYhZnPLwB6hNEHPSnkkt","sig":"45ZhqvZwD3SC18TUZ8wQjR1uWHQn91cqTJyiftnyFnJkeoyqoiRXopZTxhHo1TpopAi6HFSwEzsSEUMPcpTfuJWQ","pool":"pump-amm"}
grad
{"type":"grad","t":1791640841373,"mint":"9pAbYE6q9t5F8tDdrJWrVyMKEYhZnPLwB6hNEHPSnkkt","slot":455281028,"capSol":537.05,"creator":"CfZELPLk52fdxb5DTwfEnZqepPv8vjWsfJZMnGRXLgJP"}
record
{"type":"record","t":1791640859732,"mint":"4DpjsfKA8uSzscqWsyZqqZJ83wvopfBmmmAsqJpnH7Kd","sym":"Ed","name":"Ed","pool":"22FiEsj8GfHYp7vDC88gFy833mXzqDpKuvPZ574hgLv4","slot0":455281034,"sig0":"3HikNGkRwodBdHgDgsvpcGnTpJqYBTVqNKRpRry3dsxQFk86Mt5EMscKCsT2goZLQFqX48R9nu3B8NACCeqqiJiy","t0":1791640842431,"bt0":1791640842000,"src":{"first":"pumpportal","gradRow":true,"migrate":1791640842431,"curveCompleteS":0.68},"creator":"DPZpMGnuq44KE77yCjS1oq6UdqhNNSAURcB1AzQeQQTf","create":{"t":1791640165488,"sig":"3b4RzKnmb1MsYXJB1AAeFQevWMcioQMm5DSCy15kznu47kD8735q9fVT2vLvoyAuKeHdtKc93E5vhpQ7deTY3EeE","src":"pumpportal","mayhem":false,"capSol":33.957},"ageS":676.9,"instant":false,"cap0":511.65,"curveSol":86.467621472,"devBuyTokens":99366691.529599,"devBuyPct":9.937,"devBuySol":3.061728394,"creatorPctAtGrad":9.937,"creatorInfo":{"txs50":14,"capped":false,"oldestS":331,"nBefore10m":0,"funder":null,"fundSol":0,"fundedBeforeS":331,"fundMemo":false,"priorCoins24h":0,"priorCoins72h":0},"gradSlot":{"pct":0,"sol":0.002,"nWallets":1,"nTx":1,"buys":[{"w":"27HFmP7ccLadGswvQfvea4o3juLw75cPF4V6jWpHM3MX","tokens":46.135,"pct":0,"sol":0.0015,"sig":"tzo2Mdn6uvEN6MMf2pk9bfEFNEnwLMzVBdSKFbxXmXqqfLuZ2DnsJVVb6pUisqDhoUfPdT7JXMWL3CepUkQ8Fo4","bundleSize":1,"payer":"27HFmP7ccLadGswvQfvea4o3juLw75cPF4V6jWpHM3MX","signers":1,"slotOffset":1}],"whale":{"w":"27HFmP7ccLadGswvQfvea4o3juLw75cPF4V6jWpHM3MX","pct":0,"sol":0.0015,"bundleSize":1,"creatorInTx":false,"gainers":[],"txs25":25,"oldestS":399,"lastTxKind":"pamm","funder":null,"fundSol":null,"fundedBeforeS":null,"fundSig":null,"fundMemo":null}},"curve":{"coverage":"partial","holders":[{"w":"9AkbDBmPKNt8SvZRMF7wYDz33WYMnRFfsBnVE18naFpD","pct":0.045,"sol":0.0978,"creator":false},{"w":"Ej6eGdvP1VYJg45FyxpjtXLag1AEG4r2JLNxaq8F3ws7","pct":0.004,"sol":0.0094,"creator":false}],"creationSlot":null,"bundleEst":null,"estimated":false,"top1NcPct":0.045,"top5NcPct":0.049,"nOver3Pct":0,"bundleWallets":0,"bundlePct":0,"creatorPct":9.937,"path":{"firstCap":57.8,"firstS":674.2,"maxCap":410.9,"updates":948,"completeS":0.68,"t100S":668.7,"t200S":316.2,"t300S":65.7,"t400S":3.7},"trades":{"fromCap":216.2,"fromT":1791640569831,"n":5,"buys":2,"sells":3,"wallets":5,"maxCap":216.7,"lastCap":215.9,"completeT":1791640842431,"topBuyers":[{"w":"9AkbDBmPKNt8SvZRMF7wYDz33WYMnRFfsBnVE18naFpD","tokens":451685.64,"pct":0.045,"sol":0.0978},{"w":"Ej6eGdvP1VYJg45FyxpjtXLag1AEG4r2JLNxaq8F3ws7","tokens":43399.248,"pct":0.004,"sol":0.0094}]}}}
outcome
{"type":"outcome","t":1791641308603,"mint":"HXFYuYYfJ7TKMLp8KZ2vcw5jq6DaxWL8Tq7QdhDqCXbX","sym":"Aramco","t0":1791640703550,"recT":1791640712803,"capAt":{"10":3177.45,"45":3218.37,"60":3249.5,"120":3341.85,"180":3442.58,"300":3771.26,"600":5507.02},"maxGain":74,"minDrop":-78.3,"crashed":true,"trades":8684,"dump":{"tS":601.9,"w":"5NpcZzQoiARZjuPPZGRo33YwyWzhAq7R8vx1jXsKbTzo","frac":1.833138,"rule":"big-sell","sol":199.72990449,"capAfter":689.757,"tokensFrom":{"kind":"transfer","tokens":66050028.897,"pct":6.605,"from":"4imgFChpdw6YyjPw6cRxrtJpBHZS8LNrQZgbyVTfirP4","for":"5NpcZzQoiARZjuPPZGRo33YwyWzhAq7R8vx1jXsKbTzo","sig":"Atfch84VwkJckSuXqjRqBqDKuHoibeWzEMPn7nAJKkRZ7ehmM534Byp5hriqaV13JERN9M2S1mphnp87GcvdjCC","bt":1791640717,"account":"Hnzdxe8VcjXvoBmoEPRWf6EMpqsa29RVMivt3g75RpBx","accountTxs":11,"beforeDumpS":588,"afterGradS":13}},"firstBigSell":{"tS":601.9,"w":"5NpcZzQoiARZjuPPZGRo33YwyWzhAq7R8vx1jXsKbTzo","frac":0.3928,"sol":199.72990449,"capAfter":689.757,"tokensFrom":{"kind":"transfer","tokens":66050028.897,"pct":6.605,"from":"4imgFChpdw6YyjPw6cRxrtJpBHZS8LNrQZgbyVTfirP4","for":"5NpcZzQoiARZjuPPZGRo33YwyWzhAq7R8vx1jXsKbTzo","sig":"Atfch84VwkJckSuXqjRqBqDKuHoibeWzEMPn7nAJKkRZ7ehmM534Byp5hriqaV13JERN9M2S1mphnp87GcvdjCC","bt":1791640717,"account":"Hnzdxe8VcjXvoBmoEPRWf6EMpqsa29RVMivt3g75RpBx","accountTxs":11,"beforeDumpS":588,"afterGradS":13}},"bigSells":[{"tS":601.9,"w":"5NpcZzQoiARZjuPPZGRo33YwyWzhAq7R8vx1jXsKbTzo","frac":0.3928,"sol":199.72990449}],"src":"gradtrades"}
The record row is one per graduate, written 10–40 s after graduation. The outcome row follows 10 minutes later; this one shows a coin whose cap went from 3,177 SOL at +10 s to 5,507 SOL at +10 min, then one 200 SOL sell (tokens received by transfer 13 s after graduation) took it to 690 SOL.
Schema
Sources: Solana chain logs via public RPC (creations, migrations; since Oct 14 2026, before that the PumpPortal free websocket), Solana public RPC (bonding curves, transactions). Amounts in SOL; pct = % of the 1,000,000,000 supply; times in ms unless the name ends in S (seconds).
createt, mint, signumber, string, stringcoin creation
createcreatorstringcreator wallet
createname, symstringcoin name / ticker
createdevTokens, devSolnumbercreator's own buy at creation
createcapSolnumbercurve market cap right after creation
createcurvestringbonding-curve account
createmayhemboolpump.fun "mayhem mode" launch
curvexslot, curve, mintnumber, string, string/nullbonding-curve cap crossing (mint null when not yet mapped)
curvexcap, cross, sol, sinceFirstSnumbercap now (SOL), line crossed (100/200/300/400 SOL), SOL in curve, seconds since first seen
ctradebt, slot, sig, i, mint, side, useras in gradtradesbonding-curve trade on a coin near graduation (read from cap 200 SOL up); i counts this coin's trades inside the transaction, so (sig, mint, i) is the unique key
ctradesol, tokens, capAfter, curveSolnumberSOL and tokens of the trade, cap and curve SOL after it
migratemint, sig, poolstringmigration seen by PumpPortal (pool = destination AMM)
gradmint, slot, capSol, creatorstring, number, number, stringgraduation as seen on chain
recordmint, sym, name, pool, slot0, sig0, t0, bt0mixedone per graduate, written 10–40 s after graduation (t0 = graduation)
recordsrcobjectwhich feed saw it first; curveCompleteS = curve completed how long before t0
recordcreator, createstring, objectcreator wallet; creation tx (t, sig, mayhem, capSol)
recordageSnumbercreation to graduation, seconds
recordinstantboolgraduated within 5 s of creation
recordcap0, curveSolnumberPumpSwap cap at graduation; SOL raised
recorddevBuyTokens, devBuyPct, devBuySolnumbercreator's buy at creation
recordcreatorPctAtGradnumber/nullcreator's holding at graduation
recordcreatorInfoobjecttxs50 (tx count, capped 50), capped, oldestS, nBefore10m, funder, fundSol, fundedBeforeS, fundMemo, priorCoins24h, priorCoins72h
recordgradSlotobject/nullPumpSwap buys in the graduation slot: pct, sol, nWallets, nTx, buys[] (w, tokens, pct, sol, sig, bundleSize, payer, signers, slotOffset, creatorInTx), whale = the largest of those buys with its wallet facts (txs25, oldestS, lastTxKind, funder, fundSol, fundedBeforeS, fundSig, fundMemo, gainers[])
recordcurveobjectcoverage (full/partial/none), holders[] (top 10: w, pct, sol, creator), creationSlot, bundleEst, estimated, top1NcPct, top5NcPct, nOver3Pct, bundleWallets, bundlePct, creatorPct, path (t100S..t400S, maxCap, updates, completeS), trades
outcomemint, sym, t0, recTmixed+10 min after graduation
outcomecapAtobjectPumpSwap cap (SOL) at +10/45/60/120/180/300/600 s
outcomemaxGain, minDropnumber/nullbest / worst move in %, first 10 min, vs the price 10 s after graduation; touched -80% = minDrop <= -80, touched 2x = maxGain >= 100; null when no trades were seen. From 2026-10-14 03:40 UTC, graduation-slot trades repaired from blocks (priced before the big graduation buy) can make minDrop far too low on some coins (Oct 14: 349 of 569 read as touched -80%, 195 really did); use the graduates CSV's low_10m_pct / high_10m_pct, computed in chain order
outcomecrashedboola trade at 60% of the running high or lower within the first 10 min, i.e. a 40%+ fall from the high (not an 80% drop: for that use minDrop <= -80)
outcometradesnumberPumpSwap trades counted
outcomedump, firstBigSell, bigSells[]objectthe first sale breaking a fixed size rule and the large sales: tS, w, frac (share of pool sold), sol, capAfter, rule, tokensFrom
outcomesrcstringwhere trades were read from
padfeed
Example rows (from the sample)
grad
{"type":"grad","t":1791642704526,"pad":"ray","platform":"Fo1dp1JYQQWgYgAdiZWfmJpA7KRreCdCEyEEVcE1Q2TN","mint":"BwVPtfz4g8TcmmuVyQWnQEx8X3Zhr3W24McKEvztfEe1","quote":"So11111111111111111111111111111111111111112","pool":"27XKWhuX5rKrJJxr5ebQc3ZKDXSCgZVMR329aGZDXrC9","curveAuth":"6s1xP3hpbAfFoNtUNF8mfHsjr2Bd97JxFJRWLbL6aHuX","baseVault":"B7xSvh15d1aXre2bFKcRpqRG9zdbEECFR6981tiRyn5w","quoteVault":"38VBuRZUGNTGkH8WxkmnsLH7YBiC2n5FseTmBuGZq5Us","b":206900000,"q":85.000000062,"px":4.108264865248912e-7,"supply":1000000000,"decimals":6,"tokenProgram":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb","feeBps":null,"freeze":null,"mintAuth":null,"sig":"2QN2S5rGhVv8sAZcYXT7MGVDvzAEvUYZrewBYSypMcDfksxTS2u413czrYXPiXoYwJEtRjsgoamt32kELbuVNm6p","blockTime":1791642704000,"lagMs":526}
px
{"type":"px","t":1791640800132,"mint":"7E9FWUo2mJK1LT53LPceXK8VHrDM4WhMFpBZYtyHaSC1","b":13932037.454196,"q":17.430408874,"pad":"dbc"}
holders (top20 cut to 2 entries here; the file has all 20)
{"type":"holders","t":1791640987253,"mint":"FJH9L1G1ezgVKymcKnVUARN9YH6oPFAJ19qTQ6mL7EXd","top10":0.7,"top20":[{"acct":"GCegNfWBkzpERkQVwZkBSJBdXxqMFMMdoLuvKgNr7PEF","owner":"FhVo3mqL8PW5pH5U2CN4XE33DokiyZnUwuGpH2hmHLuM","amt":950264550.634002},{"acct":"FukAMJAHBU1rvWSYAB4MTiHzR2QnUwNNZGxm3ZxKyQc3","owner":"HLnpSz9h2S4hiLQ43rnSD9XkcUThA7B8hQMKmDaiTLcC","amt":18537186.696369}],"pad":"dbc"}
qpx
{"type":"qpx","t":1791640829727,"usd":{"98sMhvDwXj1RQi5c5Mndm3vPe9cBqPrbLaufMXFNMh5g":84.3142186577373,"So11111111111111111111111111111111111111112":109.78435044998537}}
The px row above: price = q / b = 17.43 / 13,932,037 = 1.25e-6 SOL per token; at the SOL price in the nearest qpx row (US$109.78) that is US$0.000137.
Schema
dbc = Meteora Dynamic Bonding Curve (Bags, Jupiter Studio, ...) to a DAMM v2 pool; ray = Raydium LaunchLab (bonk.fun etc.) to a Raydium CPMM pool. Each coin followed 20 min (dbc) / 30 min (ray). Source: Solana RPC; US$ quote prices from Jupiter's free price API.
alltnumberms when recorded
gradpad"dbc" / "ray"launchpad
gradplatformstringplatform config / name
gradmint, quotestringcoin mint; quote mint (SOL, or a token such as USD1 / a tokenized stock)
gradpool, curveAuth, baseVault, quoteVaultstring/nullpool and vault accounts; pool is null on every dbc row (the DAMM v2 pool is not known when the migration is heard; the vaults identify it) and set on ray rows
gradb, qnumbervault balances (tokens, quote units) at migration
gradpxnumberprice in quote = q / b
gradsupply, decimals, tokenProgramnumber, number, stringmint facts (Token or Token-2022)
gradfeeBps, freeze, mintAuthmixedToken-2022 transfer fee, freeze / mint authorities (null = none)
gradsig, blockTime, lagMsstring, number, numbermigration signature, its block time (ms, not seconds like bt elsewhere) and how long after the block we heard of it (ms)
pxpad, mint, b, qstring, string, number, numbervault balances when they changed (every ~6 s, ~2 s for fast-moving coins); price = q / b
holderspad, mint, top10, top20[]string, string, number, array+60 s and +5 min: 20 largest token accounts (acct, owner, amt); top10 = share held by top 10 excluding pool vaults and curve
qpxusdobjectevery 30 s: US$ price of SOL and of every non-SOL quote mint seen in the last 2 h, keyed by mint
meteora-pools
Example rows (from the sample)
pool
{"type":"pool","t":1791640862793,"pool":"3BCeknAQpHELGfKhUb9mnKuLC3Eg3qjJrZ5B7fqC1xSW","price":0.000006613131,"tvlUsd":59712.37,"vol24hUsd":621060.47,"fees24hUsd":17376.4,"vol24hDeltaUsd":94.68,"feesMinUsd":65.4599}
{"type":"pool","t":1791640862793,"pool":"5EStPSuAZB4TqBSWLpbGwiKFEuspdYjcc3EoRMgeMHGh","price":0.000026998604,"tvlUsd":54300.74,"vol24hUsd":268438.69,"fees24hUsd":14080.84,"vol24hDeltaUsd":-1688.1,"feesMinUsd":0}
Same minute, two pools: the first earned US$65.46 in fees in that minute on US$59.7k of TVL; the second earned nothing, and its rolling 24 h volume fell by US$1,688 (more dropped out of the 24 h window than came in).
Schema
One row per pool per minute, Meteora DLMM pools with TVL of US$50k or more, top 200 by 24 h fee/TVL. Source: Meteora's public DLMM API. No RPC, no wallets.
curvetape
Example rows (from the sample)
create
{"type":"create","t":1791900004668,"slot":456467223,"sig":"2f23Xpkm97zfNW33TkLj8JPbD6xPapa4UApK59Up5Bou17HJZQWWiuSzNDveStHJNJ7KM77Vj6x2aQyQdDjFRYbT","bt":1791900004,"mint":"6HFExtnceGjHTkURczNMrBXvW9mW9R8H3tTjPUdQRyjY","curve":"BzYvZ5e3PZLeRi1a6Qios3Vx2JG2fUWZsszMuFKRbe5T","user":"bwamJzztZsepfkteWRChggmXuiiCQvpLqPietdNfSXa","creator":"bwamJzztZsepfkteWRChggmXuiiCQvpLqPietdNfSXa","name":"Save The Orangutans","sym":"ORANGUTANS","uri":"https://md.sdfgsdfsdf.uk/metadata/yQ1HKDod","tokenProgram":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb","mayhem":false,"quote":null,"vt":1073000000000000,"vs":30000000000,"rt":793100000000000,"supply":1000000000000000,"vq":30000000000}
trade
{"type":"trade","t":1791900000073,"slot":456467204,"off":5277,"bt":1791899999,"sig":"3oHhesiuEZy6AEGibP29sLPwz4EE4jqb7ucAETkz4DijVrwyT9TdHdJF6rwcDYEjHUJZz4Lbpa8FLxQY2jYrAiLT","i":0,"mint":"13C3X9CJQd98H6nic3mTGE5a5wvKRQec4VaceMy9pump","side":"buy","wallet":"D4orPtC6p1VveJuVJXZCqDFDvLX5689bg3sPyT6L9L3U","tokens":2328278.127981,"sol":0.272278445,"capAfter":117.4642,"curveSol":31.491252689,"fee":0.002586646,"cfee":0.000816836,"vs":61491252689,"vt":523489102303982,"ix":"buy"}
migrate
{"type":"migrate","t":1791900007570,"slot":456467236,"sig":"2eA524jow1WmjWZtZL9oajTtsab7sLPMAiQh49A3N6jjNKjwbVkdK1oQkx5dbgMdd5vENVgdvBKu8pyvXL1ESrRu","bt":1791900007,"mint":"7HB5bziuo7maGzy24SS2KmEUnHfFkcgQPT8zt9NZpump","pool":"2HVdHvhk78x8yuhFiiLhy5MdH6dZ6wet3C32Euzyzu2N","quote":null,"solAmount":84.990359428,"mintAmount":206900000,"poolMigrationFee":0.015000001,"user":"7LCvF6K1Sp88qt9HJ6FRw4DJfXahJ72gZqqM3X9tDycU"}
end
{"type":"end","t":1791900007568,"mint":"7HB5bziuo7maGzy24SS2KmEUnHfFkcgQPT8zt9NZpump","why":"graduated","src":"create","trades":1074,"buys":903,"sells":171,"vol":172.633076653,"volQ":null,"lastCap":410.8802,"maxCap":410.8802,"firstT":1791899520492,"lastTradeT":1791900007568}
gap
{"type":"gap","t":1791902270272,"from":1791902148965,"to":1791902270272,"why":"boxcap","ms":121307}
The trade above: the buyer put 0.272278 SOL into the curve and paid 0.002587 + 0.000817 SOL in fees, 0.275682 SOL in all; the cap after it was 117.46 SOL. The gap is real: from 14:35:48 to 14:37:50 UTC the live feed was off (121 s, backed off to stay inside the shared public-RPC allowance), so trades in that window are not in this file.
Schema
One JSON object per line, rows in t order. SOL amounts in SOL, token amounts in whole tokens; vs, vt, rt, vq, supply and the Q fields are raw integers. Source: Solana chain (pump.fun program logs).
createslot, sig, btnumber, string, numberthe creation transaction
createmint, curvestringthe coin and its bonding-curve account
createuser, creatorstringwallet that sent the creation / the coin's creator (receives creator fees)
createname, sym, uristringname, ticker, metadata link, as written on chain
createtokenProgramstringToken-2022 or classic token program
createmayhemboolpump.fun "mayhem mode" coin
createquotestring/nullnull = priced in SOL; else the mint the curve is priced in
createvt, vs, rt, supply, vqnumberstarting virtual tokens, virtual SOL, real tokens, supply, virtual quote reserves (raw)
tradeslot, sig, i, btnumber, string, number, numberthe transaction; i = index of this trade among pump.fun trades in it, so (sig, i) is unique
tradeoffnumber/nullslots since the coin's creation slot (null when the creation was not seen)
trademint, side, wallet, tokensstring, "buy"/"sell", string, numberwho traded how many tokens
tradesolnumberSOL curves: SOL into (buy) / out of (sell) the curve, WITHOUT fees (a buyer paid sol + fee + cfee, a seller got sol - fee - cfee)
tradefee, cfeenumberSOL curves: pump.fun protocol fee / creator fee, SOL (0.95 % / 0.30 % in Oct 2026; mayhem coins differ)
tradecapAfter, curveSolnumberSOL curves: market cap in SOL after the trade (price x 1e9 supply); real SOL in the curve after it
tradevs, vtnumbervirtual SOL (SOL curves only) / virtual token reserves after the trade (raw)
tradequote, qAmt, vq, rq, feeQ, cfeeQstring, numbercurves priced in another token: its mint; the amount, virtual / real quote reserves and the two fees in its raw units. These rows have NO sol / capAfter / curveSol / fee (never a fake 0). quote "?" = amounts unreadable
tradeixstringinstruction: buy, sell, buy_exact_sol_in, buy_exact_quote_in, multi_hop_swap (a swap routed through the curve's quote token in one instruction; almost all on curves priced in another token)
tradebyCreatorboolpresent (true) when the trader is the coin's creator
trademayhemboolpresent (true) on mayhem-mode coins
tradetrunc, recboolthe transaction's logs were cut off (later trades in it come as rec rows read from the full transaction, or are missing)
migratesolAmount, quoteAmount, mintAmount, poolMigrationFee, usernumber, stringSOL (or raw quote) and tokens moved into the pool, migration fee (SOL), sender
endmint, why, srcstringcoin no longer followed: graduated, idle (60 min without a trade), evicted (over 20,000 followed); src create / adopt
endtrades, buys, sells, vol, volQ, lastCap, maxCap, firstT, lastTradeTnumbertotals seen while followed (vol in SOL for SOL curves, volQ raw otherwise; caps in SOL)
txtxFee, prioFee, jitoTipnumbernetwork fee paid, priority part of it (fee minus 5,000 lamports a signature), SOL sent to Jito tip accounts; SOL
txcuPrice, cuLimit, cuUsed, prioCfgnumbercompute-unit price (micro-lamports, v0 transactions), limit, used; prioCfg = a v1 transaction's own priorityFee setting
txfailedboolthe transaction failed
gapfrom, to, why, msnumber, number, string, numberthe live feed was off between from and to. why: socket, yield413 / boxcap / selfcap (backed off to stay inside the shared public-RPC allowance), refused, start, stop. Since 2026-10-14 a backfill row follows: when it says complete: true nothing in the window is missing
create, trade, complete, migratesrc"backfill"since 2026-10-14: present only on rows repaired after a gap, read from whole blocks; the same fields and values as live rows. Live rows have no src
backfillfrom, to, whynumber, number, stringsince 2026-10-14: one gap repaired from the chain (whole blocks via a paid RPC): its window (ms) and reason (restart = the recorder restarted)
backfillslotFrom, slotTo, blocks, skipped, failed, txs, rowsnumber, objectslots read, blocks read, slots with no block, slots that could not be read, transactions with pump.fun events, rows written by type
backfillcomplete, stopbool, stringcomplete: true = every slot of the window was read; false: stop says why (nocredit, maxblocks, noslot, nohelius) and slots after slotTo stay missing
launchmeta
Example rows (from the sample)
meta (phase create)
{"type":"meta","t":1791900032794,"phase":"create","src":"chain","mint":"3SrkocGC2RJRznw2HEyJBrRzoMcRDoJs5L52EWAfpump","tCreate":1791900032355,"createSig":"2vx9i7n4EpodmVcEgvX1VReULVPX3gXuKeZxzJPqr8RsHDexEqnrPz8cx6yrPSjASVskuQFV84XxmBD9NjJ2XUgA","creator":"7FVfSdnR9VPGjMtmBP1Hz9C2DFTpoNX8gVVRmnimnGt9","name":"up","sym":"up","uri":"https://ipfs.io/ipfs/QmZMeuCM42FErtBCZQd57DLcs1mpRNQLSqMVL21MRzQ8VE","uriKind":"ipfs","json":{"name":"up","symbol":"up","description":"grow up","image":"https://ipfs.io/ipfs/bafkreihb7ybjzblgsfzqzc4lv5v5kii5letvrah5xozqwziuqxnnsayl7q","showName":true,"createdOn":"https://pump.fun"},"metaSha":"8ab84aca67c8bbf27fe573ecbec4f0e94a2ec9b8f60ccf47d3493588b372aaa2","metaBytes":189,"imgUrl":"https://ipfs.io/ipfs/bafkreihb7ybjzblgsfzqzc4lv5v5kii5letvrah5xozqwziuqxnnsayl7q","imgSha":"e1fe029c856691730c8b8baf6bd5211d59275880fdbbb30b651485dad9030bfc","imgBytes":13381,"imgType":"image/gif","gwMeta":"ipfs.filebase.io","ms":165,"cachedImg":true}
meta (a failed fetch)
{"type":"meta","t":1791900007185,"phase":"create","src":"chain","mint":"6aFPW6pS1AtxgKWc4yMf6ozePzrSdBBGHmUqEdPUtz5R","tCreate":1791899997001,"createSig":"5tCy8ZwcbzsWWPaEgtMcBpUDmNoBS23A1iiCyyrg5fNwTas2gwVZSSqDWuvhrYegowF132sqgBnxAmwteDdbQciU","creator":"5vurJzLBn6dryVxztHTc5TiRo7idbRQUznCp6S4qPQFL","name":"Pocket Node","sym":"PNOD","uri":"https://paste.rs/0Wpec?meta=json","uriKind":"http","ms":10088,"err":"meta: paste.rs URLError: <urlopen error timed out>"}
The same picture always gives the same imgSha, whatever link it sits behind; cachedImg: true means that picture link was fingerprinted before. The second row is a metadata host that did not answer in time: the reason is in err, and the fields it would have filled are simply absent.
Schema
One JSON object per line, rows in t order. Sources: the creation / migration seen on chain (our curvetape feed) or by our pregrad recorder, whichever came first; the metadata and picture through public IPFS gateways.
metaphase"create" / "grad"fetched at creation, or at graduation
metasrc"chain" / "pumpportal" / "chainlogs"the feed that reported the creation / graduation first: chain = our curvetape recorder (the chain's create / migrate events); pumpportal = PumpPortal's free feed (through our pregrad recorder); chainlogs = pregrad's own detection from the chain's logs, which replaces PumpPortal there from 2026-10-14. A few rows from 2026-10-14 on (about 1 in 400) have no src: the feed was not recorded
metamint, createSig, creator, name, symstringthe coin, its creation transaction, creator wallet, on-chain name and ticker
metatCreate, tGradnumberwhen the creation / graduation was seen (ms)
metauri, uriKind, uriFromstringthe metadata link; ipfs / http / data / none / other (another scheme); grad rows: where the link came from (create, chain = read from the mint, none)
metajsonobjectthe metadata JSON's fields, each only when present: name, symbol, description (cut at 2,000 characters), image, website, showName, createdOn, and hasTwitter / hasTelegram (true when the JSON has such a link; the links themselves are left out: no social handles)
metajsonKeysarraythe JSON's other top-level keys (up to 20)
metametaSha, metaBytesstring, numbersha256 and size of the metadata JSON bytes
metaimgUrlstringthe picture link from the JSON
metaimgSha, imgBytes, imgTypestring, number, stringsha256 of the picture's bytes, its size and Content-Type (the same picture = the same imgSha)
metagwMeta, gwImgstringthe host that answered
metamsnumbertime spent fetching
metacachedImgboolthe same picture link was fingerprinted earlier (same imgSha)
metacached, changedboolgrad rows: the creation's result reused (IPFS content cannot change) / the JSON differs from the creation's (http links)
metaerrstringwhy a fetch failed (meta: <host> <reason>, image: <reason>, noUri); absent when all went well
skipmint, phase, whystringnot fetched: backlog (queue full on a very busy hour)
gradholders
Example rows (from the sample)
holders (top cut to 3 entries here; the file has up to 20)
{"type":"holders","t":1791950508411,"mint":"GUFGC9E1mtY5PB4qrr5GeyCcBJGBzMqs9bQvNon1pump","mark":10,"src":"chain","tGrad":1791949905766,"lagS":2.6,"slot":456698335,"supply":995031028.780416,"decimals":6,"pool":"AEM5qEJSYyEvqWnaajgxey5yBPXfLj5L1mLnu5Vsn2C9","n":20,"top":[{"acct":"HUVzPYCqGDz7qe46bKa6P5fuEahRaeFhTtEZGPipm6Ve","owner":"9qZvANPkPE6NHoj5W5BzJ4gb4byaVqvg1V4JCJBfiK2m","amt":129437610.107396,"pct":13.0084},{"acct":"49CVwy8EkACVqT9ASKwebaCykK4cLmzYZPbNgENPuZmu","owner":"AEM5qEJSYyEvqWnaajgxey5yBPXfLj5L1mLnu5Vsn2C9","amt":63052232.378713,"pct":6.3367,"role":"pool","pda":true},{"acct":"E3gjGe8o8mhj3hr6UScErijYrnvKS1ijwWcD5c9u41RY","owner":"BTmCme13XXrD3VLxXFChL9VnmicJ5PjkVUpAsjrooEYh","amt":2373829.971933,"pct":0.2386}],"top10Pct":13.6241,"top10PctAll":19.9136,"top20Pct":14.0483,"poolPct":6.3367,"curvePct":0,"tries":1}
Ten minutes after graduation the largest holder had 13.0% of the supply and the pool 6.3%; top10Pct (13.6) leaves the pool and curve out, top10PctAll (19.9) keeps them in.
Schema
One JSON object per line, rows in t order. Token amounts in whole tokens; pct = % of supply. Source: Solana RPC (getTokenLargestAccounts + getMultipleAccounts).
holdersmint, markstring, numberthe coin; minutes after graduation (1, 10, 60)
holderssrc, tGradstring, numberthe feed that reported the graduation first: chain (our curvetape recorder), pumpportal (PumpPortal's free feed through pregrad) or, from 2026-10-14, chainlogs (pregrad's own detection from the chain's logs); when it was seen (ms)
holderslagSnumberseconds after tGrad + mark the snapshot was actually read
holdersslotnumberchain slot of the read
holderssupply, decimalsnumbertoken supply (whole tokens) and decimals, read from the mint
holderspoolstringthe coin's canonical PumpSwap pool (SOL-quoted graduates)
holdersnnumberaccounts returned (up to 20)
holderstoparraybiggest first: acct (token account), owner (the holder), amt, pct, role (present only on pool = the coin's PumpSwap pool, or curve = its old bonding curve), pda (present only when true: the owner is a program address, not a plain wallet)
holderstop10Pct, top20Pctnumber% of supply in the 10 / 20 largest accounts, pool and curve left out
holderstop10PctAllnumber% in the 10 largest, all included
holderspoolPct, curvePctnumber% in the pool / the curve
holderstriesnumberread attempts (0 = given up before a first try)
holderserrstringthe snapshot failed (429 = the public RPC refused the read, late = no answer close enough to its mark); then no holder fields