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)
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
- Python
- JavaScript
- Rust
- Go
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())
import WebSocket from 'ws'; // npm i ws
const ws = new WebSocket('wss://stream.pumpapi.io/');
ws.on('message', data => {
const event = JSON.parse(data);
console.log(event); // { txType: 'create', pool: 'pump', ... }
});
ws.on('error', console.error);
use futures_util::StreamExt;
use serde_json::Value;
use tokio_tungstenite::connect_async;
use url::Url;
#[tokio::main]
async fn main() {
let url = Url::parse("wss://stream.pumpapi.io/").unwrap();
let (mut ws, _) = connect_async(url).await.expect("Failed to connect");
while let Some(msg) = ws.next().await {
if let Ok(msg) = msg {
if msg.is_text() {
let event: Value = serde_json::from_str(msg.to_text().unwrap()).unwrap();
println!("{:?}", event);
}
}
}
}
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"nhooyr.io/websocket"
)
func main() {
ctx := context.Background()
c, _, err := websocket.Dial(ctx, "wss://stream.pumpapi.io/", nil)
if err != nil {
log.Fatal(err)
}
defer c.Close(websocket.StatusNormalClosure, "")
for {
_, data, err := c.Read(ctx)
if err != nil {
log.Fatal(err)
}
var event map[string]interface{}
json.Unmarshal(data, &event)
fmt.Println(event)
}
}
Event Examples
- Transfer
- Create
- Trade
- Migration
- Create Pool
- Liquidity Change
{
"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
}
- Pump.Fun
- Raydium Launchpad (Bonk)
- Meteora Launchpad (Bags, moonshot)
{
"signature": "5Ghn73B9AF2BMq2qgzXRSWdhVKzuRSyFCSqJB2YDVE3xhTWaQCdmvFXPvkyCTmfGmtDSx8nTbN57EXheFkHifJFv",
"txType": "create",
"poolId": "2JGj9Cey8kGqeFcHKCLtA4eDa51vFnodmffyouUuyVc9",
"mint": "63nfMyBt5wn3gL9n6bkMDgBBnRqM1HSPTLCoVfwmpump",
"txSigner": "6XgWuGkrQ6NUsubdBkX6dLDjQtc6rPV5HMhqei3VXNih",
"initialBuy": 82538461.538461,
"solAmount": 2.5,
"tokensInPool": 710561538.461539,
"solInPool": 2.5,
"vTokensInBondingCurve": 990461538.461539,
"vSolInBondingCurve": 32.5,
"price": 3.281298539919228e-8,
"marketCapSol": 32.81298539919228,
"name": "Derpy Cat",
"symbol": "DerpyCat",
"uri": "https://metadata.uxento.io/data/21aef64f-5937-4a78-b92a-cc43552fbee0",
"supply": 1000000000,
"pool": "pump",
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token-2022",
"tokenExtensions": {
"metadataPointer": {},
"tokenMetadata": {}
},
"tradersInvolved": {
"6XgWuGkrQ6NUsubdBkX6dLDjQtc6rPV5HMhqei3VXNih": {}
},
"decimals": 6,
"block": 388685781,
"timestamp": 1766516090833
}
{
"signature": "U233iEPoydNvp9qtdhe1vnkPfqx13xCqJGuwb9SchD8Wsot5jNvgkVkBxmSC9TYaRkiJVmCbvPWUzKNofLENauZ",
"txType": "create",
"poolId": "75TvGSQ1vY4U9nu1ec6BYMFcTxrhgoZdue3qeKffh3FR",
"mint": "2y9QrwZ8Nra3msHWwRgRef6BYUpX6BC8gbfMTFETbonk",
"quoteMint": "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB",
"txSigner": "AK3xvfDFtVGqhnyc6f9FMbk2CmcdJXPdPcaHteX7gs3F",
"initialBuy": 600.0,
"quoteAmount": 126985275.241391,
"tokensInPool": 873014724.758609,
"quoteInPool": 592.2,
"vTokensInBondingCurve": 946040330.3541,
"vSolInBondingCurve": 5004.090139,
"price": 5.28951037121957e-6,
"marketCapQuote": 5289.51037121957,
"name": "Unredacted",
"symbol": "UNREDACTED",
"uri": "https://metadata.uxento.io/data/69257b6d-0919-493f-9a9b-ea9ff06e0366",
"supply": 1000000000,
"quoteSupply": 134214379,
"pool": "raydium-launchpad",
"platform": "bonk",
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"AK3xvfDFtVGqhnyc6f9FMbk2CmcdJXPdPcaHteX7gs3F": {}
},
"decimals": 6,
"block": 388686737,
"timestamp": 1766516468407
}
{
"signature": "2Xp7kBjCYzCHnjmpSMWFE7xcwA5334Nmexwcy5k8CSHRdL7SVBj2kFSw5bqCqhE7Fk1BktYA3svrFdnqViQ31mzu",
"txType": "create",
"poolId": "EiGprjncyUT2ZvyDb3RBVg4Q9yLDseTkLcdue5VV1tzP",
"mint": "6SXsVhLvrrrkuC21UKdJcJaqgbZKQod1yqf4W9RiBAGS",
"txSigner": "BAGSB9TpGrZxQbEsrEznv5jXXdwyP6AXerN8aVRiAmcv",
"initialBuy": 93778682.662812,
"solAmount": 3.0,
"tokensInPool": 906221317.337188,
"solInPool": 2.94,
"price": 3.389131401321853e-8,
"marketCapSol": 33.891314013218526,
"name": "Claude AI Companion Potter",
"symbol": "IVY",
"uri": "https://ipfs.io/ipfs/QmdYkvFkgG4WvZENdJWNTcFBL5TgJwqEcVUBZdnbNWk6JH",
"supply": 1000000000,
"pool": "meteora-launchpad",
"lockedLiquidityAfterMigration": "100%", <--- Beware of values below 100%, as they could lead to a rug pull after the migration.
"launchpadConfig": "8AHQNccu9tWXFVjL3rpep1k3Bs9ANwZUm11Mv5xBG6se",
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"BAGSB9TpGrZxQbEsrEznv5jXXdwyP6AXerN8aVRiAmcv": {},
"7bTXuDnKk29XdNrM7bZXKSBHPB8Xd3vTKbUCfMAChv4J": {}
},
"decimals": 9,
"block": 396386656,
"timestamp": 1769565587245
}
- Pump.Fun
- Pump AMM
- Raydium CPMM
- Raydium Launchpad (Bonk)
- Meteora Launchpad (Bags, moonshot)
{
"signature": "3WtY7YKQs7S389VyeaTDc1W2xWgk2mxcsctvdk6giU23EmHEayBgzmgjvJDGSqNt1qgBSFJU4Mj7n78DvgqrSNkQ",
"txType": "sell",
"poolId": "BUh4jnn3MtMUu84VwWk66YCB3UNrjM5sqDqTbRecChRp",
"mint": "3sZAXYkuEtrqQFVzi4Yph4rZnmcTwYfRcrwexPZtpump",
"txSigner": "58FnazdGmCKZPeiMJ2rzujkeUR1HURr9cJNvVPxechKt",
"tokenAmount": 3590883.385939,
"solAmount": 0.145385418,
"tokensInPool": 613560183.804667,
"solInPool": 6.028466296,
"vTokensInBondingCurve": 893460183.804667,
"vSolInBondingCurve": 36.028466296,
"price": 4.0324646748753976e-8,
"marketCapSol": 40.32463420778884,
"pool": "pump",
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token-2022",
"tokenExtensions": {
"metadataPointer": {},
"tokenMetadata": {}
},
"tradersInvolved": {
"58FnazdGmCKZPeiMJ2rzujkeUR1HURr9cJNvVPxechKt": {}
},
"block": 388691279,
"timestamp": 1766518258664
}
- Pool created by Pump.Fun migration
- Custom pool
- Token-USDC pool (without SOL)
{
"signature": "63NbM8aanc3y2NjNp18sEFwv65qW4qzYLfQod8gmEGrGhKiBiGBH7fsHZ7MWbXLNP6RGTCznP4fGQu3YboCkdkwD",
"txType": "buy",
"poolId": "BP7s98rTsd5xTr2CgSVd9Lcpie3KF5yAkmohUgAp1No4",
"mint": "E9qgYkgok8aCFXWuvQiYM8krmDbeTuARLgrBjThWpump",
"txSigner": "52oc72vjNbpUhF7jNE1pPAvc17JwBTyxybFp3u7PvetG",
"tokenAmount": 321548.585603,
"solAmount": 0.33830352,
"tokensInPool": 135059178.605839,
"solInPool": 142.435011367,
"price": 1.0546118585741353e-6,
"marketCapSol": 1054.6034417168921,
"pool": "pump-amm",
"poolCreatedBy": "pump", <--- pool created through a pump.fun migration. You can trust these pools — you will be able to sell.
"burnedLiquidity": "100%", <--- means that no one has the ability to withdraw liquidity and perform a rug pull. But it doesn’t have to be 100% — even 30% of burned liquidity can be good, depending on the situation
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token-2022",
"tokenExtensions": {
"metadataPointer": {},
"tokenMetadata": {}
},
"tradersInvolved": {
"52oc72vjNbpUhF7jNE1pPAvc17JwBTyxybFp3u7PvetG": {}
},
"block": 388731952,
"timestamp": 1766534221298
}
{
"signature": "3fYZhMxTRAkxnqfs6P9KShx7AuaxUEKVtCBsP45reqbvrwubc8xk6MCfXBWTVQ3ByPZBgNUnLeC28L5D1WZq9C9q",
"txType": "sell",
"poolId": "HF9dDDhUu5EjCNTTe2vqvGp8y2SzYHG65RV8Ta1RGSTf",
"mint": "941B3sqimoBugHGRDikTaHRwCa5Bv98PEHPK1NFFEmFe",
"txSigner": "GJFEs6vbiWF42Sm4ZirZwSzyH5g2NkhetasBfq56rYR8",
"tokenAmount": 1182305.746851,
"solAmount": 0.590348816,
"tokensInPool": 825918325.932008,
"solInPool": 411.979377831,
"price": 4.988137021491824e-7,
"marketCapSol": 498.81347768301646,
"pool": "pump-amm",
"poolCreatedBy": "custom", <--- Be careful with pools on pump-amm where poolCreatedBy is not "pump"
"burnedLiquidity": "0%", <--- SCAM pool. 0% means that it’s possible to withdraw all the liquidity (remove 100% of the tokens and 100% SOL from the pool), so you will not be able sell bought tokens after that.
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"GJFEs6vbiWF42Sm4ZirZwSzyH5g2NkhetasBfq56rYR8": {},
"BhVaZzm4Qz7KFUsjWvqYMYWhC34jEMKdQbQK4ws9ycKX": {}
},
"block": 388691516,
"timestamp": 1766518353581
}
{
"signature": "2gAVP6wcY9xd9L1Gr4F3J2P8h8HS4akXci79Mj9D54vgfgvuZt7U1oX3KjQhHw4JfpvZ9Y1X1sYoAAs6B8xSnBJD",
"txType": "sell",
"poolId": "2uF4Xh61rDwxnG9woyxsVQP7zuA6kLFpb3NvnRQeoiSd", <--- you can open this address on solscan.io and see that there’s no SOL in this pool — only USDC and the token. To buy this token, you first need to buy the quoteToken (USDC) elsewhere.
"mint": "pumpCmXqMfrsAkQ5r49WcJnRayYRqmXz6ae8H7H9Dfn",
"quoteMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v", <--- address of the second token involved (in this case USDC)
"txSigner": "MfDuWeqSHEqTFVYZ7LoexgAK9dxk7cy4DFJWjWMGVWa",
"tokenAmount": 1413344.36767,
"quoteAmount": 2434.650564, <--- note that these pools use quoteAmount, not solAmount.
"tokensInPool": 3722501951.582035,
"quoteInPool": 6411226.583998, <--- note that these pools use quoteInPool, not solInPool.
"price": 0.0017222896501836024,
"marketCapQuote": 1722271139.078167, <--- note that these pools use marketCapQuote, not marketCapSol.
"pool": "pump-amm",
"poolCreatedBy": "custom",
"burnedLiquidity": "0%", <--- in this particular case, 0% is not a problem because this poolId is the official PUMP-USDC pool from the pump.fun team.
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token-2022",
"tokenExtensions": {
"transferHook": {},
"metadataPointer": {},
"tokenMetadata": {}
},
"tradersInvolved": {
"MfDuWeqSHEqTFVYZ7LoexgAK9dxk7cy4DFJWjWMGVWa": {}
},
"block": 388734360,
"timestamp": 1766535166075
}
- Pool created by Raydium Launchpad (Bonk) migration
- Token-USDC pool (without SOL)
{
"signature": "2CHuzsiFN94ptUneFuSUCn9miTCTnUX4AWSczCpzAFAa3Mb9RruLPuyTBRYYFXWKPNXSNMqAHJm3zGYuDE6aHcEw",
"txType": "sell",
"poolId": "4UN6WPJhfB9eoQq4XUwWiDj7NguW4iw9rx4iGBUguXcT",
"mint": "6Tph3SxbAW12BSJdCevVV9Zujh97X69d5MJ4XjwKmray",
"txSigner": "91WuBL56WNkLeXiFPQ1B1zDrHYNWo3KiC8Gp3FeJVCay",
"tokenAmount": 142506.761471,
"solAmount": 0.200875025,
"tokensInPool": 143086855.207232,
"solInPool": 201.996832141,
"price": 1.4117078179435069e-6,
"marketCapSol": 1411.489916606684,
"pool": "raydium-cpmm",
"poolCreatedBy": "raydium-launchpad", <---- pool created by raydium-launchpad (usually bonk), so you can trust it.
"burnedLiquidity": "91%",
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"HU23r7UoZbqTUuh3vA7emAGztFtqwTeVips789vqxxBw": {}
},
"block": 388738247,
"timestamp": 1766536690846
}
{
"signature": "3DNxxfNzKEG7VLiKE8E39Ss3y2vtxxVabdgS4S3brj4M7HmeMwE8Qi11EnnyEngFPvi5zqv5GBzGXUAwxCBuDK4t",
"txType": "sell",
"poolId": "4aqQuRPDZBH29Y2SrpWm94mzVNjikwciorVTitQqJG9f",
"mint": "J3NKxxXZcnNiMjKw9hYb2K4LUxgwB6t1FtPtQVsv3KFr", <---- one memecoin
"quoteMint": "2GPJhV9jNrj7TaLYMRgWkcy6sTKLcwntv7nZ7qDyMRGM", <— another memecoin (usually it’s Solana or stablecoins, but this pool uses another volatile token). To buy this token, you first need to buy the quoteToken elsewhere.
"txSigner": "3nMNd89AxwHUa1AFvQGqohRkxFEQsTsgiEyEyqXFHyyH",
"tokenAmount": 44.84029903,
"quoteAmount": 165.07403, <--- note that these pools use quoteAmount, not solAmount.
"tokensInPool": 72739.71645621,
"quoteInPool": 268287.940938, <--- note that these pools use quoteInPool, not solInPool.
"price": 3.6883281102630074,
"marketCapQuote": 378212218.3457152, <--- note that these pools use marketCapQuote, not marketCapSol.
"pool": "raydium-cpmm",
"poolCreatedBy": "custom",
"burnedLiquidity": "0%",
"mintAuthority": "BCD75RNBHrJJpW4dXVagL5mPjzRLnVZq4YirJdjEYMV7",
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"3nMNd89AxwHUa1AFvQGqohRkxFEQsTsgiEyEyqXFHyyH": {}
},
"block": 388739013,
"timestamp": 1766536990765
}
{
"signature": "5kLZfmUnb7mDnXyNZXSVGWcUdj8BFkyLauycWMYpM6j2GPg9VFjgRnyGdqU1yij8wWahseVj5AwXeyBTw8m2oDpj",
"txType": "buy",
"poolId": "BnHRVmtz66soqmGifK7725TXzxUN2oBEhVDs2LjkhYN6",
"mint": "rz9G7vCQBxPNrejMv4iVa3UyuxJasBAjjsmDnhnbonk",
"quoteMint": "USD1ttGY1N17NEEHLmELoaybftRBUSErhqYiQzvEmuB", <--- Address of the second token involved (in this case, USD1). To trade in this pool, you first need to buy the quoteMint (USD1)
"txSigner": "HKHMrsfW9rDc1KrT1gU4AmC5A2hvVqwRMujN5eegMLX8",
"tokenAmount": 0.227592,
"quoteAmount": 0.000012,
"tokensInPool": 239942135.99963,
"quoteInPool": 10714.496586,
"vTokensInBondingCurve": 312967741.595121,
"vSolInBondingCurve": 15126.386725,
"price": 0.00004833209533961698,
"marketCapQuote": 48332.095339616986,
"pool": "raydium-launchpad",
"platform": "bonk", <--- can be "bonk", "raydium-launchlab", or "custom". Anyone can create a platform on the Raydium launchpad — Bonk is just one of them
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"HKHMrsfW9rDc1KrT1gU4AmC5A2hvVqwRMujN5eegMLX8": {}
},
"block": 388764798,
"timestamp": 1766547117907
}
{
"signature": "H1BEPfpE9xhsj3ceZZRNSBQjZaqUYqUrJiLezNzpwesF3qyjG1Erkcahjv2o5GyvfgtNApLpfZeTDZWmKqkTJ2h",
"txType": "buy",
"poolId": "Dao29z2Mp2cbX52seasgwoAqhdrU7A65jFuf5zqmFBcY",
"mint": "5VcBvQUv2Vff6PvD31PsYDdsaW5osoSGAWYZijsXmoon",
"quoteMint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"txSigner": "EGfMbcTW9VG2re9Emu6BiFv5XnGj82CVqkyjnAjFqx21",
"tokenAmount": 62134.593839,
"quoteAmount": 20.519946,
"tokensInPool": 118904966.169866,
"quoteInPool": 35726.703212,
"price": 0.0003288291817948221,
"marketCapQuote": 328829.1817948221,
"pool": "meteora-launchpad",
"lockedLiquidityAfterMigration": "100%", <--- Beware of values below 100%, as they could lead to a rug pull after the migration.
"launchpadConfig": "FbKf76ucsQssF7XZBuzScdJfugtsSKwZFYztKsMEhWZM",
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"EGfMbcTW9VG2re9Emu6BiFv5XnGj82CVqkyjnAjFqx21": {}
},
"block": 396377157,
"timestamp": 1769561775158
}
{
"signature": "4nownD6mfEWqPobc7TrfYk6VyTiqdyzkXqgSbJb2hNVxsXoNfAQADJBRP3JzuYX921NTyY9TLNVZnREdcbo3D4NP",
"txType": "migrate",
"poolId": "8xLk84gnavkayCu4o345bgC7Qk4oRNtU2AS1PaTqujwH",
"mint": "3x2vP4L8D63AHh7DhLR2XuRuMT7CsMqDHwVKTdFepump",
"txSigner": "EbpZp7vbpGXH4J22dJQAnLVoqTH688rQeJuaPWvF2sbz",
"initialBuy": 0.0,
"solAmount": 0.0,
"tokensInPool": 206900000.0,
"solInPool": 84.99036005,
"price": 4.1077989391010155e-7,
"marketCapSol": 410.7798906238624,
"supply": 999999992,
"pool": "pump-amm",
"poolCreatedBy": "pump",
"burnedLiquidity": "100%",
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token-2022",
"tokenExtensions": {
"metadataPointer": {},
"tokenMetadata": {}
},
"tradersInvolved": {
"2pUhfahHvTXKmSKXEzHd77DJnRYH7cExRjfzGQaNqGyN": {}
},
"block": 388775295,
"timestamp": 1766551228263
}
- Pump AMM
- Raydium CPMM
{
"signature": "3BiAqMmm2dX4GjLdajKQnSTMLTC3oQzRVVTEKvKeFu7jSAcE3kFVq7u3BpoSasx77U2rBTArRgqossfiGaTP1iDh",
"txType": "createPool",
"poolId": "8yEwjGT16re94WAahxrvMg79smn5B8rzZgPTNWFzkW3K",
"mint": "DGvxoH8zEmatVbMMydMFDhsiofdgK2cFn6dPccNJ6hEg",
"txSigner": "JBHqRGJ9rVGzHg3DqzbFkh235kjvEiEMhBMQsU4fiAon",
"initialBuy": 0.0, <--- can be initialSell
"solAmount": 0.0,
"tokensInPool": 1000000000.0,
"solInPool": 200.0,
"price": 2e-7,
"marketCapSol": 200.0000002,
"supply": 1000000001,
"pool": "pump-amm",
"poolCreatedBy": "custom", <-- will always be "custom" in createPool events. If it’s "pump" or "raydium-launchpad", then it’s a migration event. But technically, these events are the same: migration = the memecoin launchpad creates the pool and burns liquidity; createPool = anyone else creates a pool.
"burnedLiquidity": "0%", <-- a typical scam pool. They create a pool with a lot of liquidity, but they can remove it later because it isn’t burned. The higher the burnedLiquidity, the lower the risk of a rug pull by the liquidity providers. This is what happens after they get enough buyers Z2QxTU9Z9njczyF9akMJbzhRotDRbU1ieByXQhPn4MgW6BcdJUvqYkATG5EyWyRCuG3HKZd3ms7CRjLZ5TdGhep (they remove 100% of the liquidity — not the initial 200 SOL, but 100% of the current SOL reserves, so they pull 270 SOL out of the pool).
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"JBHqRGJ9rVGzHg3DqzbFkh235kjvEiEMhBMQsU4fiAon": {}
},
"block": 388775128,
"timestamp": 1766551163729
}
{
"signature": "4j6NuFZSfXehhVVe9fw9dqwohWXUqcHVv53uGq5ypyQoh6ZhJFVworjC7EVNCJugvyayNP241ibadi4hjYbALFVi",
"txType": "createPool",
"poolId": "JBAdtP9nYk95z44KRrb8gHffUUr4HVKkuXDKReZ5HyXg",
"mint": "67BmAvfRHoxGPxbSMArCgmsLHfZnHFEhs7tiQSiXstY",
"txSigner": "B2pbyEKzER21sJuKzTsAN6Ve2u6iaQ4fyS56Gf3zfRDL",
"initialBuy": 0.0,
"solAmount": 0.0,
"tokensInPool": 90000000.0,
"solInPool": 0.5,
"price": 5.555555555555556e-9,
"marketCapSol": 5.555555555555556,
"supply": 1000000000,
"pool": "raydium-cpmm",
"poolCreatedBy": "custom",
"burnedLiquidity": "0%",
"mintAuthority": "B2pbyEKzER21sJuKzTsAN6Ve2u6iaQ4fyS56Gf3zfRDL",
"freezeAuthority": "B2pbyEKzER21sJuKzTsAN6Ve2u6iaQ4fyS56Gf3zfRDL",
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"B2pbyEKzER21sJuKzTsAN6Ve2u6iaQ4fyS56Gf3zfRDL": {}
},
"block": 388778410,
"timestamp": 1766552453146
}
- Add Liquidity
- Remove Liquidity
- Pump AMM
- Raydium CPMM
{
"signature": "4RcdMbUqHFCcMbZk3uCK8GyyAF5T8FtHkQq7ev1rwNvyw4W3Zr8ADkbqRBTVGGYT8EvLrYuu9WHnBznJgMYVADUm",
"txType": "add",
"poolId": "9HQoGtkzxsjDxCNRSLbGNtGGawvB2N1QBUnxksWHMgbn",
"mint": "BV2CATw6dAcxxAoZ73P14DTXzbKTUZR41X7EXpKWpump",
"txSigner": "2d6xLct3G6NiJ8kpPSqvW3KGCUXxPfhLsZkpJST1jQWG",
"tokenAmount": 2227444.803763,
"solAmount": 0.166734053,
"tokensInPool": 561786808.85806,
"solInPool": 42.052216573,
"price": 7.485440368113883e-8,
"marketCapSol": 74.85068094708055,
"pool": "pump-amm",
"poolCreatedBy": "pump",
"burnedLiquidity": "100%",
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"2d6xLct3G6NiJ8kpPSqvW3KGCUXxPfhLsZkpJST1jQWG": {}
},
"block": 388781273,
"timestamp": 1766553569793
}
{
"signature": "5vg11Cwm4ajx4fgWHQKbu7PyKZj6CTktETBUmbCeVGDzWA1XE248c759b8iACXJNLBUkfH5B1gENMADg8d4D5Jbh",
"txType": "add",
"poolId": "25oAdGCecRGkEP6xi6u9AQoXPP4qRZkLindjRZMVfpR1",
"mint": "Augv5FR4mErhX8ge1aYBcos47E4D8jjMDcdggktcENp8",
"txSigner": "9n54dhmAUnG2Tcdpnax4j2BDcZ1tj94uARZJekuH4hPQ",
"tokenAmount": 0.00002,
"solAmount": 0.01949851,
"tokensInPool": 0.001825,
"solInPool": 1.830396541,
"price": 1002.9570087671233,
"marketCapSol": 21061094.227100823,
"pool": "raydium-cpmm",
"poolCreatedBy": "custom",
"burnedLiquidity": "0%",
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token",
"tokenExtensions": {},
"tradersInvolved": {
"9n54dhmAUnG2Tcdpnax4j2BDcZ1tj94uARZJekuH4hPQ": {}
},
"block": 388917961,
"timestamp": 1766607265405
}
- Pump AMM
- Raydium CPMM
{
"signature": "3gaHAmA43jy6vDpw2YNMmevtSL8ETsjiq1hfnRse3FNfZbT9J7sKVn6grsar71Y7cid5Utq5uP1xVw5nYp211ToM",
"txType": "remove",
"poolId": "HYJdHcmnEVFKQsh7i3HfUWbU3VBZ4QhS362PPgSPBTht",
"mint": "GYN7hY84cUfweqwZt2tvVCfC5HtyhecAPHD8JiekQGn4",
"txSigner": "Cap5yMKghyowcGXucb3Jiww5FCqqkhemoRPnECbTU7n5",
"tokenAmount": 895429652.701032,
"solAmount": 95.326732645,
"tokensInPool": 0.009713,
"solInPool": 2e-9,
"price": 2.0590960568310514e-7,
"marketCapSol": 205.90960547719553,
"pool": "pump-amm",
"poolCreatedBy": "custom",
"burnedLiquidity": "100%",
"mayhemMode": False,
"mintAuthority": None,
"freezeAuthority": None,
"tokenProgram": "spl-token-2022",
"tokenExtensions": {
"metadataPointer": {},
"tokenMetadata": {}
},
"tradersInvolved": {
"Cap5yMKghyowcGXucb3Jiww5FCqqkhemoRPnECbTU7n5": {}
},
"block": 388918416,
"timestamp": 1766607442845
}
{
"signature": "5xqf14tscxYzW289huZCEnLoLycva2GWgNNjzv2sdr2ef54N38GZNBT6eKTsJ7vQTthcBQRdAJ6fojjZpwzPzXNn",
"txType": "remove",
"poolId": "5ypKmP8avEyja9L5wwBiCb7fFVNsow34BZMEutnvHCg5",
"mint": "3pAFFgZDNXHxFNTKA1oQhb1xc13zvZcxHs97kSuTL6sc",
"txSigner": "281oNgtPvWuDydiD53rV5x2C2pqCAjp9Y7ef2AwPCkbY",
"tokenAmount": 684176482.1057463,
"solAmount": 3.29323859,
"tokensInPool": 0.001442371,
"solInPool": 1e-9,
"price": 6.933029019579567e-7,
"marketCapSol": 693.3029019579567,
"pool": "raydium-cpmm",
"poolCreatedBy": "custom",
"burnedLiquidity": "100%",
"mintAuthority": "11111111111111111111111111111111",
"freezeAuthority": "11111111111111111111111111111111",
"tokenProgram": "spl-token-2022",
"tokenExtensions": {
"metadataPointer": {},
"tokenMetadata": {}
},
"tradersInvolved": {
"281oNgtPvWuDydiD53rV5x2C2pqCAjp9Y7ef2AwPCkbY": {}
},
"block": 388922045,
"timestamp": 1766608876866
}
Glossary
| Field | Description |
|---|---|
signature | Transaction signature on the Solana blockchain. |
txType | Transaction type — one of transfer, create, buy, sell, migrate, createPool, add, remove. |
poolId | is 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. |
mint | Token mint address. |
quoteMint | The 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. |
txSigner | The 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. |
tokenAmount | Amount of mint tokens involved in the transaction. |
solAmount | The 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. |
quoteAmount | The amount of the quoteMint token involved in the transaction. This is returned only when the second token in the trading pair is not Solana. |
tokensInPool | Total amount of the main token (mint) currently in the liquidity pool. This shows how many tokens are available for trading on the token side. |
solInPool | Total 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. |
quoteInPool | Total 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. |
vTokensInBondingCurve | Virtual 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. |
vSolInBondingCurve | Virtual 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. |
vQuoteInBondingCurve | Virtual 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 |
price | Price in quoteMint (usually SOL) including this transaction’s impact. |
marketCapSol | Market capitalization in SOL. We send this only when quote mint is Solana. |
marketCapQuote | Market capitalization in Quote. We send this only when quote mint is NOT Solana. (like USDC, USDT, etc.) |
pool | Liquidity source. Before migration, the value is either pump or raydium-launchpad. After migration, pump → pump-amm, raydium-launchpad → raydium-cpmm. |
poolCreatedBy | shows who created the pool on pump-amm or raydium-cpmm. If the pool was created by migration, the value is pump or raydium-launchpad. These pools are trusted. If the pool was created manually, the value is custom. Be careful with such pools. |
lockedLiquidityAfterMigration | Shows what percentage of liquidity will be locked after the migration. Beware of values below 100%, as the pool or launchpad creator can withdraw the liquidity after the migration (rug pull). |
burnedLiquidity | shows 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. |
mayhemMode | Indicates 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.) |
launchpadConfig | The address where the settings for the Meteora or Raydium launchpad are stored. Anyone can create their own config on these launchpad. |
mintAuthority | Address 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 |
freezeAuthority | Address 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 |
tokenProgram | Token program used to create the token — either spl-token (legacy) or spl-token-2022 (newer standard). More info |
tokenExtensions | Token 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. |
tradersInvolved | Addresses 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 |
isSolana | Only in transfer events. Indicates whether the mint represents Solana. True if the mint is native SOL or WSOL (Wrapped SOL); otherwise False. |
block | Block number in which the transaction was included. New blocks are produced every 400 ms |
timestamp | Blockchain timestamp of transaction. |