DEX Screener API: Find Token Pools by Chain and Contract Address
To find every pool for a token through DEX Screener's API, you need the chain identifier and the token's contract address, not its symbol.
Short answer
DEX Screener's API returns pools for a token through its token-pairs endpoint, which takes a chain ID and a token address (GET /token-pairs/v1/{chainId}/{tokenAddress}), and returns pair objects with fields such as pairAddress, dexId, quoteToken, liquidity, volume, txns and priceUsd. A separate endpoint fetches one pair by chain and pair ID. Always query by chain and address, store the pair address with each record, and expect some fields (priceUsd, liquidity, fdv, marketCap, pairCreatedAt) to be null.
The relevant endpoints
| Purpose | Endpoint (per DEX Screener reference) |
|---|---|
| All pools for a token | /token-pairs/v1/{chainId}/{tokenAddress} |
| One pair | /latest/dex/pairs/{chainId}/{pairId} |
| Several tokens | /tokens/v1/{chainId}/{tokenAddresses} |
| Free-text search | /latest/dex/search |
Put DEX Screener API next to price, flow and positioning in one workspace.
Open a ChartsPod workspaceFields to keep
| Field | Use | Nullable |
|---|---|---|
| pairAddress | Pool identity | No |
| quoteToken | Price unit | Subfields can be |
| liquidity.usd / base / quote | Depth | usd and object can be null |
| txns (buys/sells by window) | Participation | No |
| priceUsd | USD price | Yes |
| pairCreatedAt | Pool age | Yes |
Nullability per the published Pair schema; other endpoints may differ, so code defensively.
Mistakes to avoid
Querying by symbol through search and taking the first result returns impostors. Treating null liquidity as zero discards real pools or, worse, ranks them last. Forgetting the chain ID makes EVM addresses ambiguous across networks.
Example: ranking returned pools
Illustrative response for one token: four pairs. Pair 1, token/SOL on DEX A, liquidity.usd 1.9M, 1,400 buys and 1,250 sells in 24h. Pair 2, token/USDC on DEX B, liquidity.usd 420k. Pair 3, token/SOL on DEX C, liquidity.usd null, 3 transactions. Pair 4, token/USDT, liquidity 8k. Ranking by known liquidity and activity puts pair 1 first; pair 3 is flagged 'liquidity unknown' rather than ranked last as if it were zero, and checked separately.
Conclusion
For candles, combine with a pool OHLCV source (see DEX Screener API Does Not Replace OHLCV History: Choose Your Feed, GeckoTerminal OHLCV: Choose Pool, Token Side and Candle Interval). For null handling, see DEX Screener Pair Data: Null vs Zero - Handle Missing Fields Correctly.
Query DEX Screener by chain and token address, keep every pair with its address, and handle nulls explicitly.
Review DEX Screener API with bar replay before using it live.
Open ChartsPod replayQuestions readers ask
How do I get all pools for a token?
Use the token-pairs endpoint with chain ID and token address.
Can I search by symbol?
The search endpoint accepts text, but symbols are not unique.
Which fields can be null?
Per the Pair schema: priceUsd, liquidity (and liquidity.usd), fdv, marketCap, pairCreatedAt, among others.
Sources and methodology
API behaviour comes from DEX Screener's API reference, CoinGecko's onchain API documentation and Binance's USD-M market data documentation as read on 17 October 2026. Code-level details are described conceptually; check current endpoint versions before building. Examples use illustrative values.
- DEX Screener: API reference — token and pair endpoints, nullable fields, rate limits.
- DEX Screener: Token listing — listing after first liquidity and trade; supply inputs.
This article explains research tools and workflows. It is not financial advice, does not recommend buying or selling any asset and does not predict prices. Crypto derivatives carry a risk of rapid and total loss of margin.
CHARTSPOD EDITORIAL EDITION · RESEARCH AND EDUCATION ONLY · NOT FINANCIAL ADVICE.