Skip to main content

Data Stream – WebSocket API

Use this endpoint to stream live:

  • Solana and tokens transfers
  • Pump.fun
  • PumpSwap
  • Raydium Launchpad (Bonk)
  • Raydium-CPMM
  • Meteora Launchpad (Bags, moonshot)
  • Meteora DAMM V1
  • Meteora DAMM V2

Subscribing delivers every event the moment it happens — transfers, token creations, buys, sells, migrations, pool creations, adding and removing liquidity.

Endpoint

wss://stream.pumpapi.io/

Filter on the client. The server sends all events.
One connection only. Open a single WebSocket per client and reuse it to avoid rate limits.
Reconnect logic. Connections can drop (for example, due to server-side updates or your network issues). You should implement automatic reconnection in your client.

📦 Code Examples

import asyncio
import websockets
import orjson as json # or use the standard json module (orjson is faster)

async def pumpapi_data_stream():
uri = "wss://stream.pumpapi.io/"
async with websockets.connect(uri) as websocket:
async for message in websocket:
event = json.loads(message)
print(event) # {'txType': 'buy', 'pool': 'pump', ...}

asyncio.run(pumpapi_data_stream())

Event Examples

{
"signature": "3mGAAs4CkM86s3bN8Jkt2EZRGf7ZVkbgNk2pV3STrEof8nCdFg5kqWdFyohp23uFVwierCvdeuXBzy3QDwNdaX4L",
"txType": "transfer",
"txSigner": "YubQzu18FDqJRyNfG8JqHmsdbxhnoQqcKUHBdUkN6tP",
"transfers": [
{
"from": "YubQzu18FDqJRyNfG8JqHmsdbxhnoQqcKUHBdUkN6tP",
"to": "2XxKhfVBna1Jjs5PdCQmjAXHg6NnFXoNVEHfEz2ZnnL8",
"amount": 500.0,
"isSolana": False,
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"
},
{
"from": "YubQzu18FDqJRyNfG8JqHmsdbxhnoQqcKUHBdUkN6tP",
"to": "2XxKhfVBna1Jjs5PdCQmjAXHg6NnFXoNVEHfEz2ZnnL8",
"amount": 0.00002,
"isSolana": True, <----- is TRUE when mint is Sol or WSOL (wrapped sol)
"mint": "So11111111111111111111111111111111111111111"
}
],
"block": 388677942,
"timestamp": 1766513012579
}

Glossary

FieldDescription
signatureTransaction signature on the Solana blockchain.
txTypeTransaction type — one of transfer, create, buy, sell, migrate, createPool, add, remove.
poolIdis the unique pool address. By using it, you can see the pool reserves. Tip 1: You can get the Solana price without any external API. Just check if poolId equals Gf7sXMoP8iRw4iiXmJ1nq4vxcRycbGXy5RL8a8LnTd3v. This is the largest SOL–USDC pool on pump-amm, so you can read the Solana price from it. Tip 2: You can pass this address to the trade API using 'poolId': 'address' to trade a token from a specific pool. This is useful for arbitrage. If you do not pass this parameter, we automatically choose the best pool. This means you can even trade USDC at the best price using our trading API, without visiting any websites.
mintToken mint address.
quoteMintThe second token used in the trade. We send this parameter only if quote token is NOT Solana. By default, quoteMint is Solana, so we do not send it. For example, in some pools you can buy a token only with USDC, USDT, or another token. In these cases, we send quoteMint, and its address.
txSignerThe public key of the account that sent the transaction and paid the priorityFee. Important: if you build a copy trader or something similar, use tradersInvolved, not txSigner. This is because sometimes traders send a transaction where txSigner is a different account, but the trade uses funds from the account you track. In this case, the account you track will be in the tradersInvolved dictionary.
tokenAmountAmount of mint tokens involved in the transaction.
solAmountThe amount of SOL involved in the transaction. This is returned only when the second (quote) token in the trading pair is Solana. If the quote token is something else (e.g., USDT or USDC), you will receive quoteAmount instead.
quoteAmountThe amount of the quoteMint token involved in the transaction. This is returned only when the second token in the trading pair is not Solana.
tokensInPoolTotal amount of the main token (mint) currently in the liquidity pool. This shows how many tokens are available for trading on the token side.
solInPoolTotal amount of SOL currently locked in the liquidity pool. This field is present only when SOL is the quote token. It represents SOL liquidity available for trades.
quoteInPoolTotal amount of the quote token (quoteMint) locked in the liquidity pool. This field is present only when the quote token is NOT SOL (e.g. USDC, USDT). It represents liquidity on the quote side.
vTokensInBondingCurveVirtual token reserves in the bonding curve pool. Reflects liquidity available on the token side. This field is present only when the pool is pump or raydium-launchpad.
vSolInBondingCurveVirtual SOL reserves in the bonding curve pool. Reflects liquidity available on the SOL side. This field is present only when the pool is pump or raydium-launchpad and when quote token is Solana. If it's anything else (like USDC/USDT/etc.) you will get vQuoteInBondingCurve instead.
vQuoteInBondingCurveVirtual Quote reserves in the bonding curve pool. Reflects liquidity available on the Quote side. This field is present only when the pool is pump or raydium-launchpad and when quote token is NOT Solana (like USDC/USDT/etc.). If it's Solana you will get vSolInBondingCurve instead
pricePrice in quoteMint (usually SOL) including this transaction’s impact.
marketCapSolMarket capitalization in SOL. We send this only when quote mint is Solana.
marketCapQuoteMarket capitalization in Quote. We send this only when quote mint is NOT Solana. (like USDC, USDT, etc.)
poolLiquidity source. Before migration, the value is either pump or raydium-launchpad. After migration, pumppump-amm, raydium-launchpadraydium-cpmm, meteora-launchpadmeteora-damm-v1/ meteora-damm-v2.
minPriceAvailable only in Meteora DAMM V2. Indicates the minimum price configured for the pool.
maxPriceAvailable only in Meteora DAMM V2. Indicates the maximum price configured for the pool.
curveTypePresent only in Meteora DAMM V1. Indicates the formula used for price calculation. Can be constantProduct (the most common one, based on the quote-reserve/base-reserve ratio) or StableSwap (ideal for stablecoin-to-stablecoin pools, keeping the price close to 1:1 even when reserves differ).
poolFeeRateIndicates the current fee rate in the pool. Can range from 0 to 1, where 0.1 represents 10% and 0.001 represents 1%.
poolCreatedByindicates who created the pool on pump-amm, raydium-cpmm, meteora-damm-v1, or meteora-damm-v2. If the pool was created by migration, the value is pump, raydium-launchpad, or meteora-launchpad. Pools migrated from pump and raydium-launchpad are considered trusted, but pools migrated from meteora-launchpad can be risky because Meteora allows config creators to choose how much liquidity share the pool creator receives after migration. Always check lockedLiquidityAfterMigration before relying on such pools. If the pool was created manually, the value is custom. Be cautious with these pools as well.
lockedLiquidityAfterMigrationPresent only in Meteora Launchpad. Shows what percentage of liquidity will be locked after migration. Beware of values below 100%, as the pool or launchpad creator can withdraw the liquidity after the migration (rug pull).
poolFeeRateAfterMigrationPresent only in Meteora Launchpad. Indicates what the poolFeeRate will be after migration. Meteora Launchpad allows values up to 0.1 (10%)
migrationThreshholdsPresent only in Meteora Launchpad and Raydium Launchpad. Indicates the required solInPool or quoteInPool value for a migration to occur. Pump.fun always uses a fixed requirement of 85 SOL.
burnedLiquidityshows what percent of liquidity is burned (for example, "99%"). Liquidity means someone adds Solana (or another quote token) and tokens into the pool. Normally, liquidity providers earn fees from trades and can withdraw their share at any time. If one person owns 100% of the liquidity, they can withdraw 100% and drain the pool, even after others buy the token. Pools with 0% burned liquidity are very risky because the owner can rug pull, and you will not be able to sell the token. Launchpads like pump.fun and partly raydium-launchpad burn the right to withdraw liquidity after migration. So if a pool has 20–30% or more burned liquidity, it is a good sign, because this part will always stay in the pool for trading.
cashbackEnabledindicates whether you are accumulating cashback for trading in this pool. Such pools exist on pump.fun and pumpswap. To claim your accumulated cashback, call claimCashback
creatorFeeAddressIt shows the address that receives the creator fees on pump.fun and pumpSwap if cashbackEnabled is False. Important: this address can change, since the real token creator has the right to modify it. Often, this address is the same as the one that originally created the token. The value may be None because not all pools have creator fees enabled.
mayhemModeIndicates whether “mayhem mode” is active for pump or pump-amm pools. true means mayhem mode is on, false means it’s off. (Other pool types don’t have this field.)
launchpadConfigThe address where the settings for the Meteora or Raydium launchpad are stored. Anyone can create their own config on these launchpad.
mintAuthorityAddress that has permission to mint new tokens. This must always be None — otherwise it’s a red flag for a potential scam. Only stablecoins usually have a non-None value. More info
freezeAuthorityAddress that can freeze token accounts. This must always be None — a non-None value can indicate a honeypot or scam. Only stablecoins may have this set for regulatory reasons. More info
tokenProgramToken program used to create the token — either spl-token (legacy) or spl-token-2022 (newer standard). More info
tokenExtensionsToken extensions are only present in spl-token-2022 tokens. Be cautious — some extensions can be used by scammers! (This does not apply to tokens from pump.fun, Bonk, or other trusted launchpads.) Check our guide to learn which extensions are safe.
tradersInvolvedAddresses that actually executed the trade (spent funds). This field is critical for copy trading and analytics. A transaction may be signed and paid for by one address (txSigner), while the trade itself is executed using funds from another address. In such cases, txSigner shows the fee-payer, but tradersInvolved contains the real trader. Always track accounts by tradersInvolved, not txSigner, or you may miss trades. Visualization
typeIt appears only in transfer events. It shows which method was used to make the transfer — for example, token_account_closure or withdraw_from_nonce
isSolanaOnly in transfer events. Indicates whether the mint represents Solana. True if the mint is native SOL or WSOL (Wrapped SOL); otherwise False.
blockBlock number in which the transaction was included. New blocks are produced every 400 ms
timestampBlockchain timestamp of transaction.