Detecting Scam Pools
In this guide, we'll teach you how to identify scam liquidity pools and protect yourself from rug pulls.
Even if a token passes all security checks from our token scam detection guide, you can still lose money if you're trading in the wrong pool. Always verify the pool before trading!
Anyone Can Create a Pool
Here's something many traders don't realize: anyone can create a liquidity pool for any token. Even if a token was originally launched on pump.fun, nothing prevents someone from:
- Buying that token
- Creating their own pool on pump-amm, raydium-cpmm, or any other DEX
- Waiting for unsuspecting traders to buy from their malicious pool
This means you might accidentally analyze and trade a legitimate token, but in a scam pool created by a bad actor.
Before trading, always verify which pool you're interacting with. The token might be fine, but the pool could be a trap.
Pool Verification
Checking Pool Origin
Let's focus on the most common case: you only want to trade tokens related to pump.fun or raydium launchpad ecosystem.
Here's how to verify the pool using our API response:
| Pool Type | What to Check | Safe Condition |
|---|---|---|
pump | Nothing extra needed | ✅ Always safe (bonding curve) |
pump-amm | Check poolCreatedBy | ✅ Safe if poolCreatedBy = "pump" |
raydium-cpmm | Check poolCreatedBy | ✅ Safe if poolCreatedBy = "raydium-launchpad" |
| Any pool | Check poolCreatedBy | ⚠️ Be careful if poolCreatedBy = "custom" |
If you want a simple rule: avoid any pool where poolCreatedBy equals "custom" unless you know exactly what you're doing.
Example: Safe Pool
{
"pool": "pump-amm",
"poolCreatedBy": "pump", // ✅ Created by pump.fun migration - SAFE
"burnedLiquidity": "100%"
}
Example: Suspicious Pool
{
"pool": "pump-amm",
"poolCreatedBy": "custom", // ⚠️ Created manually by someone - BE CAREFUL
"burnedLiquidity": "0%"
}
Understanding Liquidity and Rug Pulls
What is Liquidity?
A liquidity pool is essentially a smart contract holding two assets (e.g., SOL and a token). When you buy a token, you add SOL to the pool and remove tokens. When you sell, you do the opposite.
Liquidity providers are people who deposit both assets into the pool. In return, they receive LP (Liquidity Provider) tokens representing their share of the pool. They earn trading fees but can also withdraw their liquidity at any time.
How Rug Pulls Work
Here's a step-by-step example of a classic liquidity rug pull:
Step 1: Scammer creates a pool
Pool initial state:
├── SOL: 200
├── Tokens: 20,000,000
└── Scammer owns: 100% of LP tokens
Step 2: Victim buys tokens
Victim sends: 70 SOL
Victim receives: 10,000,000 tokens
Pool after purchase:
├── SOL: 270
├── Tokens: 10,000,000
└── Scammer still owns: 100% of LP tokens
Step 3: Scammer withdraws all liquidity
Scammer withdraws 100% of LP tokens and receives:
├── SOL: 270 (including victim's 70 SOL!)
└── Tokens: 10,000,000
Pool after rug pull:
├── SOL: 0
└── Tokens: 0
Result: The victim is left with 10,000,000 tokens that cannot be sold because there's no liquidity in the pool. The scammer walks away with 270 SOL (200 initial + 70 from victim).
The burnedLiquidity Parameter
What Does It Mean?
burnedLiquidity shows what percentage of LP tokens have been permanently destroyed (burned). Burned LP tokens can never be used to withdraw liquidity.
| burnedLiquidity | Meaning |
|---|---|
"100%" | All liquidity is permanently locked. Nobody can rug pull. |
"50%" | Half of liquidity is locked. Even if all providers withdraw, 50% stays. |
"0%" | No liquidity is locked. Pool can be completely drained. |
Higher burnedLiquidity = Safer pool. When 100% is burned, the pool will always have liquidity for trading, no matter what.
Why Do People Provide Liquidity?
Liquidity providers earn a percentage of every trade that happens in the pool. This can be a legitimate way to earn passive income. However, scammers abuse this system by creating pools with the intention of withdrawing all liquidity after others have bought in.
When pump.fun migrates a token to pump-amm, it burns the LP tokens, which is why poolCreatedBy: "pump" pools are safe.
When 0% burnedLiquidity is Acceptable
Not every pool with "0%" burned liquidity is a scam. Here are legitimate scenarios:
1. Old, Established Pools
Some older pools with well-known tokens have multiple liquidity providers. The ownership is diluted across many participants, so no single entity controls enough to drain the pool.
2. Stablecoin and Major Token Pools
If you're buying USDC, USDT, or other major tokens, the burnedLiquidity parameter matters less. Why? Because even if something happens to one pool, you can always sell these tokens in hundreds of other pools.
3. You Don't Plan to Sell in This Pool
If you're using a pool purely for buying and plan to sell elsewhere (for example, arbitrage), pool safety matters less. Just be aware of the risks.
Best Practices for Pool Verification
When checking pools through our API, follow this checklist:
- ✅ Check
pooltype - ✅ If
poolispump-amm, verifypoolCreatedByis"pump" - ✅ If
poolisraydium-cpmm, verifypoolCreatedByis"raydium-launchpad" - ✅ Avoid pools where
poolCreatedByis"custom"unless you have good reasons - ✅ Check
burnedLiquidity— prefer pools with high percentages - ✅ If
burnedLiquidityis"0%", only proceed if you understand the risks
If you don't want to deal with complex verification logic, just use this simple rule:
if trade_event.get('poolCreatedBy') != 'custom':
# Safe to trade
This single check filters out all manually created pools, leaving only pools created by trusted launchpads (pump.fun, raydium-launchpad).
Summary
| Check | Safe✅ | Risky🚨 |
|---|---|---|
| Pool type | pump, raydium-launchpad | — |
| poolCreatedBy | "pump", "raydium-launchpad" | "custom" |
| burnedLiquidity | 50%+ | 0% |
Good luck!