The Pump.fun API end to end: detect launches, read bonding curve progress, catch graduations to PumpSwap. Measured graduation rate: 2.7%, median two minutes.

Pump.fun launched 282,428 new tokens in the seven days to 2 September 2026. That works out to one new token every two seconds for seven straight days, and it was not an unusual week.

Almost none of them matter. Of the tokens that launched on 13 August, 2.69% ever reached a PumpSwap pool. The other 97.3% died on the curve. Of the ones that did graduate, the median took two minutes, which tells you most of what you need to know about the latency budget for anything you build here.

If you are building a trading terminal, a sniper, a screener or a research dashboard on Solana, this is the feed you have to handle. In this article, we cover what Pump.fun does at the program level, then the Pump.fun API queries that turn it into structured data you can use.

Every figure below was measured on 3 September 2026 against live Solana data using Bitquery’s Pump.fun API. Where a number is a proxy rather than a direct measurement, I say so.

How the Pump.fun bonding curve works

Pump.fun is a bonding-curve launchpad, and it is the design everything else copied. Unlike its EVM imitators, it does not deploy a contract per token. One Solana program serves every token on the platform.

A token moves through four stages.

Launch. A creator calls create or create_v2 on the Pump.fun program at 6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P. The program mints a fixed supply of one billion, opens a bonding curve, and writes the name, symbol, metadata URI and creator into the instruction. Bitquery decodes that program under the name pump, so you can filter on Program: { Name: { is: “pump” } } instead of memorising the address.

Curve trading. Buys and sells go against the curve rather than a pool. Price rises as the curve’s base balance falls. There is no per-token curve account to chase, because the mint address is what separates one token’s trades from another’s.

Graduation. When the curve’s base balance reaches 206900000, the token has completed the curve. That constant is the cleanest tripwire in the whole system: one equality filter on DEXPools, no event decoding, no market-cap arithmetic.

Open-market trading. A create_pool instruction on the PumpSwap AMM at pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA opens the real pool, and trading continues there.

One detail catches people on the first pass. The curve is not SOL-only. Over the measured week, 27,207,356 curve fills were quoted in SOL and 883,830 in USDC, which is 3.1% of trades and 2.4% of volume. Small enough to miss by accident, large enough to skew a USD column if you hardcode SOL as quote.

What a million Pump.fun launches looks like

Counting tokens whose first curve trade fell inside the window:

5 August to 2 September 2026, 29 full days: 1,109,779 tokens27 August to 2 September, seven days: 282,428 tokensDaily range across the month: 30,663 at the low, 52,438 at the highNew tokens per day on Pump.fun, 5 Aug — 2 Sep 2026. Source: Bitquery.

Over that same week the bonding curve carried 28,091,186 trades from 515,432 distinct traders across 323,089 distinct tokens, on roughly $1.14B of quote-side volume. The average fill was $40.45 and the median was $10.13. A very long tail of very small bets.

Pump.fun graduation rate: 2.7%, in a median of two minutes

The graduation rate is the number most people get wrong, so it is worth measuring properly. Take a single day’s launch cohort and follow it forward, instead of dividing today’s graduations by today’s launches. Four cohorts, each followed to 2 September:

Launched 6 August: 35,183 tokens, 998 reached PumpSwap, 2.84%Launched 13 August: 38,835 tokens, 1,045 reached PumpSwap, 2.69%Launched 20 August: 40,934 tokens, 1,066 reached PumpSwap, 2.60%Launched 26 August: 49,530 tokens, 1,535 reached PumpSwap, 3.10%

Call it 2.7%, stable within half a percentage point across four independent cohorts.

Share of each day’s launch cohort that reached PumpSwap by 2 Sep 2026, against the naive same-week method. Source: Bitquery.

The naive method gives you something very different. 34,576 new PumpSwap pools appeared during the week against 282,428 launches, which reads as a 12.2% graduation rate and is wrong by more than four times.

Speed is the other half of the picture. For the 13 August cohort’s 1,045 graduates, 1,038 of which have a cleanly ordered pair of timestamps, the gap between first curve trade and first pool trade:

25th percentile: under one minuteMedian: two minutes75th percentile: 13 minutes901 of 1,038, or 86.8%, inside the first hour992 of 1,038, or 95.6%, inside the first day

Launch-to-graduation time, 13 Aug 2026 cohort, n=1,038. Source: Bitquery.

There is no slow burn. A token either clears the curve almost immediately or it never does. Anything polling on a one-minute cron has already missed the median graduation, which is why the queries later in this article are written as subscriptions rather than as scheduled requests.

47% of PumpSwap’s volume is 940 mints borrowing ten names

This is where the graduation pipeline stops explaining PumpSwap.

Of the 34,576 tokens that got their first PumpSwap trade during the week, only 8,745, or 25.3%, had ever traded on a Pump.fun bonding curve. Three quarters of PumpSwap’s new listings did not graduate onto it. Somebody opened a pool for them directly.

Widen that to all PumpSwap activity for the week and the split gets sharper. Curve-origin tokens carry 42.1% of the trades but only 7.1% of the volume.

So where is the volume? Group the week’s PumpSwap trades by token symbol. Each line below is one symbol, the number of separate mints trading under it, that symbol’s total volume, and the median fill size:

AAPL — 180 mints, $3.53B, median fill $982Anthropic — 212 mints, $3.47B, median fill $1,459NVDA — 41 mints, $2.24B, median fill $1,104OPENAI — 41 mints, $1.84B, median fill $1,124HOOD — 104 mints, $1.80B, median fill $961GOOGL — 92 mints, $1.75B, median fill $980META — 64 mints, $1.73B, median fill $960MSFT — 63 mints, $1.30B, median fill $894ROCKSTAR — 124 mints, $1.23B, median fill $823UMIA — 19 mints, $1.16B, median fill $1,072

Ten symbols. 940 distinct mints. $20.05B of $42.44B total PumpSwap volume, or 47.2%. Essentially none of it came off a bonding curve: 37 of those 940 mints ever saw a curve trade, and they carry 0.0% of the volume once you round to a single decimal.

PumpSwap volume by token symbol, 27 Aug — 2 Sep 2026. Source: Bitquery.

To be explicit, because the tickers invite the wrong assumption: these are Solana tokens that use those names and symbols. They are not issued by, affiliated with, or endorsed by Apple, Anthropic, Nvidia, OpenAI, Robinhood, Alphabet, Meta, Microsoft or Take-Two, and they are not equity in any of them.

The pattern inside one of these pools is worth looking at directly. Taking the largest UMIA mint for the week: 223,927 buys worth $184.23M against 169,650 sells worth $183.55M, balanced to within 0.4%. 4,746 addresses bought and 1,605 sold, averaging 106 sells each. Median fill was $1,044 on the buy side and $1,141 on the sell.

Two-sided flow balanced to a fraction of a percent, fill sizes clustered in a narrow band around $1,000, and the same ten names re-minted 940 times. I am not going to characterise the intent from a query. What I will say is that the shape of it does not look like price discovery, and a screener that ranks on volume will put all of it on the front page.

One wallet made 17% of every bonding-curve trade

Back on the curve, concentration is worse than the launch counts suggest.

Over the week, the address Gygj9QQby4j2jryqyqBHvLP7ctv2SaANgh4sCb69BUpA made 4,829,570 bonding-curve trades. That is 17.19% of every fill on the entire launchpad, from one wallet, at roughly eight trades per second sustained for seven days.

Its shape is unambiguous: 2,412,205 buys and 2,417,365 sells, $26.71M bought against $26.61M sold, median fill $2.40, spread across 64,979 distinct tokens. It produces 17% of the trade count and 4.7% of the volume.

The top ten wallets together made 22.22% of all curve trades, and the top hundred made 29.19%. At the other end of the distribution, 75,236 addresses made exactly one trade all week.

Share of Pump.fun bonding-curve fills by wallet rank, 27 Aug — 2 Sep 2026. Source: Bitquery.

The consequence for anything you build: do not rank on trade count. The two highest-volume curve tokens of the week, LAKEUSA at $3.78M and BLAJUG at $999.7k, had 54 and 28 unique traders respectively. The third, fone at $420.1k, had 1,683. A trending list sorted by volume or fills will surface the first two and bury the third. Sort on unique traders, or carry both and let the gap between them be the signal.

Querying Pump.fun data with the API

Bitquery serves Solana as GraphQL at https://streaming.bitquery.io/graphql. Three cubes matter here.

Solana.Instructions and Solana.TokenSupplyUpdates give you launches, creators and metadata. Solana.DEXTrades, DEXTradeByTokens and DEXPools give you curve fills, pool state and bonding curve progress. Trading.Trades gives you normalised trades with USD price, market cap and supply on every row, with curve trades under ProtocolFamily: “Pumpfun” and graduated pools under “Pumpswap”.

Grab a free key from the Bitquery IDE and send it as a bearer token.

How to detect every new Pump.fun launch

Every launch is a create or create_v2 call on the Pump.fun program:

subscription {
Solana {
TokenSupplyUpdates(
where: {
Instruction: {
Program: {
Address: { is: “6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P” }
Method: { in: [“create”, “create_v2”] }
}
}
}
) {
Block { Time }
Transaction { Signer }
TokenSupplyUpdate {
Amount
PostBalance
Currency {
Name
Symbol
MintAddress
Decimals
Uri
UpdateAuthority
}
}
}
}
}

Transaction.Signer is the creator. Currency.Uri points at the off-chain metadata, and MintAddress is the key every other query joins on. Name, symbol and decimals arrive in the same row, so there is no separate metadata lookup in the hot path.

How to get a Pump.fun token’s creator and creation time

Working backwards from a mint, instead of forwards from the firehose:

query {
Solana(network: solana) {
Instructions(
where: {
Instruction: {
Accounts: { includes: { Address: { is: “MINT_ADDRESS” } } }
Program: {
Name: { is: “pump” }
Method: { in: [“create”, “create_v2”] }
}
}
}
) {
Block { Time }
Transaction { Signer Signature }
Instruction { Accounts { Address } }
}
}
}

One row, and it is the token’s birth certificate. Swap the mint filter for a signer filter and you get every token that developer has ever launched, which given the concentration above is usually the first thing worth checking about a new launch.

How to stream Pump.fun bonding curve trades

subscription {
Trading {
Trades(
where: { Pair: { Market: { ProtocolFamily: { is: “Pumpfun” } } } }
) {
Block { Time }
Side
Price
PriceInUsd
Amounts { Base Quote }
AmountsInUsd { Base Quote }
Trader { Address }
Supply { MarketCap TotalSupply }
Pair {
Token { Address Symbol }
QuoteToken { Symbol }
Market { Address Program }
}
}
}
}

That is every bonding-curve fill on Solana, USD-priced, with market cap attached, all 28 million a week of them. Add Pair: { Token: { Address: { is: “MINT” } } } to watch a single token.

Take that mint from the token’s own create instruction rather than copying one out of an article. Most curves go quiet within hours, so a hardcoded address returns an empty result more often than not.

How to get Pump.fun bonding curve progress

To see how close a token is to graduating, read the pool state instead of summing trades:

query ($pairAddress: String) {
Solana {
DEXPools(
where: {
Pool: { Market: { MarketAddress: { is: $pairAddress } } }
Transaction: { Result: { Success: true } }
}
limit: { count: 1 }
orderBy: { descending: Block_Time }
) {
Pool {
Base { Balance: PostAmount PostAmountInUSD }
Quote { PostAmount PostAmountInUSD }
Market {
BaseCurrency { Name Symbol }
QuoteCurrency { Name Symbol }
}
}
}
}
}

Base.PostAmount counting down toward 206900000 is the progress bar. There is no percentage field to look for, and you do not need one.

How to catch a Pump.fun graduation to PumpSwap

Two signals, and you want both. The last curve trade before the flip:

{
Solana {
DEXPools(
where: {
Pool: {
Dex: { ProtocolName: { is: “pump” } }
Base: { PostAmount: { eq: “206900000” } }
}
Transaction: { Result: { Success: true } }
}
orderBy: { descending: Block_Time }
) {
Transaction { Signer Signature }
Pool {
Base { ChangeAmount PostAmount }
Quote { PostAmount PostAmountInUSD PriceInUSD }
Market { BaseCurrency { MintAddress Symbol } MarketAddress }
}
}
}
}

And the pool opening on PumpSwap, which is the confirmation:

subscription {
Solana {
Instructions(
where: {
Instruction: {
Program: {
Address: { is: “pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA” }
Method: { is: “create_pool” }
}
}
}
) {
Block { Time }
Transaction { Signer Signature }
Instruction {
Accounts { Address Token { Mint Owner } }
Program { Method AccountNames Json }
}
}
}
}

Given a two-minute median, run the second one as a subscription and treat the first as reconciliation.

How to stream it live over WebSocket

Any query above becomes a subscription. Change query to subscription, drop limit and orderBy, and connect to wss://streaming.bitquery.io/graphql?token=YOUR_TOKEN. Three subscriptions, covering launches, curve trades and create_pool, give you the whole launchpad in real time. Aggregates such as sum, count and OHLC buckets are query-only, so run those on a schedule and keep the streams raw.

Pump.fun API FAQ

What is the Pump.fun program ID?

6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P on Solana mainnet. That single program handles creation and all bonding-curve trading for every Pump.fun token. The PumpSwap AMM that graduated tokens move to is a separate program at pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA.

What is the Pump.fun graduation market cap threshold?

There isn’t one, and this is the single most common wrong assumption about the launchpad. The on-chain graduation condition is a token-balance constant: the curve’s base balance reaching 206900000. It is denominated in tokens, not dollars.

That constant is easy to sanity-check from trade data, and worth doing once so you trust it. Supply is one billion, so completion means 793,100,000 tokens have been sold off the curve. Summing net base flow on the curve for tokens that graduated during the measured week gives a median of 793.10M tokens, matching the constant exactly.

The USD market cap that corresponds to floats with the SOL price and with where the token’s price sat when it completed. Measuring the last curve trade before graduation put the 10th percentile near $11k and the 90th near $101k, with a median around $38k — a range too wide to be a threshold. Any article quoting you a single fixed dollar figure is quoting a conversion that was true on one day. Filter on the balance constant instead.

Does Pump.fun still migrate to Raydium?

No. Graduated Pump.fun tokens migrate to PumpSwap, Pump.fun’s own AMM, and the migration shows up as a create_pool instruction on pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA. Plenty of guides still describe a Raydium migration, which was the older behaviour. If your indexer is watching Raydium pool creation for graduations, it has been silently missing all of them.

What is PumpSwap?

The AMM Pump.fun runs for tokens that complete the bonding curve. As the numbers above show, it is no longer only a graduation venue: three quarters of the pools opened on it during the measured week were for tokens that never traded on a Pump.fun curve at all, and those tokens carry the overwhelming majority of its volume.

What is Mayhem mode on Pump.fun?

A launch variant, and the useful part for anyone indexing is that it is detectable at creation without decoding anything exotic. A standard launch shows one transfer of 1,000,000,000,000,000 base units, which is one billion tokens at six decimals. A Mayhem-mode launch shows two. Count them and you have the flag, historically as well as live. The Pump.fun API docs have the query.

Is there a free Pump.fun API?

You can generate a free key in the Bitquery IDE and run every query in this article against it, within the free tier’s limits. The docs page has the current tiers, and if you are choosing between providers rather than getting started, I compared them in Best Pump.fun APIs in 2026.

Is Pump.fun on any other chain?

Not as Pump.fun. The program is Solana-only and every address in this article is a Solana address.

The design has been copied widely, though, and a cross-chain screener needs each one handled separately because they share no event shape. Pons on Robinhood Chain is the closest analogue, an EVM rebuild on Uniswap v4 that deploys a curve contract per token and lets the creator choose the quote asset, including tokenised equities. pools.trade on the same chain has no bonding curve at all, and its tokens open as a Uniswap v4 pool from the first block. Comparing graduation rates across the three is the most interesting thing you can do with those feeds, and reusing Pump.fun’s assumptions is the fastest way to publish a wrong number.

Where to go next

The full reference lives in the Pump.fun API documentation and the PumpSwap API documentation, which between them cover token creation, Mayhem-mode detection, OHLCV, first-100-buyers, dev holdings, top creators, market-cap filters, migration tracking and creator-fee transfers.

At 40,000 launches a day and a two-minute median to graduation, polling stops being an option early. The instructions above are the entire surface area of the launchpad.

All figures were measured on 3 September 2026 against Solana via Bitquery. The window is 27 August to 2 September 2026, seven full days, unless stated; the 29-day figure covers 5 August to 2 September.

Disclosure: this post contains no affiliate or referral links. I work on data tooling at Bitquery, whose API produced the measurements above.

Pump.fun API: How to Track Bonding Curves, Graduations and PumpSwap On-Chain was originally published in Coinmonks on Medium, where people are continuing the conversation by highlighting and responding to this story.

By

Leave a Reply

Your email address will not be published. Required fields are marked *