Launch Tape

Real pump fun data. No coding needed.

See what happened.
Before you try a bot.

A spreadsheet of pump fun coins that moved to open trading, and what their prices did next. Open it on your phone or ask any AI (ChatGPT, Claude, Gemini) to explain it.

Try the free sample ↓See what the data looks like ↓

105 coins · 2 hours · free · no signup

What the data looks like

The spreadsheet

First 20 named coins of 2026-10-27 UTC · 10 selected columns. Blank cells mean missing data, not zero. Scroll sideways to see every column.

graduates-2026-10-27.csv
mintnamesymbolgrad_time_utcref_cap_solend_10m_pctend_30m_pctbuyers_10mdev_hold_pct_at_gradcurve_fill_sec
7EAa…pumpTrump 2028TRUMP20282026-10-27 00:05:552542.8399.4-99.26401.740.0
27Qg…pumpPresident 2028ELON20282026-10-27 00:06:563130.84-19.5-26.75510.110.0
5XgX…pumpAOPAOP2026-10-27 00:09:091435540.001.42.911779.310.0
Dh9N…pumpAMERICA PARTY 2028AP20282026-10-27 00:09:111210.8549.16.630850.250.1
A3X5…pumpRockstar GamesRockstar2026-10-27 00:11:224036.9656.4-99.542079.310.0
xt6f…pumpIShowSpeedSpeed2026-10-27 00:13:053150.6151.9-99.4171579.310.0
CuCC…pumpUSOEUSOE2026-10-27 00:23:232062160.000.934.726179.310.0
9wUM…pumpfomofomo2026-10-27 00:24:283463.3229.8-99.540979.310.0
CNir…eZJyzerebrainzerebrain2026-10-27 00:25:13430.44-94.2-94.23603.46149.2
8fsz…pumpFloatFLOAT2026-10-27 00:26:09386.0823.064.4427825.2
5RT4…pumpSolySOLY2026-10-27 00:36:07392.09-62.3-76.224235.0011205.0
3VWF…pumpYouTubeYouTube2026-10-27 00:37:443682.8235.8-99.547479.310.0
FW56…pumpApple officialApple2026-10-27 00:43:283680.40-99.5-99.544279.310.0
GrUJ…pumpArtificial Nice TitsANT2026-10-27 00:44:321374.72-29.5-98.614260.140.0
AEtv…pumpGinnancoinGinnan2026-10-27 00:46:142480.87-55.7-3.3147579.310.0
6zMf…pumpTrump 2028TRUMP20282026-10-27 00:47:183317.7234.2118.71646.630.0
Xr2N…pumpROBINHOODRobinhood2026-10-27 00:48:423145.56-99.4-99.4113779.310.0
DMnM…pumphachiHACHI2026-10-27 00:51:31380.2537.8257.89426.63177.1
4jM5…pumpjoejoe2026-10-27 00:51:42582.72-92.3-92.82263.421413.2
3MBy…pumpfomofomo2026-10-27 00:53:293456.0626.7118.242279.310.0

mint — The coin’s address, shortened to its first and last four characters.

name — The recorded coin name; blank when unavailable.

symbol — The recorded ticker; blank when unavailable.

grad_time_utc — When the coin moved to open trading, in UTC.

ref_cap_sol — Reference market cap in SOL, not a per-token price: pool price × 1 billion at +10 seconds (last trade by then, or first trade if later).

end_10m_pct — Price change (%) at the last recorded trade within 10 minutes, versus that reference.

end_30m_pct — Price change (%) at the last recorded trade within 30 minutes, versus that reference.

buyers_10m — Distinct wallets that bought in the first 10 minutes after graduation, not curve buyers.

dev_hold_pct_at_grad — Percent of the token supply the creator held at graduation.

curve_fill_sec — Seconds from creation to graduation.

The detailed files

JSON lines, expanded here for readability. In the files, each object occupies one line.

gradtrades-2026-10-27.jsonl — Eight consecutive rows for one coin: its graduation, then its first seven recorded buys and sells. Other coins’ rows are not shown.

{
  "type": "grad",
  "t": 1793059555638,
  "bt": 1793059555,
  "slot": 461860965,
  "sig": "23WF…kqFA",
  "mint": "7EAa…pump",
  "pool": "F15q…Nmzg",
  "coinCreator": "4u6r…LSzr",
  "poolBase": 206900000,
  "poolQuote": 84.990359056,
  "virtualQuote": 17.584505288,
  "price": 4.9577e-7,
  "capSol": 495.77,
  "curveSol": 84.990359056
}

{
  "type": "trade",
  "t": 1793059557163,
  "bt": 1793059556,
  "slot": 461860972,
  "sig": "5DQR…LV5D",
  "i": 0,
  "mint": "7EAa…pump",
  "side": "buy",
  "user": "7NNz…a6KL",
  "baseAmount": 25.47005,
  "quoteAmount": 0.00006429,
  "price": 0.00000252414,
  "poolBase": 83523527,
  "poolQuote": 194.385427074,
  "priceAfter": 0.0000025241,
  "virtualQuote": 16.436526174,
  "userTokensBefore": 0,
  "lpFee": 1.29e-7,
  "protocolFee": 3.3e-8,
  "creatorFee": 5.47e-7,
  "ix": "buy_exact_quote_in_v2"
}

{
  "type": "trade",
  "t": 1793059557296,
  "bt": 1793059556,
  "slot": 461860973,
  "sig": "32fD…sH57",
  "i": 0,
  "mint": "7EAa…pump",
  "side": "buy",
  "user": "3ev8…QggS",
  "baseAmount": 308177.363548,
  "quoteAmount": 0.780752034,
  "price": 0.00000253345,
  "poolBase": 83215350,
  "poolQuote": 195.166179672,
  "priceAfter": 0.00000254283,
  "virtualQuote": 16.43652561,
  "userTokensBefore": 0,
  "lpFee": 0,
  "protocolFee": 0,
  "creatorFee": 0,
  "ix": "buy_exact_quote_in"
}

{
  "type": "trade",
  "t": 1793059558219,
  "bt": 1793059557,
  "slot": 461860976,
  "sig": "zajB…BuEx",
  "i": 0,
  "mint": "7EAa…pump",
  "side": "buy",
  "user": "Fn9n…8ELr",
  "baseAmount": 19.448385,
  "quoteAmount": 0.000049455,
  "price": 0.00000254288,
  "poolBase": 83215331,
  "poolQuote": 195.166229226,
  "priceAfter": 0.00000254283,
  "userTokensBefore": 0,
  "lpFee": 9.9e-8,
  "protocolFee": 2.5e-8,
  "creatorFee": 4.21e-7,
  "ix": "buy_exact_quote_in_v2"
}

{
  "type": "trade",
  "t": 1793059566102,
  "bt": 1793059565,
  "slot": 461861012,
  "sig": "3bmq…ZKiR",
  "i": 0,
  "mint": "7EAa…pump",
  "side": "buy",
  "user": "7FPq…1nsN",
  "baseAmount": 108938.214041,
  "quoteAmount": 0.277374888,
  "price": 0.00000254617,
  "poolBase": 83106392,
  "poolQuote": 195.444159298,
  "priceAfter": 0.00000254951,
  "virtualQuote": 16.436525176,
  "userTokensBefore": 0,
  "lpFee": 0.00055475,
  "protocolFee": 0.000138688,
  "creatorFee": 0.002357687,
  "ix": "buy_exact_quote_in_v2"
}

{
  "type": "trade",
  "t": 1793059566325,
  "bt": 1793059565,
  "slot": 461861013,
  "sig": "4DKU…R42v",
  "i": 0,
  "mint": "7EAa…pump",
  "side": "buy",
  "user": "D4o6…dRyx",
  "baseAmount": 530504.604071,
  "quoteAmount": 1.361216715,
  "price": 0.00000256589,
  "poolBase": 82575888,
  "poolQuote": 196.810525478,
  "priceAfter": 0.00000258241,
  "virtualQuote": 16.434098145,
  "userTokensBefore": 0,
  "lpFee": 0.002722434,
  "protocolFee": 0.000680609,
  "creatorFee": 0.011570343,
  "ix": "buy_exact_quote_in"
}

{
  "type": "trade",
  "t": 1793059566729,
  "bt": 1793059565,
  "slot": 461861015,
  "sig": "2b3N…Y6xL",
  "i": 0,
  "mint": "7EAa…pump",
  "side": "buy",
  "user": "92a9…kc1C",
  "baseAmount": 649793.26904,
  "quoteAmount": 1.691340494,
  "price": 0.00000260289,
  "poolBase": 81926095,
  "poolQuote": 198.505248653,
  "priceAfter": 0.00000262358,
  "userTokensBefore": 0,
  "lpFee": 0.003382681,
  "protocolFee": 0.000845671,
  "creatorFee": 0.014376395,
  "ix": "buy_exact_quote_in"
}

{
  "type": "trade",
  "t": 1793059566739,
  "bt": 1793059555,
  "slot": 461860965,
  "sig": "23WF…kqFA",
  "i": 0,
  "mint": "7EAa…pump",
  "side": "buy",
  "user": "AB1y…7awi",
  "baseAmount": 32683098.780248,
  "quoteAmount": 16.143497759,
  "price": 4.9394e-7,
  "poolBase": 174216901,
  "poolQuote": 83.353237924,
  "priceAfter": 5.7938e-7,
  "virtualQuote": 17.584505288,
  "userTokensBefore": 0,
  "lpFee": 0.00318884,
  "protocolFee": 0.148281017,
  "creatorFee": 0.047832586,
  "ix": "buy_v2",
  "src": "backfill"
}

pregrad-2026-10-27.jsonl — One launch record for the same coin: its creator, early buyers and recorded curve activity.

{
  "type": "record",
  "t": 1793059564136,
  "mint": "7EAa…pump",
  "sym": "TRUMP2028",
  "name": "Trump 2028",
  "pool": "F15q…Nmzg",
  "slot0": 461860965,
  "sig0": "23WF…kqFA",
  "t0": 1793059555638,
  "bt0": 1793059555000,
  "src": {
    "first": "chainlogs",
    "gradRow": true,
    "migrate": 1793059555638,
    "curveCompleteS": null
  },
  "creator": "4u6r…LSzr",
  "create": {
    "t": 1793059555650,
    "sig": "5Dx5…T5kT",
    "src": "chainlogs",
    "mayhem": false,
    "capSol": 28.887
  },
  "ageS": 0,
  "instant": true,
  "cap0": 495.77,
  "curveSol": 84.990359056,
  "devBuyTokens": 33117599.4,
  "devBuyPct": 3.312,
  "devBuySol": 0.987654,
  "creatorPctAtGrad": 1.738,
  "creatorInfo": {
    "txs50": 4,
    "capped": false,
    "oldestS": 29208,
    "nBefore10m": 1,
    "funder": null,
    "fundSol": null,
    "fundedBeforeS": null,
    "fundMemo": null,
    "priorCoins24h": 0,
    "priorCoins72h": 0
  },
  "gradSlot": {
    "pct": 0.079,
    "sol": 2.006,
    "nWallets": 2,
    "nTx": 2,
    "buys": [
      {
        "w": "3dL8…4NtS",
        "tokens": 791179.377,
        "pct": 0.079,
        "sol": 2.0042,
        "sig": "4Tow…uDCX",
        "bundleSize": 1,
        "payer": "3dL8…4NtS",
        "signers": 1,
        "slotOffset": 0
      },
      {
        "w": "27HF…M3MX",
        "tokens": 7.836,
        "pct": 0,
        "sol": 0.0015,
        "sig": "5NGP…9PJU",
        "bundleSize": 1,
        "payer": "27HF…M3MX",
        "signers": 1,
        "slotOffset": 0
      }
    ],
    "whale": {
      "w": "3dL8…4NtS",
      "pct": 0.079,
      "sol": 2.0042,
      "bundleSize": 1,
      "creatorInTx": false,
      "gainers": [
        {
          "w": "astr…V9bF",
          "sol": 0.0002
        }
      ],
      "txs25": 25,
      "oldestS": 35059,
      "lastTxKind": "other",
      "funder": null,
      "fundSol": null,
      "fundedBeforeS": null,
      "fundSig": null,
      "fundMemo": null
    }
  },
  "curve": {
    "coverage": "partial",
    "holders": [
      {
        "w": "AeeT…yd8G",
        "pct": 3.312,
        "sol": 1.0015,
        "creator": false
      },
      {
        "w": "HbNN…mzN1",
        "pct": 3.292,
        "sol": 1.2015,
        "creator": false
      },
      {
        "w": "J51d…YPsc",
        "pct": 3.11,
        "sol": 1.0015,
        "creator": false
      },
      {
        "w": "9awK…BVt6",
        "pct": 2.927,
        "sol": 1.0015,
        "creator": false
      },
      {
        "w": "B67S…op9D",
        "pct": 2.235,
        "sol": 8.0015,
        "creator": false
      },
      {
        "w": "Cu9D…mwqG",
        "pct": 2.077,
        "sol": 6.0016,
        "creator": false
      },
      {
        "w": "4u6r…LSzr",
        "pct": 1.738,
        "sol": 0.5074,
        "creator": true
      },
      {
        "w": "8aSa…D6aA",
        "pct": 1.252,
        "sol": 4.0015,
        "creator": false
      },
      {
        "w": "Drzq…EYXP",
        "pct": 1.091,
        "sol": 4.3694,
        "creator": false
      }
    ],
    "creationSlot": {
      "ok": 4,
      "failed": 4,
      "curveTxs": 20,
      "capped": false
    },
    "bundleEst": {
      "buyers": 3,
      "avgPct": 25.333,
      "top5Pct": 75.998
    },
    "estimated": true,
    "top1NcPct": 25.333,
    "top5NcPct": 75.998,
    "nOver3Pct": 3,
    "bundleWallets": 8,
    "bundlePct": 19.296,
    "creatorPct": 1.738,
    "path": null,
    "trades": null
  }
}

Every row above is real and unedited except shortened addresses. A day has about 2.76 million trade rows (2026-10-27: 2,763,649 trades). The spreadsheet shows selected columns. Signatures are shortened too.

See the plans ↓

From a question to a spreadsheet

  1. 1. Pick a day or a week

    Choose one day, the latest week, or the full history.

  2. 2. Pay from any Solana wallet

    Use SOL or USDC on Solana. With a funded wallet, payment usually takes a minute or two.

  3. 3. Check your email

    We send a private download link after payment is confirmed.

  4. 4. Open it and ask

    Use Google Sheets, ChatGPT or Claude. Start with the small spreadsheet.

Try it in ChatGPT in about a minute

Download the free spreadsheet, attach it in ChatGPT or Claude, and paste this question. You can also import it into Google Sheets.

Download the free spreadsheet ↓

ChatGPT / Claude

This is a free 2-hour sample of pump fun graduations. 1) In plain words, what happened to these coins in the first 10 and 30 minutes? 2) Which ones doubled, and what did they have in common (how fast the curve filled, how much the dev held, how many buyers)? 3) Could a simple rule have spotted them early? 4) Be honest about the sample size: how much can I trust a pattern from this many coins over 2 hours, and how many days of data would I need before I'd bet real money on it? Don't invent prices or promise profits.

The spreadsheet is enough to explore outcomes. Testing a buy at an exact second needs the detailed trade files, plus fees and delays. AI can make mistakes; check its calculations.

Try it in ChatGPT in about a minute →

A pattern, or just this sample?

This pump fun sample covers 105 coins on October 10, 2026, 14:00–16:00 UTC; 69 have recorded trade summaries. The separate tape follows one coin for 30 minutes.

Write down one rule before looking at other days. Use only information known at entry, leave out incomplete coverage, then check fees, delays and slippage. A paid day adds recorded trades and creator context; more days help test whether a pattern repeats. Finding no edge is a useful result. No profit is promised.

Download the sample + guide (ZIP)

Compare data plans → · Read the guide

Choose how much to explore

Prices are in US dollars. Pay with SOL or USDC on Solana. Historical data has gaps; no profit is guaranteed.

06

Buy

One day or a plan · USDC or SOL on Solana · download links by email within minutes

Choose

One day

$10 once

US$10 once

Pay in USDC or SOL

  • One chosen day: spreadsheet, buys and sells after launch, and information about who launched each coin.

One week

$20 once

US$20 once

Recommended

Pay in USDC or SOL

  • The latest 7 days: daily spreadsheets, one combined spreadsheet, and all eight detailed file types.

Full history

$49 / month

US$49 / 31 days

Pay in USDC or SOL

  • All available history, then new daily files for 31 days. Nothing renews automatically.

SOL price powered by Jupiter

Prices are in US dollars. Pay with SOL or USDC on Solana. Historical data has gaps; no profit is guaranteed.

If a file doesn't open or isn't as described, you get your money back.

Pay

Pay manually

For a wallet that cannot use the Pay button or scan the code: press Pay above to get an order code and the exact amount, then send that amount from any Solana wallet to this address, with the order code (like LT-7KQ2M9) as the memo.

5vf1PzK8LrF9D5bemYJYPsFYp4nHULSTA1biBampgU58
QR code of the pay address only

This QR code holds the address only: enter the amount and the memo yourself.

Your wallet has no memo field? Send the payment anyway and give us the transaction signature and your order code through the contact form: we match it by hand, within a day.

A few questions, answered

What exactly do I get?

Downloadable spreadsheets of coins and their price changes, plus detailed files of recorded trades. Contents vary by plan; gaps and coverage limits are documented below.

Do I need to code?

No. A spreadsheet and ChatGPT or Claude are enough to explore the summaries. Exact trade-by-trade tests use larger files and may need coding help.

How do I pay if I’m new to crypto?

Use any Solana wallet (Phantom, Solflare, Backpack and others) with SOL or USDC on the Solana network, and a little SOL for the network fee. Choose your plan, enter your email, then use Pay or Open in wallet app. On a computer you can scan the payment QR code with the wallet on your phone. Check the amount before approving.

How fast do I get it?

Usually within minutes after payment is confirmed. Check Spam and Promotions if the email is missing. Payment confirmation and file preparation can take longer.

What if something goes wrong?

Use the contact form below, or reply to your delivery email.

If a file doesn't open or isn't as described, you get your money back.

Is this financial advice?

No. These are historical observations for research, not coin recommendations or a promise that a bot will make money.

Contact us →

Five words, in plain English

pump fun graduation
A coin finishes its initial sale on pump fun and moves to trading in a shared pool of coins and funds.
Bonding curve
The automatic pricing rule used during a coin’s initial sale.
Wallet
An app such as Phantom, Solflare or Backpack that holds crypto and lets you approve payments.
SOL
Solana’s coin, used for payments and network fees.
USDC
A crypto token designed to track one US dollar; this checkout uses the Solana version.
For developers: technical details & coverage
Why execution assumptions matter: an example from the tape
Signal price, no costs+2.3%mean per trade · modeled
Next-slot fill, modeled costs−0.9%mean per trade · modeled

Published example: 67 coins, Oct 10, 2026, 14:00–16:00 UTC. Buy at +15 seconds; exit at +3 minutes or a −20% stop; size 0.1 SOL. The replay models fees, slippage and price impact. These are simulated results, not live returns or a promise of future performance. Read the method and exclusions.

Get a full day · US$10

One day: US$10 once · SOL or USDC · download links by email

A question, answered

Want us to investigate the data?

One focused question, clear charts, and the calculation. Custom research reports are US$99, with scope confirmed before payment.

See a sample report

Why this exists

We built a pump fun bot with AI. On paper it looked great. Then we put real money on the exact same rules.

Four wallets, 139 real trades on fresh graduates: net −US$17.45. A second bot providing liquidity on new pools: 65 real positions, net −US$134.70. Small money on purpose, and still the lesson cost about US$150.

Real fills landed a block after the signal, every round trip paid about 2% in fees and slippage, and before Sept 23 our own price tape mixed two sources about 6% apart, so some of the swings the paper bot “caught” were never there.

The data was the problem, not the AI. So we started recording every launch from the chain, with the fills and the fees, and sell it by the day.

Better rules than ours might exist. Nobody knows yet. The tape is how you find out.

01

What we record

In plain words · the dataset name on the right
  • Every new pump fun coin, the moment it is created: its name, its ticker, a fingerprint of its picture, and who made it.For example: “Moon Frog”, ticker MFROG, made by wallet 7xKp…3dQ at 14:02:11.

    launchmeta
  • Every buy and sell on a coin's launch curve, from its first trade until it graduates.For example: at 14:02:15 a wallet buys 0.3 SOL worth, and the new price is noted.

    curvetape
  • Who is behind each launch: the creator, where their money came from, who bought in the graduation slot, and how it ended 10 minutes later.For example: the creator's wallet was topped up 2 hours earlier, and the price was down 40% at the 10-minute mark.

    pregrad
  • Every trade in a graduate's first 30 minutes on its new pool, with the pool's balances after each one.For example: a wallet sells 1.2 SOL worth, and the pool is left holding 84 SOL and 206 million tokens.

    gradtrades
  • The same day on one sheet: one row per graduate, with who was behind it and what its price did in its first 10 and 30 minutes. A small CSV that opens on a phone, or in the ChatGPT or Claude app.For example: MFROG graduated at 14:02, the creator still held 4%, it touched 2x at the 3-minute mark and ended the 10 minutes 61% up.

    graduates
  • Who holds the coin 1, 10 and 60 minutes after it graduates.For example: at 10 minutes, the 10 biggest wallets own 31% of it.

    gradholders
  • The same for coins graduating on the other launchpads: bonk.fun, Bags and Jupiter Studio.For example: pool balances every few seconds, and the top holders at 1 and 5 minutes.

    padfeed
  • About 200 Meteora pools, minute by minute: price, money in the pool, volume and fees.For example: at 14:05 one pool holds US$1.2 million and earned US$85 in fees that minute.

    meteora-pools

All of it read straight from the chain, 24/7, with gaps marked instead of hidden. One file per dataset per day.

What we don't record: no wallet labels, no opinions on who's a rugger, no social media.

02

Datasets

8 datasets · the two a bot builder needs first, then six more
gradtrades since 2026-10-03

Every graduate's first 30 minutes, trade by trade

Every buy and sell on PumpSwap in the first 30 minutes after each graduation: wallet, tokens, SOL, effective price, pool reserves after the trade, the trader's balance before it, and all three fees.

Rows / day
~5,034,000 (Oct 10 2026)
Row types
trade 417,347 · grad 105 · end 88 · down 2 · up 2

Day files: gradtrades-YYYY-MM-DD.jsonl.gz and .parquet, plus graduates-YYYY-MM-DD.csv, the day on one sheet (the columns). Coins followed: cap 300–600 SOL at graduation, at most 30 coins at a time. Failed transactions are not included.

The day on one sheet: graduates-YYYY-MM-DD.csv

One row per pump fun graduate of the UTC day, about 200 KB a day, built from that day's gradtrades (and pregrad for who was behind each coin). It opens in Google Sheets or Numbers on a phone, or drop it into the ChatGPT or Claude app and ask what happened. Every number comes from the files you get; a column whose source is missing stays empty, nothing is guessed. Free sample: graduates-2026-10-10-1400-1600utc.csv (105 coins, 19 KB). Percentages are plain numbers (−80 = minus 80%); times are UTC.

mintthe coin's token mint
symbol, nameticker and name (from pregrad's record of the coin; empty when there is none)
grad_time_utcgraduation time, YYYY-MM-DD HH:MM:SS
poolits PumpSwap pool
cap_sol_at_gradmarket cap in SOL at graduation (price × 1e9; about 496 for a normal graduate)
followed1 = we followed its trades (cap 300–600 SOL, seen in time); 0 = not followed, so the trade columns are empty
curve_fill_secseconds from the coin's creation to its graduation (under 5 = an instant, bundled launch)
dev_hold_pct_at_grad% of the supply the creator still held at graduation
tape_secseconds of trades this day's file holds after graduation, at most 1800; less when the coin graduated in the day's last 30 minutes or we stopped following it early. Under 600: the 10-minute columns are partial
trades_10m, buyers_10m, sellers_10mtrades, and distinct wallets that bought / sold, in the first 10 minutes
ref_cap_solthe reference price, as a market cap in SOL: the pool price after the last trade, in chain order, by graduation + 10 s (or after the first trade, when none came by then). Every % below is against it, the same reference as our posts
low_10m_pct, high_10m_pctthe lowest and highest pool price from the reference trade to 10 minutes after graduation, vs the reference, in % (−50 = half; 100 = 2x), read trade by trade in chain order
touched_minus80_10m, touched_2x_10m1 when the low is −80% or worse / the high is 2x or better
first_big_sell_sec, first_big_sell_pool_pctwhen (seconds after graduation) a single sell first took 10% or more of the pool's tokens within 10 minutes, and that sell's share of the pool; empty when none did
dump_secfrom pregrad's outcome row: when the recorder saw the first sale it flagged as a dump (by the creator, by the biggest graduation-slot buyer, or big by its size rule); the "big holder dump" of our posts. Empty when it saw none, or has no outcome row
end_10m_pct, end_30m_pctthe pool price after the last trade within 10 / 30 minutes vs the reference, in %
data_gap1 when a recorder gap touched this coin's 30 minutes (picked up late, a restart, or a feed drop). Numbers can then be missing trades; the gap is marked, never filled in

On Oct 10–12 2026 this sheet counts 2,194 followed graduates with trades: 823 (37.5%) touched −80% and 307 (14.0%) touched 2x within 10 minutes. The recorder's own outcome rows in pregrad say 835 and 330 of 2,193 (the numbers in our posts): it also counts the seconds before the +10 s reference (most of the 2x gap is a high in those first seconds), its clock sets that reference a few hundred ms earlier for some coins, and it counted a few trades the sold files leave out.

pregrad since 2026-10-04

Who's behind each launch, and how it ended

Creator and its funding, the creator's own buy, bonding-curve buyers, the buyers in the graduation slot, the curve's cap path, and the price 10 s to 10 min after graduation. Raw facts only: addresses, amounts, times. No wallet labels.

Rows / day
~194,000 (Oct 10 2026)
Row types
ctrade 9,678 · create 4,110 · curvex 285 · grad 105 · migrate 103 · record 69 · outcome 67

A coin that graduates near the end of a file gets its outcome row (+10 min) in the next file.

More datasets (6): other launchpads, Meteora pools, bonding curves, coin metadata, top holders, wallet stats
padfeedOther launchpads: Meteora DBC and Raydium LaunchLab graduations, pool balances, top holderssince 2026-10-03

Graduations on Meteora DBC (Bags, Jupiter Studio and others) and Raydium LaunchLab (bonk.fun): mint facts, pool balances every few seconds for 20–30 minutes, top 20 holders at +1 and +5 minutes, and US$ prices of every quote token.

Rows / day
~32,500 (Oct 10 2026)
Row types
px 3,091 · qpx 239 · holders 136 · grad 136

Price in quote units is q / b; convert to US$ with the nearest qpx row.

meteora-poolsPer-minute metrics of about 200 Meteora DLMM poolssince 2026-10-06

About 200 Meteora DLMM pools (TVL over US$50k), every minute: price, TVL, 24 h volume and fees, and the exact fees earned in that minute.

Rows / day
~287,000 (Oct 10 2026)
Row types
pool 23,794

Token mints and names are not in the row; look them up from the pool address.

curvetapeEvery bonding-curve trade, launch to graduationsince 2026-10-13

Every trade on every pump fun bonding curve, from the coin's creation until it graduates or goes quiet: wallet, tokens, SOL without fees, both fees, the cap and curve reserves after each trade. Plus every creation (name, ticker, starting reserves), every completion and migration to PumpSwap, and the fee picture of early transactions.

Rows / day
~4,480,000 (Oct 13 2026)
Row types
trade 456,540 · end 6,358 · create 4,416 · adopt 2,978 · migrate 121 · complete 105 · gap 1

SOL amounts are without fees (a buyer paid sol + fee + cfee). Curves priced in another token carry quote, qAmt and raw reserves instead of SOL fields, never a fake 0. Feed gaps are gap rows; from 2026-10-14 they are repaired from whole blocks (src: "backfill").

launchmetaEvery new coin's metadata and picture fingerprintsince 2026-10-13

For every new pump fun coin, at creation and again at graduation: the metadata JSON behind its link (name, ticker, description, website, whether it lists a Twitter or Telegram), and a SHA-256 of its picture's bytes, so reused pictures and copycat launches can be matched. The pictures themselves are never stored.

Rows / day
~44,300 (Oct 13 2026)
Row types
meta 4,597

No social handles: the Twitter / Telegram links are reduced to hasTwitter / hasTelegram. A failed fetch is a row with err, never guessed.

gradholdersGraduates' top 20 holders at +1, +10 and +60 minsince 2026-10-14

One, ten and sixty minutes after each pump fun graduation: the 20 largest token accounts with their owners, amounts and shares, which one is the PumpSwap pool or the old curve, whether an owner is a program address, and the top-10 / top-20 share with the pool and curve left out.

Rows / day
~3,700 (one per graduate and mark)
Row types
holders 251

No holder count (it needs a full scan of every token account). A snapshot that could not be read is a row with err and no holders, never guessed. On sale from 2026-10-14: on 2026-10-13 the public RPC refused every holder read.

walletsDaily facts for each walletsince 2026-10-03

Daily buys, sells, FIFO realized results and tokens left from observed trades. Facts about what each wallet did; we do not label wallets.

wallets-YYYY-MM-DD.jsonl.gz · .parquet · Fields and limits

See what it looks like, free

Start here fits in ChatGPT/Claude

Try this

Drop graduates-2026-10-10-1400-1600utc.csv into ChatGPT or Claude and ask: Which coins touched 2x in their first 10 minutes, and what did they have in common? Which ones fell 80% and when did the first big sell come?

A full day is the same sheet, about 200 KB, still fits in the app: $10.

Test on a full day: $10 one UTC day, gradtrades + pregrad + wallets, JSON lines and Parquet, once, no subscription What to do with the sample

Field-by-field schemas for all eight datasets are under For developers: full schemas below and in the README. The two free files are cut from the October 10 gradtrades day file (14:00–16:00 UTC) by the same export as the files for sale.

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.

type"pool"row type
tnumberms when fetched
poolstringDLMM pool address
pricenumberpool's current price (quote per base token, as Meteora reports it)
tvlUsdnumbertotal value locked, US$
vol24hUsdnumberrolling 24 h volume, US$
fees24hUsdnumberrolling 24 h fees, US$
vol24hDeltaUsdnumber/nullchange in the rolling 24 h volume since the pool's previous row
feesMinUsdnumber/nullexact fees earned since the previous row (diff of Meteora's all-time cumulative fees); null on a pool's first row or a reset

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
Verify a download

SHA-256 of each free file:

180badc1ad3c6ec08ea2269ec4ad5a4c34119556184918bd67e65ec676551e30  graduates-2026-10-10-1400-1600utc.csv
4fc56af0221a66f1e91b304743172eeda3d0551975337f1942edd45d01871268  one-coin-odyssey-2026-10-10-1442-1512utc.csv
9513e2258b8f9b4f8891fbe6f02612ad9cec9a406e9e4268bf240d1d7feeec77  one-coin-odyssey-2026-10-10-1442-1512utc.jsonl

Save these lines as SHA256SUMS next to the downloads and run sha256sum -c SHA256SUMS, or download SHA256SUMS and MANIFEST.json (bytes, checksum and rows of each free file). Every day file ships with the same sidecar, <name>.manifest.json.

03

Reading the files

JSON lines (gzip) · also as Parquet · one CSV a day

Two clocks. Every row has t: milliseconds since 1970 UTC, when our recorder received the event. Rows read from the chain (trade, grad, ctrade) also carry bt, the block time in seconds, and slot. Order trades by slot then i (the trade's index inside its transaction) to get chain order; use t to know when a live bot could have known. In the sample, t runs about 0.7 s behind bt (median), 1.4 s at the 99th percentile. Files are cut on t, so a trade with a block time just before midnight UTC can sit at the top of the next day's file.

One file holds several row types with different fields, so tell your tool to look at every row, not just the first few.

Also as Parquet: reading the Parquet copies

Parquet. Every day file also comes as .parquet: the same rows in the same order, one typed column per field, ZSTD-compressed, and checked against the .jsonl.gz (same row count, rows equal) before it ships. Each file is one table whose columns are every field of every row type; a field a row does not have is null, so filter on type first. t stays integer milliseconds. Nested objects are structs (dicts in pandas) and arrays are lists. padfeed's usd is a map keyed by quote mint. A field that is text in one row type and an object or a number in another (pregrad's curve, src and cross) is a text column: the text as it is, or the object's JSON text. Every day of a dataset has the same columns, so a folder of days reads as one table.

Parquet: pandas

import pandas as pd

# a pregrad day loads in under a second (about 6 s from JSON lines)
df = pd.read_parquet("pregrad-2026-10-12.parquet")
rec = df[df["type"] == "record"]
funders = rec["creatorInfo"].str["funder"]    # nested fields are dicts

# gradtrades: read only the columns you need
cols = ["type", "bt", "slot", "i", "mint", "side", "user", "quoteAmount"]
trades = pd.read_parquet("gradtrades-2026-10-12.parquet", columns=cols)
trades = trades[trades["type"] == "trade"]

Parquet: DuckDB

-- every day you have, as one table
SELECT mint, count(*) AS trades, sum(quoteAmount) AS sol
FROM read_parquet('gradtrades-*.parquet')
WHERE type = 'trade'
GROUP BY mint ORDER BY sol DESC LIMIT 20;

-- padfeed's US$ prices: a map keyed by quote mint
SELECT t, usd['So11111111111111111111111111111111111111112'] AS sol_usd
FROM read_parquet('padfeed-2026-10-12.parquet')
WHERE type = 'qpx';
04

How it is collected

Public data only: the Solana chain (read through the public RPC, and a paid RPC for gap repair and holder snapshots), PumpPortal's free feed, public IPFS gateways for coin metadata, Meteora's public API and Jupiter's free price API. No private data, no logins, no social profiles.

Facts, not opinions. We sell what happened on chain (addresses, amounts, times), not our opinions about wallets: no "insider" or "rugger" labels. Our own trading wallets are removed from every file.

Checked before it ships. Every line is parsed and checked; malformed rows are dropped. Coverage gaps (a dropped connection, a coin skipped under our data budget) are written into the files as rows (down, up, resume, end with a why), never filled in or guessed.

05

Coverage and limits

read this before you rely on a window

Gaps are rows, not guesses

  • A dropped feed connection is written as a down row and an up row with their times; trades in between may be missing.
  • A coin picked up again after a restart gets a resume row; the gap before it is missing, not reconstructed.
  • Every followed coin ends with an end row and a why: window (30 minutes done), evicted (the 30-coin cap), budget (data budget).
  • curvetape writes a gap row for every stretch its live feed was off; launchmeta and gradholders write a row with err for every fetch or holder snapshot that failed.
  • pregrad: its feed of new coins and migrations was off 2026-10-14 09:31–13:01 UTC and 2026-10-14 15:16 to 2026-10-15 20:24 UTC (a fault, now fixed). The graduation records in those windows are there, but most lack ageS, many lack sym/name and creatorPctAtGrad, priorCoins24h/priorCoins72h read 0, and the create, migrate, curvex and ctrade rows are missing.
  • Nothing is interpolated or guessed. If a file has a hole, the hole is in the file; where a hole was later repaired from whole blocks, the repaired rows say so (src: "backfill").

What is not in gradtrades

  • Only coins whose cap at graduation is between 300 and 600 SOL are followed; the others get a grad row with follow: false and no trades.
  • At most 30 coins are followed at a time; when a 31st graduates, the oldest is evicted.
  • Each coin is followed for 30 minutes after graduation, nothing after that window.
  • Failed transactions are not included.
  • A coin picked up late has late: true and followFrom; trades before that time are missing.

What was removed before sale

  • Our own trading wallets, from every dataset.
  • Our internal "rogue" wallet list and every field derived from it: flags, priorRugged, the dumper role.
  • From pregrad: picture fingerprints and metadata URIs (they have their own dataset, launchmeta, which keeps no social links).
  • Heartbeat and stats rows.
  • No wallet labels of any kind are added. What is left is what happened on chain: addresses, amounts, times.

Checks before shipping

  • Every line is parsed as JSON and checked for type and t; malformed rows are dropped.
  • Files are cut at the UTC day boundary and published after the day closes.
  • The free files are cut from the same day files by the same export; their SHA-256 checksums are listed above, so you can check a download.
  • Known limits are written here and in the README, not hidden in a footnote.
For Python: reading the files

Python: pandas

import pandas as pd

# gradtrades is ~5M rows a day: read in chunks, keep what you need
chunks = pd.read_json("gradtrades-2026-10-10.jsonl.gz", lines=True, chunksize=500_000)
trades = pd.concat(c[c["type"] == "trade"] for c in chunks)
trades["ts"] = pd.to_datetime(trades["bt"], unit="s", utc=True)

DuckDB

-- sample_size=-1: scan every row, so every row type's fields are in the schema
SELECT type, count(*) AS n
FROM read_json_auto('gradtrades-2026-10-10.jsonl.gz', sample_size=-1)
GROUP BY type ORDER BY n DESC;

Shell: zcat + jq

# rows per type
zcat gradtrades-2026-10-10.jsonl.gz | jq -r .type | sort | uniq -c

# trades to CSV (pick your columns)
zcat gradtrades-2026-10-10.jsonl.gz \
  | jq -r 'select(.type=="trade") | [.bt,.slot,.i,.mint,.side,.user,.baseAmount,.quoteAmount,.price] | @csv' \
  > trades-2026-10-10.csv

One day and One week are single payments. Full history covers 31 days; nothing renews by itself. A few days before the end we email you a link to renew. Each day is one file per dataset, so a big history downloads file by file (gradtrades is about 0.8 GB a day). Solana network only; other chains on request.

07

File formats & delivery details

Where do I start?

See what it looks like, free: the graduates CSV (105 coins, 2 hours, 19 KB) and one coin's every trade (30 minutes, 0.4 MB). Both fit in ChatGPT or Claude. Then test on a full day for $10: every graduate of one UTC day, trade by trade, with who was behind each launch.

How do I get the files after paying?

Choose what you want, give your email, press Pay. A browser wallet (Phantom, Solflare, Backpack) opens with everything filled in; on a phone, Open in wallet app does the same; on a computer without a wallet, scan the QR code with your phone. We see the payment on the Solana network within a minute or two and email you a private download link. Not in your inbox? Check your Spam (and Promotions) folder: new senders often land there; mark it Not spam and the next ones arrive normally. No account, no login. The link works for 7 days (14 for Full history); each day on it comes as .jsonl.gz and .parquet, with its manifest beside them (row counts, SHA-256). Paid some other way and nothing arrived? Send us the transaction signature through the contact form and we match it by hand.

What exactly is a file?

One dataset, one UTC day, gzipped JSON lines: gradtrades-2026-10-10.jsonl.gz holds every gradtrades row from 00:00:00 to 23:59:59 UTC on October 10, one JSON object per line. Typical gzipped sizes (Oct 10–13 2026): gradtrades about 0.8 GB, curvetape about 0.75 GB, pregrad 22–70 MB, meteora-pools 19 MB, launchmeta 14 MB, padfeed 3–4 MB, gradholders about 1 MB. Each day also comes as Parquet, gradtrades-2026-10-10.parquet: the same rows as typed columns for pandas, DuckDB, Polars or Spark, checked against the JSON lines before it ships (same days: gradtrades about 0.6 GB, pregrad 19–22 MB, meteora-pools about 3 MB, padfeed 2–3 MB). The daily feed is the same files, one set per day, sent after each UTC day closes.

08

Licence

Allowed

  • Personal and research use.
  • Use inside your own team.
  • What you build from it (charts, papers, models, strategies) is yours.

Not allowed

  • Resale of the files.
  • Republishing the files or large extracts of them.
  • Sharing outside your own team.

Warranty

Not financial advice. Files are provided as described; see the guarantee under Pay. Coverage gaps are marked, not filled; read the limits above before relying on a window.

09

Contact

Questions, missing payments, custom requests · answer within a day

What helps

  • A payment question: the transaction signature, so we find your transfer.
  • A custom request (other days, other chains, a field you need): what you want and what for.
  • We answer at the email address or handle you give, usually within a day. Your message is used only to answer you.

Start with something you can open.

Try the free sample before choosing a plan.

Try the free sample ↑