How to Scrape DexScreener Search Results by Symbol in 2026
Turn ticker symbols, token names or partial addresses into every matching DEX pair across 30+ chains — price, liquidity, volume, market cap. How the search API works and how to run bulk multi-query.
Sometimes you don’t have a contract address — you have a word. A ticker someone mentioned (PEPE), a project name, a fragment of an address. Resolving that human-friendly input into the actual DEX pairs trading under it, across every chain and every DEX, is the search problem. It’s where memecoin discovery starts, where symbol-to-address resolution lives, and where impersonator-token detection begins. This guide covers DexScreener’s search endpoint, how to run it in bulk, and why dedup and post-filtering matter more than they look.
What’s worth extracting
A search query can match many pairs — same symbol on many chains, many DEXes, plus impostors. Per matching pair you want:
- Pair & chain identifiers — chain, DEX, pair address, listing URL.
- Token metadata — base/quote symbols, names, addresses.
- Price — USD and native.
- Liquidity — USD liquidity (the field you sort by to separate the real token from the dust impostors).
- Valuation — market cap and FDV.
- Activity — multi-interval volume, price-change percentages, transaction counts.
- Context — pair creation timestamp, images, website and social links, labels.
30+ columns per row. For symbol resolution you mostly care about chain, token address and liquidity (to pick the canonical match); for discovery you want the full activity set.
How the data is exposed
DexScreener’s documented public search endpoint takes free text:
GET https://api.dexscreener.com/latest/dex/search?q=PEPE
The q parameter accepts ticker symbols, token names, partial contract addresses, or pair syntax. It returns an array of matching pairs ranked by DexScreener’s own relevance, drawing from 30+ chains and 100+ DEXes. Free, no key. The endpoint is one query at a time, though — there’s no native “search these 200 symbols” call, so bulk symbol resolution means many queries plus your own dedup.
Rate limits and bulk querying
The search endpoint is rate-limited (~300 requests/minute on the public API). The real complications in bulk search:
- Many queries — resolving a list of 500 tickers is 500 calls; you need controlled concurrency and 429 backoff.
- Dedup across queries — searching
SOLandSOLANAcan return overlapping pairs; without dedup you double-count. - Substring noise — a search for
PEPEmatchesPEPE,PEPE2,BABYPEPEand impostors; you usually want an exact or substring post-filter plus a liquidity floor to keep only meaningful matches.
A managed scraper does all of this — multi-query concurrency, automatic dedup, symbol exact/substring post-filter, chain/DEX whitelist, liquidity/volume filters, and per-query re-sort by USD liquidity — so the output is clean instead of a pile of dust.
▶ Run the DexScreener Search Scraper — bulk-search by symbol (SOL, PEPE), token name or partial address; export every matching DEX pair across 30+ chains with price, liquidity, volume and market cap. Automatic dedup, symbol post-filter and liquidity sort. No API key, pay per row.
Build it yourself vs. use a managed scraper
- Building from scratch — loop your queries, concurrency + 429 backoff, dedup across overlapping results, post-filter on exact/substring symbol, apply liquidity/volume thresholds, sort, flatten 30 columns. Doable, but it’s a real little pipeline, not a one-liner.
- Using a managed actor — paste a query list, set filters, run, get a deduplicated, liquidity-sorted table.
For one quick lookup, hit the endpoint directly. For resolving a list of symbols or sweeping trending keywords, the dedup-and-filter layer is the work.
Schema design for downstream use
A flat per-match row:
{
"query": "PEPE",
"chain": "ethereum",
"dex": "uniswap",
"pair_address": "0x...",
"base_symbol": "PEPE",
"base_address": "0x6982508145454ce325ddbe47a25d4ec3d2311933",
"quote_symbol": "WETH",
"price_usd": 0.0000118,
"liquidity_usd": 14200000,
"market_cap_usd": 4960000000,
"fdv_usd": 4960000000,
"volume_24h_usd": 210000000,
"price_change_24h": -3.4,
"txns_24h_buys": 8200,
"pair_created_at": "2023-04-14T00:00:00Z",
"scraped_at": "2026-05-27T12:00:00Z"
}
Decisions worth making early:
- Keep the originating
queryon each row. When bulk-resolving a symbol list, you need to know which input produced which match. - Sort and rank by
liquidity_usd. The canonical token for a symbol is almost always the highest-liquidity match; impostors are the dust below it. - Store
base_address. The whole point of symbol search is getting to the contract address — that’s the resolution output. - Compare
market_cap_usdvsfdv_usd. A huge gap signals locked/vesting supply, useful context for discovery.
Typical use cases
- Bulk symbol → contract address resolution for large ticker lists.
- Watchlist enrichment — attach the current top pair, price, liquidity and volume to a list of symbols.
- DEX market screening — discover token variants and cross-chain listings, ranked by liquidity.
- Memecoin & narrative discovery — search trending keywords across DEXes to surface what’s moving.
- Content & newsletter pipelines — daily top-movers by narrative.
- Indexer / data-product seeding — sweep symbolic queries to seed a catalog.
- Token research — enumerate all DEX listings for a project.
- Anti-impersonator monitoring — detect scam tokens reusing a legitimate symbol (the low-liquidity matches under the real one).
Cost math for the managed approach
You pay per matched row. A single popular symbol might return dozens of pairs; a bulk run over 500 tickers, after dedup and a liquidity floor, might land a few thousand rows — a few dollars at a fraction of a cent each. A daily trending-keyword sweep is similarly cheap. The dedup and post-filter mean you’re not paying to store dust, which keeps the bill honest.
Common pitfalls
- Search is discovery, not refresh. Use this to find pairs by text. Once you have the addresses, the watchlist or token-pairs scrapers are cheaper for repeated refresh.
- Substring matches flood you. Without an exact/substring post-filter, a short query returns hundreds of unrelated tokens — always filter and sort by liquidity.
- Impostors share symbols. Many tokens reuse a famous ticker; liquidity and pair age disambiguate the real one (and that’s also the anti-impersonator signal).
- Overlapping queries double-count. Dedup on
chain + pair_addressacross the whole run. - Relevance ranking is DexScreener’s, not yours. Re-sort by liquidity yourself rather than trusting the raw order.
Wrapping up
Search is the entry point when you have a word, not an address — and the difference between a useful result and noise is dedup, a liquidity-sorted post-filter, and keeping the originating query attached. If you’re resolving symbol lists, discovering narratives, or hunting impersonators, run a managed scraper that already does the multi-query orchestration, dedup and filtering and hands you a clean, ranked table.
▶ Open the DexScreener Search Scraper on Apify — bulk symbol/name/address search across 30+ chains, deduplicated and liquidity-sorted. JSON/CSV, no API key, pay per row, free monthly credit to start.
Related guides
EU Company Registry Data Export — Germany, France, Netherlands
How to extract company-registry records from Handelsregister, INPI, and KvK in a unified schema — for KYC, B2B lead generation, and compliance workflows.
How to Scrape CoinPaprika Crypto Market Data in 2026
Bulk-fetch the entire crypto market from CoinPaprika in one API call — price, volume, market cap, supply, ATH and 1h/24h/7d/30d momentum for thousands of coins, no API key.
How to Scrape DexScreener Boosted & Promoted Tokens in 2026
Track every boosted/promoted token on DexScreener — boost spend, payment timestamps, order history plus live top-pair price and liquidity. How the promotion endpoints work and why it's memecoin alpha.