Skip to main content

Detecting Scam Pools

In this guide, we'll teach you how to identify scam liquidity pools and protect yourself from rug pulls.

Important Note

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:

  1. Buying that token
  2. Creating their own pool on pump-amm, raydium-cpmm, or any other DEX
  3. 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.

Always Check the Pool

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 TypeWhat to CheckSafe Condition
pumpNothing extra needed✅ Always safe (bonding curve)
pump-ammCheck poolCreatedBy✅ Safe if poolCreatedBy = "pump"
raydium-cpmmCheck poolCreatedBy✅ Safe if poolCreatedBy = "raydium-launchpad"
Any poolCheck poolCreatedBy⚠️ Be careful if poolCreatedBy = "custom"
Quick Rule

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.

burnedLiquidityMeaning
"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.
Rule of Thumb

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:

  1. ✅ Check pool type
  2. ✅ If pool is pump-amm, verify poolCreatedBy is "pump"
  3. ✅ If pool is raydium-cpmm, verify poolCreatedBy is "raydium-launchpad"
  4. ✅ Avoid pools where poolCreatedBy is "custom" unless you have good reasons
  5. ✅ Check burnedLiquidity — prefer pools with high percentages
  6. ✅ If burnedLiquidity is "0%", only proceed if you understand the risks
Simplest Check

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

CheckSafe✅Risky🚨
Pool typepump, raydium-launchpad
poolCreatedBy"pump", "raydium-launchpad""custom"
burnedLiquidity50%+0%

Good luck!