DexScreener Skill
Reference files:
references/endpoints.md— full endpoint list with rate limits per groupreferences/examples/— working Python scripts (batch token lookup, search, monitor)
🚨 Key facts (memorize)
- No auth, no key, no paid tier. Public API, free for everyone.
- No history. Only current state. For historical: use Dune or Bitquery.
- No WebSocket. Polling only. For real-time pump.fun: PumpPortal; for others: direct RPC.
- Search max 30 results, no pagination. Don't try to scroll past 30.
- Two rate tiers: 60 rpm (profiles/boosts/metas/orders) vs 300 rpm (
latest/dex/*). - Terms prohibit competing products and aggressive scraping. Fair analytical use is fine.
Base URL
https://api.dexscreener.com
When to use vs alternatives
| Need | Best tool |
|---|---|
| Quick current price, any token, any chain | DexScreener /tokens/v1/{chain}/{addr} |
| Discover trending memecoins | DexScreener /token-boosts/top/v1 + /token-profiles/latest/v1 |
| Batch price for 30 tokens | DexScreener /tokens/v1/{chain}/{addrs} (one call) |
| Full liquidity/volume for a pair | DexScreener /latest/dex/pairs/{chain}/{pair} |
| Historical price | dune-skill (prices.usd) or Birdeye |
| Real-time trade stream | pumpfun-skill (PumpPortal WS) or solana-rpc-skill (LaserStream) |
| Deep wallet analysis | solscan-skill or nansen-skill |
| NFT data | solana-rpc-skill (DAS API) |
Step-by-step workflow
1. Identify input
- User pastes token address →
/tokens/v1/{chain}/{address}or/latest/dex/search?q={address} - User mentions name/symbol →
/latest/dex/search?q={query}(max 30 results) - User asks for trending →
/token-boosts/top/v1or/metas/trending/v1 - User has pair/pool address →
/latest/dex/pairs/{chain}/{pair}
2. Detect chain
Chain IDs: solana, ethereum, base, bsc, polygon, arbitrum, optimism, avalanche, ton, sui, tron, hyperliquid, etc. If unknown, use /search first (it returns chainId in results).
3. Call the endpoint
- Plain
curlorhttpx.get()— no headers needed - Honor 60/300 rpm rate limit: if batch-polling,
asyncio.Semaphore(5)keeps safe
4. Extract what's needed
Typical fields: priceUsd, volume.h24, liquidity.usd, priceChange.h24, txns.h24.buys/sells, marketCap, fdv, pairCreatedAt.
5. Present
- Format USD with commas
- Shorten addresses (4+4 chars)
- Link to DexScreener UI:
https://dexscreener.com/{chainId}/{pairAddress}
Common patterns
Quick price lookup
curl "https://api.dexscreener.com/latest/dex/search?q=BONK"
Returns up to 30 matching pairs sorted by relevance. Pick the top Raydium/Jupiter pair on Solana for BONK.
Batch 30 tokens at once
curl "https://api.dexscreener.com/tokens/v1/solana/MINT1,MINT2,MINT3,...,MINT30"
Single request covers 30 tokens — way cheaper than 30 individual calls.
Monitor a token's all pairs
curl "https://api.dexscreener.com/token-pairs/v1/solana/{TOKEN}"
Useful when a token trades on multiple DEXes (Raydium, Meteora, Orca) — get liquidity for each.
Trending + boosts combination
# What paid advertisers are pushing
curl https://api.dexscreener.com/token-boosts/top/v1
# Organic trends
curl https://api.dexscreener.com/metas/trending/v1
Compare these — divergence signals pump-or-rug patterns.
Error handling
| Status | Meaning | Action |
|---|---|---|
| 200 | OK | Parse JSON |
| 429 | Rate limited | Back off 30-60s, drop concurrency |
| 404 | Token/pair not found | Verify chainId and address |
| 500-502 | Upstream error | Retry with backoff |
429 doesn't include Retry-After — just exponentially back off.
Reference files
references/endpoints.md— all endpoints, rate tiers, response shapesreferences/examples/search_token.py— quick symbol/name lookupreferences/examples/batch_prices.py— bulk price fetch for N tokensreferences/examples/trending_monitor.py— periodic trending dump