Dexscreener Scraper — DEX Prices, Liquidity, New Pairs, Boosts avatar

Dexscreener Scraper — DEX Prices, Liquidity, New Pairs, Boosts

Pricing

from $1.40 / 1,000 result items

Go to Apify Store
Dexscreener Scraper — DEX Prices, Liquidity, New Pairs, Boosts

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

Samat Makatov

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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 pairs run over your pools; alert on price moves or liquidity drops.
  • New-launch scouting — latestBoosts / profiles with 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

FieldTypeDefaultAllowed values / notes
modestringsearchsearch, tokens, tokenPairs, pairs, boosted, latestBoosts, profiles, profileUpdates, takeovers, ads, metas, meta, orders (see Reference)
queriesstring[]["AERO"] (prefill)mode=search: names, symbols, SOL/USDC, token or pair addresses (DEX Screener returns up to 30 pairs per query)
chainIdstring""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.
expandChainSearchbooleantruemode=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
chainSearchTokensinteger100–30 matching tokens (most liquid first) whose pools are fetched when widening
tokenAddressesstring[][]mode=tokens / tokenPairs / orders. Any number (batched 30 per request in tokens). In tokens every row describes the queried token (see Reference → Modes)
pairAddressesstring[][]mode=pairs. Always returned (filters are not applied); pairs DexScreener does not know are listed in SUMMARY.notFound (not charged)
metaSlugsstring[][]mode=meta, e.g. ai, dog, x402 (run mode=metas for the live list)
minLiquidityUsdinteger1000Set 0 to keep pairs/tokens without liquidity data
maxLiquidityUsdinteger—
minVolume24hUsdinteger—
minMarketCapUsd / maxMarketCapUsdinteger—Market cap, or FDV when market cap is missing
minTxns24hinteger—Buys + sells in 24 h
minPriceChange24h / maxPriceChange24hinteger—Percent, e.g. 20 or -20
minAgeHours / maxAgeHoursinteger—Pair age; maxAgeHours: 24 = launched in the last day
dexIdsstring[][]e.g. uniswap, aerodrome, raydium, pumpswap, meteora, orca, pancakeswap, sushiswap, quickswap
quoteSymbolsstring[][]e.g. USDC, USDT, WETH, SOL, WBNB
sortBystringliquidityliquidity, 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
sortOrderstringdescdesc, asc (pairAge + asc = newest first)
onePairPerTokenbooleanfalseKeep only the most liquid pair of each token
limitPerQueryinteger101–500 items per query / token / meta / list
maxItemsinteger1001–10000, hard cap for the whole run
includeMarketDatabooleantrueList modes: attach price, liquidity, volume, market cap, age of each token's most liquid pair
includeInfobooleantruePair modes: imageUrl, websites, socials
newPairHoursinteger24Threshold for the new_pair_<N>h flag (1–720)
fieldsstring[][]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

ModeSource endpointItems
search/latest/dex/searchPairs 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/v1Tokens with most active boosts
latestBoosts/token-boosts/latest/v1Newest boost purchases
profiles / profileUpdates/token-profiles/latest/v1, /token-profiles/recent-updates/v1Newest / recently updated profiles
takeovers/community-takeovers/latest/v1Latest community takeovers
ads/ads/latest/v1Latest paid ads (tokenAd, trendingBarAd)
metas/metas/trending/v1Trending 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:

solanaethereumbscbase
arbitrumpolygonoptimismavalanche
robinhoodpulsechainsuiton
tronhyperliquidhyperevmsonic
fantomcronoslineablast
zksyncscrollmantlemanta
abstractberachainunichainworldchain
monadseiv2aptosmovement
nearinjectivecelometis
kavastarknetstacksmultiversx
flareconfluxtelosbeam
algorandxrplhedera

DEX Screener adds chains regularly; the chain id is the first path segment of a pair URL (dexscreener.com/<chainId>/…).

Flags (flags[], pair items)

FlagRule
low_liquidity / no_liquidity_dataLiquidity < $10k / not reported
suspicious_liquidityLiquidity ≥ $100k but 24h volume < 0.1 % of it — typical of knock-off or mispriced pools
new_pair_<N>hPair younger than newPairHours
sell_pressure24h buys < half of sells
no_sells_24h> 20 buys and 0 sells in 24 h (possible honeypot — verify)
extreme_price_move_24habs(24h change) ≥ 50 %
volume_over_10x_liquidity24h volume > 10 × liquidity (wash trading or a hype spike)
no_profile / no_socialsNo DEX Screener token profile / profile without links
price_from_quote_sidemode=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

FieldItemsDescription
id, query, foundallStable 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, urlpairsWhere the pool lives (labels: v2/v3/v4, CLMM, DLMM…)
symbol, name, tokenAddress, quoteSymbol, quoteAddresspairs, listsBase and quote token
priceUsd, priceNative, change5m, change1h, change6h, change24hpairs, listsPrice and % change (lists: change1h, change24h)
volume5m, volume1h, volume6h, volume24h, buys5m, sells5m, buys1h, sells1h, buys24h, sells24h, txns24h, buySellRatio24hpairsActivity (lists and metas: volume24h)
liquidityUsd, liquidityBase, liquidityQuote, volumeToLiquidity24h, fdv, marketCappairs, listsDepth and valuation
pairCreatedAt, ageHours, boosts, flags[]pairs, listsAge, active boosts, risk flags
querySidepairs (tokenPairs)base or quote: where the queried token sits in the pool
imageUrl, websites[], socials[]pairsToken profile links (includeInfo)
rank, listType, description, iconUrl, headerUrl, website, twitter, telegram, links[], boostAmount, totalBoostAmount, adType, adDate, adDurationHours, adImpressions, claimDate, isCommunityTakeover, pairsFound, totalLiquidityUsd, topPairUrllistsPromotion data + market summary
slug, name, description, icon, tokenCount, marketCapChange1h, marketCapChange6h, marketCapChange24hmetasNarrative stats; meta pair items also carry metaSlug, metaName
ordersCount, approvedCount, hasApprovedProfile, hasPaidAds, ordersByType, lastPaymentAt, orders[]ordersPaid DEX Screener products for the token
fetchedAtallWhen 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 ApifyClient
client = 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 PEPE returns 1 Ethereum pair out of 30. With a chainId the actor therefore widens the search by default (expandChainSearch): quote-variant searches plus /token-pairs for each matching token on that chain. PEPE on ethereum goes 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-pairs returns at most 30 pools per token. If you know the contract, use tokenPairs.
  • Liquidity is reported by DEX Screener — pools with mispriced quote assets can show absurd USD liquidity; watch suspicious_liquidity and prefer onePairPerToken with a chainId.
  • Errors — Apify refuses an off-list mode, sortBy or sortOrder before the run starts. A missing required input or an unknown fields name stops the run at once with a message that names the field (only the start event is charged); a chainId that 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 the SUMMARY record under notFound, failed lookups under errors (with the reason; in tokens and pairs a failed request fails its batch of up to 30 addresses), with notFoundCount / errorCount; the status message sums it up (10 item(s) saved · 1 not found (see SUMMARY)). Inputs the run did not reach because maxItems, your spending limit or the run timeout stopped it are counted in notProcessed. 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