TL;DR
- Scan authority and contract risk with
token_securityandtoken_creation_info - Catch stealth mint and burn events
- Measure holder concentration
- Profile holder behavior for bundlers, snipers, and insiders
- Confirm the token can actually be sold
https://public-api.birdeye.so, authenticate with the X-API-KEY header, and select the network with the x-chain header. That header matters more here than usual, since it decides whether token_security returns the Solana or the EVM schema.
Parameter names are not consistent across this scanner. The
defi endpoints take the token as address, while holder/v1 and token/v1 endpoints take it as token_address. Sending the wrong one returns an invalid value error.The five checks
1
Scan authority and contract risk
Chains: Solana and EVMEndpoint: On Solana, read
GET /defi/token_security, GET /defi/token_creation_infoThis check does the most work, and behaves differently per chain. The x-chain header selects the response schema, so your parser has to branch.ownerAddress for mint authority, mutableMetadata, freezeable and freezeAuthority, transferFeeEnable, isToken2022, creatorPercentage, and top10HolderPercent. A null ownerAddress means the mint authority has been renounced and no new supply can be minted; a present address means it is still live. There is no honeypot flag on Solana, because the equivalent danger is a live freeze authority: an issuer who can freeze tokens can lock your position after you buy.On EVM, the same endpoint returns a different set: isHoneypot, buyTax and sellTax, canTakeBackOwnership, hiddenOwner, isMintable, and lpHolders with lock details. Field coverage varies by EVM chain, with Ethereum returning the fullest set, so check every field for null rather than assuming it is present.token_creation_info adds the creation transaction, the creator wallet, and the block time, which lets you flag tokens deployed minutes ago by a wallet with no history.2
Catch stealth mint and burn events
Chains: Solana onlyEndpoint: A burst of mint transactions after a quiet launch is a clear flag. So is a burn sent to an address the team still controls, which only looks like a burn.
GET /defi/v3/token/mint-burn-txsA static supply number hides a moving one. A project can mint quietly after launch or stage a fake burn that never leaves their control. This endpoint lists the actual mint and burn transactions so you see supply changing rather than trusting a snapshot.3
Measure holder concentration
Chains: Solana onlyEndpoint:
GET /defi/v3/token/holder, GET /holder/v1/distributionIf a handful of wallets hold most of the supply, a coordinated sell can erase your position regardless of how clean the contract looks. The fastest signal is already in the Step 1 response, top10HolderPercent from token_security. For the full picture, pull the top holder list and the distribution stats.4
Profile holder behavior
Chains: Solana onlyEndpoint:
GET /token/v1/holder-profileConcentration tells you how the supply is split. Behavior tags tell you who is holding it. This endpoint breaks the holder base into tags such as bundler, sniper, insider, dev, and smart_trader, which exposes a launch that is mostly insiders and bundlers wearing different wallets.The bundler tag is reliable only for tokens created from March 2026 onward, so treat it as absent for older tokens rather than as a clean signal. Confirm this endpoint is available on your package before depending on it, since it sits outside the core accessibility table. Treat this whole step as an enrichment layer, not a gate.
5
Confirm real sellability
Chains: Base for the dedicated endpoint, approximations elsewhereEndpoint:
GET /defi/v3/token/exit-liquidity (Base), GET /defi/token_overview (Solana), token_security (other EVM)A token can clear every check above and still be impossible to exit, because the liquidity is fake, one sided, or about to be pulled. How you test this depends on the chain, and there is no single endpoint that covers all of them.Watch your credit budget
A scanner that fires five checks per token adds up fast, so track consumption from day one. Endpoint:GET /utils/v1/credits
Before you ship
- The
token_securityparser branches onx-chain, since Solana and EVM return different fields. exit-liquidityis only called withx-chain: base, and Solana falls back totoken_overviewliquidity.token_addressis used for theholder/v1andtoken/v1calls, andaddressfor thedeficalls.holder-profileis treated as optional enrichment, not a required gate.- Results are cached for a short window so a token is not rescanned on every page view.
FAQ
Does this rug checker work the same on Solana and EVM?
Does this rug checker work the same on Solana and EVM?
No. Authority and contract risk from Step 1 works on both. Mint and burn history, holder concentration, and holder behavior are Solana only. On EVM the scan relies on the security object plus a sellability test, with exit liquidity available only on Base.
Why does token_security return different fields on Solana versus EVM?
Why does token_security return different fields on Solana versus EVM?
The schema is chain specific and selected by the
x-chain header. Solana returns mint and freeze authority, mutable metadata, and transfer fee fields. EVM returns honeypot, buy and sell tax, ownership, and LP lock fields. Branch your parser on chain rather than expecting one shape.
