Dexscreener Scraper — DEX Prices, Liquidity, New Pairs, Boosts
Pricing
from $1.40 / 1,000 result items
Dexscreener Scraper — DEX Prices, Liquidity, New Pairs, Boosts
DEX Screener data for 45+ chains: search tokens, all pools of a token, pair monitoring, boosted/new/CTO/advertised tokens with market data, trending metas and paid-order checks. Liquidity, volume, market cap and age filters, risk flags. No API key.
Pricing
from $1.40 / 1,000 result items
Rating
0.0
(0)
Developer
Samat Makatov
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Live on-chain market data from DEX Screener for 45+ chains (Solana, Ethereum, BNB Chain, Base, Arbitrum, Sui, TON, Tron, Hyperliquid…): search any token, pull every pool of a token, monitor specific pairs, and track what is being promoted right now — boosted tokens, new profiles, community takeovers, paid ads and trending narratives — with liquidity/volume/age filters and risk flags. Uses the official public DEX Screener API. No API key, no proxy, no browser.
Use cases
- Price & liquidity monitoring — scheduled
pairsrun over your pools; alert on price moves or liquidity drops. - New-launch scouting —
latestBoosts/profileswith market data, filtered by liquidity, market cap and pair age. - Token due diligence — all pools of a token (
tokenPairs), risk flags (suspicious_liquidity,sell_pressure,no_sells_24h), and paid promotion history (orders). - Finding the real contract — search a ticker, keep only the most liquid pair per token to separate the original from knock-offs.
- Narrative research — trending metas (AI, dog, x402…) with market cap and 24h change, then the pairs inside each meta.
- Listing / BD lead-gen — tokens that just paid for boosts or ads, with website, Twitter and Telegram links.
Input
| Field | Type | Default | Allowed values / notes |
|---|---|---|---|
mode | string | search | search, tokens, tokenPairs, pairs, boosted, latestBoosts, profiles, profileUpdates, takeovers, ads, metas, meta, orders (see Reference) |
queries | string[] | ["AERO"] (prefill) | mode=search: names, symbols, SOL/USDC, token or pair addresses (DEX Screener returns up to 30 pairs per query) |
chainId | string | "" | Chain id from the table below. Letter case and display names are accepted, and so are the aliases eth, sol, bnb, binance, arb, matic, op, avax, sei, hype, xrp; the status message shows how the value was read. An id not on the list is passed to DEX Screener as typed, with a note in the status (DEX Screener adds chains often); if it is one or two letters away from a known id (etherum) and the run finds nothing, the run fails with "did you mean". Required for tokens, tokenPairs, pairs, orders; a filter for search, meta and the token lists; ignored by metas. |
expandChainSearch | boolean | true | mode=search + chainId: widen past the 30-pair search cap — also search <query>/<chain quote> (e.g. PEPE/WETH, PEPE/USDC) and pull the pools of each matching token on that chain via /token-pairs. false = plain search, then filter |
chainSearchTokens | integer | 10 | 0–30 matching tokens (most liquid first) whose pools are fetched when widening |
tokenAddresses | string[] | [] | mode=tokens / tokenPairs / orders. Any number (batched 30 per request in tokens). In tokens every row describes the queried token (see Reference → Modes) |
pairAddresses | string[] | [] | mode=pairs. Always returned (filters are not applied); pairs DexScreener does not know are listed in SUMMARY.notFound (not charged) |
metaSlugs | string[] | [] | mode=meta, e.g. ai, dog, x402 (run mode=metas for the live list) |
minLiquidityUsd | integer | 1000 | Set 0 to keep pairs/tokens without liquidity data |
maxLiquidityUsd | integer | — | |
minVolume24hUsd | integer | — | |
minMarketCapUsd / maxMarketCapUsd | integer | — | Market cap, or FDV when market cap is missing |
minTxns24h | integer | — | Buys + sells in 24 h |
minPriceChange24h / maxPriceChange24h | integer | — | Percent, e.g. 20 or -20 |
minAgeHours / maxAgeHours | integer | — | Pair age; maxAgeHours: 24 = launched in the last day |
dexIds | string[] | [] | e.g. uniswap, aerodrome, raydium, pumpswap, meteora, orca, pancakeswap, sushiswap, quickswap |
quoteSymbols | string[] | [] | e.g. USDC, USDT, WETH, SOL, WBNB |
sortBy | string | liquidity | liquidity, volume24h, volume1h, marketCap, fdv, priceChange5m, priceChange1h, priceChange24h, txns24h, buySellRatio24h, pairAge, boosts, none (nulls always last). In list modes boosts/none keep DEX Screener's own ranking |
sortOrder | string | desc | desc, asc (pairAge + asc = newest first) |
onePairPerToken | boolean | false | Keep only the most liquid pair of each token |
limitPerQuery | integer | 10 | 1–500 items per query / token / meta / list |
maxItems | integer | 100 | 1–10000, hard cap for the whole run |
includeMarketData | boolean | true | List modes: attach price, liquidity, volume, market cap, age of each token's most liquid pair |
includeInfo | boolean | true | Pair modes: imageUrl, websites, socials |
newPairHours | integer | 24 | Threshold for the new_pair_<N>h flag (1–720) |
fields | string[] | [] | Keep only these top-level fields, in this order. id, query, chainId, found, url, fetchedAt are always kept (first, unless you list them). Letter case is forgiven; an unknown name, or a list with no field this mode's rows have, stops the run with a suggestion before any row is charged. Names: Reference → Output fields |
In list modes the market filters (minLiquidityUsd, volume, market cap, price change, age) are applied to the token's most liquid pair, and only when includeMarketData is on. dexIds, quoteSymbols and minTxns24h do not apply to list modes; when they are set, the status message says they were ignored. Mode pairs applies no filters (a monitored pool is always returned).
Reference
Modes
| Mode | Source endpoint | Items |
|---|---|---|
search | /latest/dex/search | Pairs per query |
tokens | /tokens/v1/{chain}/{addresses} | The queried token's own pairs (it is the base token, so symbol and priceUsd are its own). When DEX Screener lists the token only as the quote token of its pools, those pools are turned around: its USD price = base price ÷ native price, buys and sells swap, and the row is flagged price_from_quote_side (change %, FDV, market cap, boosts and profile links are then null: they belong to the other token). With onePairPerToken, one row per address |
tokenPairs | /token-pairs/v1/{chain}/{address} | Pools that contain each token, on either side (DEX Screener returns the top 30); querySide says whether the token is the base (priceUsd is its price) or the quote (priceUsd is the other token's) |
pairs | /latest/dex/pairs/{chain}/{pairs} | One per requested pair |
boosted | /token-boosts/top/v1 | Tokens with most active boosts |
latestBoosts | /token-boosts/latest/v1 | Newest boost purchases |
profiles / profileUpdates | /token-profiles/latest/v1, /token-profiles/recent-updates/v1 | Newest / recently updated profiles |
takeovers | /community-takeovers/latest/v1 | Latest community takeovers |
ads | /ads/latest/v1 | Latest paid ads (tokenAd, trendingBarAd) |
metas | /metas/trending/v1 | Trending narratives |
meta | /metas/meta/v1/{slug} | Pairs in each narrative |
orders | /orders/v1/{chain}/{address} | One summary per token. DEX Screener answers "no orders" for any chain id, even a misspelt one, so on a chain not in the list below the orders are looked up only when DEX Screener lists at least one of the tokens there |
List endpoints (boosts, profiles, takeovers, ads) hold only the latest ~30 entries across all chains, so a chain filter can leave few results.
Chains (chainId)
Confirmed against live API responses in September 2026:
solana | ethereum | bsc | base |
arbitrum | polygon | optimism | avalanche |
robinhood | pulsechain | sui | ton |
tron | hyperliquid | hyperevm | sonic |
fantom | cronos | linea | blast |
zksync | scroll | mantle | manta |
abstract | berachain | unichain | worldchain |
monad | seiv2 | aptos | movement |
near | injective | celo | metis |
kava | starknet | stacks | multiversx |
flare | conflux | telos | beam |
algorand | xrpl | hedera |
DEX Screener adds chains regularly; the chain id is the first path segment of a pair URL (dexscreener.com/<chainId>/…).
Flags (flags[], pair items)
| Flag | Rule |
|---|---|
low_liquidity / no_liquidity_data | Liquidity < $10k / not reported |
suspicious_liquidity | Liquidity ≥ $100k but 24h volume < 0.1 % of it — typical of knock-off or mispriced pools |
new_pair_<N>h | Pair younger than newPairHours |
sell_pressure | 24h buys < half of sells |
no_sells_24h | > 20 buys and 0 sells in 24 h (possible honeypot — verify) |
extreme_price_move_24h | abs(24h change) ≥ 50 % |
volume_over_10x_liquidity | 24h volume > 10 × liquidity (wash trading or a hype spike) |
no_profile / no_socials | No DEX Screener token profile / profile without links |
price_from_quote_side | mode=tokens: the queried token is the quote token of this pool; the row is the pool turned around (see Modes) |
Flags are heuristics for triage, not verdicts.
Output fields
| Field | Items | Description |
|---|---|---|
id, query, found | all | Stable id (chain:pair, chain:token, meta:slug); input that produced the item (not in list and metas items); lookup result (found: true on every item — inputs with no match or that failed are not items, see Limits & FAQ) |
chainId, dexId, labels, pairAddress, url | pairs | Where the pool lives (labels: v2/v3/v4, CLMM, DLMM…) |
symbol, name, tokenAddress, quoteSymbol, quoteAddress | pairs, lists | Base and quote token |
priceUsd, priceNative, change5m, change1h, change6h, change24h | pairs, lists | Price and % change (lists: change1h, change24h) |
volume5m, volume1h, volume6h, volume24h, buys5m, sells5m, buys1h, sells1h, buys24h, sells24h, txns24h, buySellRatio24h | pairs | Activity (lists and metas: volume24h) |
liquidityUsd, liquidityBase, liquidityQuote, volumeToLiquidity24h, fdv, marketCap | pairs, lists | Depth and valuation |
pairCreatedAt, ageHours, boosts, flags[] | pairs, lists | Age, active boosts, risk flags |
querySide | pairs (tokenPairs) | base or quote: where the queried token sits in the pool |
imageUrl, websites[], socials[] | pairs | Token profile links (includeInfo) |
rank, listType, description, iconUrl, headerUrl, website, twitter, telegram, links[], boostAmount, totalBoostAmount, adType, adDate, adDurationHours, adImpressions, claimDate, isCommunityTakeover, pairsFound, totalLiquidityUsd, topPairUrl | lists | Promotion data + market summary |
slug, name, description, icon, tokenCount, marketCapChange1h, marketCapChange6h, marketCapChange24h | metas | Narrative stats; meta pair items also carry metaSlug, metaName |
ordersCount, approvedCount, hasApprovedProfile, hasPaidAds, ordersByType, lastPaymentAt, orders[] | orders | Paid DEX Screener products for the token |
fetchedAt | all | When the item was fetched (ISO 8601 UTC) |
Examples
1. Find the real token behind a ticker (Ethereum, one pair per token, by volume)
{ "mode": "search", "queries": ["PEPE"], "chainId": "ethereum", "minLiquidityUsd": 50000, "onePairPerToken": true, "sortBy": "volume24h", "limitPerQuery": 5 }
2. Monitor your pools every 15 minutes
{ "mode": "pairs", "chainId": "base", "pairAddresses": ["0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d"], "fields": ["priceUsd", "change1h", "liquidityUsd", "volume24h", "flags"] }
3. New launches on Solana that people are paying to promote
{ "mode": "latestBoosts", "chainId": "solana", "minLiquidityUsd": 10000, "maxAgeHours": 72, "sortBy": "volume24h", "limitPerQuery": 30 }
4. Due diligence: all USDC pools of a token + its paid promotion history
{ "mode": "tokenPairs", "chainId": "solana", "tokenAddresses": ["So11111111111111111111111111111111111111112"], "quoteSymbols": ["USDC"], "limitPerQuery": 20 }
{ "mode": "orders", "chainId": "solana", "tokenAddresses": ["So11111111111111111111111111111111111111112"] }
5. Narrative research: trending metas, then liquid pairs inside AI and x402
{ "mode": "metas", "limitPerQuery": 20 }
{ "mode": "meta", "metaSlugs": ["ai", "x402"], "minLiquidityUsd": 20000, "limitPerQuery": 10 }
Output
Pair item (trimmed real example from mode: "tokens", AERO on Base):
{"query": "0x940181a94A35A4569E4529A3CDfB74e38FD98631", "found": true,"id": "base:0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d", "chainId": "base", "dexId": "aerodrome", "labels": [],"pairAddress": "0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d", "url": "https://dexscreener.com/base/0x6cdcb1c4a4d1c3c6d054b27ac5b77e89eafb971d","symbol": "AERO", "name": "Aerodrome", "tokenAddress": "0x940181a94A35A4569E4529A3CDfB74e38FD98631","quoteSymbol": "USDC", "quoteAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","priceUsd": 0.5641, "priceNative": 0.5641, "change5m": null, "change1h": -0.15, "change6h": -0.17, "change24h": -2.45,"volume1h": 12864.49, "volume24h": 582264.35, "buys24h": 124, "sells24h": 1627, "txns24h": 1751, "buySellRatio24h": 0.08,"liquidityUsd": 33992284.21, "volumeToLiquidity24h": 0.0171, "fdv": 1116194418, "marketCap": 557850865,"pairCreatedAt": "2023-09-07T22:50:45.000Z", "ageHours": 26433.6, "boosts": 0,"websites": ["https://aerodrome.finance/docs"], "socials": [{ "type": "twitter", "url": "https://x.com/aerodromefi" }],"flags": ["sell_pressure"], "fetchedAt": "2026-09-13T08:25:17.755Z"}
List item (trimmed real example from mode: "boosted" with market data):
{"rank": 1, "found": true, "id": "solana:FLk6FKAN26m1FT4ucguwy3uHBMzLKcEu8KMTYD2Zpump", "listType": "boosted", "chainId": "solana","tokenAddress": "FLk6FKAN26m1FT4ucguwy3uHBMzLKcEu8KMTYD2Zpump", "url": "https://dexscreener.com/solana/flk6fkan26m1ft4ucguwy3uhbmzlkceu8kmtyd2zpump","website": "https://stunksol.fun", "twitter": "https://x.com/StunkSOL", "telegram": "https://t.me/stunkportal", "totalBoostAmount": 500,"symbol": "Stunk", "pairsFound": 1, "priceUsd": 0.00108, "liquidityUsd": 104927.51, "volume24h": 6771442.02, "marketCap": 1074060,"change1h": 12.25, "change24h": -48.34, "pairCreatedAt": "2026-09-11T18:12:37.000Z", "ageHours": 38.2, "fetchedAt": "2026-09-13T08:25:29.578Z"}
Every field, with its type and meaning, is listed in Reference → Output fields and in the dataset schema.
Use it from code / agents
curl -X POST "https://api.apify.com/v2/acts/yadroo~dexscreener-tokens/run-sync-get-dataset-items?token=$APIFY_TOKEN" \-H 'Content-Type: application/json' \-d '{"mode":"search","queries":["AERO"],"chainId":"base","onePairPerToken":true}'
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('yadroo/dexscreener-tokens').call({ mode: 'latestBoosts', chainId: 'solana', minLiquidityUsd: 10000 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
from apify_client import ApifyClientclient = ApifyClient(token)run = client.actor("yadroo/dexscreener-tokens").call(run_input={"mode": "pairs", "chainId": "base", "pairAddresses": ["0x6cDcb1C4A4D1C3C6d054b27AC5B77e89eAFb971d"]})items = client.dataset(run["defaultDatasetId"]).list_items().items
MCP: add https://mcp.apify.com to your MCP client (Claude, Cursor, …) and call the yadroo/dexscreener-tokens tool with the same JSON.
Pricing
Pay per event: $0.001 per run start + $0.002 per dataset item (pair, token, meta or order summary). Store discounts apply to the item price: Bronze −10 % ($0.0018), Silver −20 % ($0.0016), Gold and above −30 % ($0.0014); the start event is the same on every plan, and platform usage is included. A default search (10 pairs) costs $0.021; monitoring 5 pairs every 15 minutes costs about $1.06 per day; a 30-token boost list costs $0.061. Cap spend with limitPerQuery, maxItems, onePairPerToken and your "Maximum cost per run": the run stops at that limit, keeps every item it saved and says so in the status (Stopped at your spending limit: N rows delivered). Queries with no match (or everything filtered out) and failed lookups are not dataset items and cost nothing.
Limits & FAQ
- Rate limits — DEX Screener allows 300 requests/min on pair, token and search endpoints and 60/min on boosts, profiles, takeovers, ads, metas and orders. The actor spaces requests (≈4/s and ≈1/s) and retries 429/5xx with exponential backoff.
- Freshness — live API data, typically seconds to a minute behind the chain.
- Search is capped — DEX Screener returns at most 30 pairs per search query, ranked across all chains, and the search endpoint has no chain parameter. Plain
PEPEreturns 1 Ethereum pair out of 30. With achainIdthe actor therefore widens the search by default (expandChainSearch): quote-variant searches plus/token-pairsfor each matching token on that chain.PEPEonethereumgoes from 1 pair to ~50 pools of ~10 PEPE-named tokens. It is still not an exhaustive list of every token with that name on the chain: DEX Screener exposes no such endpoint, and/token-pairsreturns at most 30 pools per token. If you know the contract, usetokenPairs. - Liquidity is reported by DEX Screener — pools with mispriced quote assets can show absurd USD liquidity; watch
suspicious_liquidityand preferonePairPerTokenwith achainId. - Errors — Apify refuses an off-list
mode,sortByorsortOrderbefore the run starts. A missing required input or an unknownfieldsname stops the run at once with a message that names the field (only the start event is charged); achainIdthat looks like a typo is named in the status, and fails the run with "did you mean" when nothing is found. Per-query problems never stop the run and are never charged: queries / addresses / slugs with no match or everything filtered out are listed in theSUMMARYrecord undernotFound, failed lookups undererrors(with the reason; intokensandpairsa failed request fails its batch of up to 30 addresses), withnotFoundCount/errorCount; the status message sums it up (10 item(s) saved · 1 not found (see SUMMARY)). Inputs the run did not reach becausemaxItems, your spending limit or the run timeout stopped it are counted innotProcessed. The run fails only if every input failed and nothing was saved. - Timeouts — each request waits at most 20 s and is retried within the run's remaining time. Near the run timeout the actor stops starting new requests, keeps what it saved and ends successfully with
Stopped before the run timeout: N rows saved. - Not financial advice. Data © DEX Screener, used via their public API.
- Roadmap — price/liquidity change alerts between runs, holder data via base-token-intel.
Made by Yadroo. Siblings: base-token-intel · wallet-intel · coingecko-markets · defillama-protocols · crypto-sentiment