DexScreener Pair Price & Liquidity Scraper avatar

DexScreener Pair Price & Liquidity Scraper

Pricing

from $1.34 / 1,000 pairs

Go to Apify Store
DexScreener Pair Price & Liquidity Scraper

DexScreener Pair Price & Liquidity Scraper

DEX trading pairs from DexScreener by symbol, token address or pool address, on any chain it lists. Each row holds the price in USD and the quote token, pool liquidity, volume and price change from 5 minutes to 24 hours, buys and sells, and when the figures were produced. $1.40 per 1,000 pairs.

Pricing

from $1.34 / 1,000 pairs

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Search DEX trading pairs by symbol, token address or pool address and get one row per pair: the price in USD and in the quote token, the pool's liquidity, volume and price change from five minutes to 24 hours, and the buy and sell counts. Every row also says when DexScreener produced those figures.

The catch is the ceiling: one search or token returns at most 30 pairs, there is no second page, and a broad symbol gives you the top of the list rather than every pool. And these are market figures, nothing more: no score, no signal, no advice.

InputSearch terms, token addresses or pool addresses, on any chain DexScreener lists
OutputOne row per trading pair: prices, liquidity, volume and price change from 5 minutes to 24 hours, buys and sells, market cap, addresses, snapshot time
Ceiling3,000 rows per run, 30 pairs per search or token
Account neededNone: no wallet, no API key
Price$1.40 per 1,000 pairs on the Free plan, a little less on paid plans. The free plan's $5 a month covers about 3,500

🔍 What DexScreener Pair Price & Liquidity Scraper does

Three ways in, and one run can mix them across chains:

  • Search terms. A symbol, a name, a pair like SOL/USDC, or a contract address. Search is fuzzy. On 30 September a SOL/USDC search capped at five rows returned the real SOL/USDC pool on Base next to tokens called SOLANGELES, SOLO and PLAY. When you know what you want, use addresses.
  • Token addresses. By default the deepest pool for each token, one row each. Turn on allPoolsPerToken for every pool the token trades in, up to 30.
  • Pool addresses. Exactly that pool. The address that comes back is checked against the one you asked for, and a mismatch is dropped, not charged.

A pool that two of your targets both find comes back once.

DexScreener's figures can already be up to a minute old when the run reads them. So every row carries snapshotAt, the moment DexScreener produced the numbers, and sourceAgeSeconds, how old they were when read. Read those before you trust a price.

If the first 25 targets all come back empty and nothing has been delivered, the run stops there rather than grinding through the rest. That is nearly always a list of addresses on the wrong chain.

📋 What data you get from each DEX pair

What you getField
The chain, the exchange and the two tokenschainId, dexId, baseSymbol, quoteSymbol
Price in dollars and in the quote tokenpriceUsd, priceNative
What sits in the poolliquidityUsd, liquidityBase, liquidityQuote
Volume over 5 minutes, 1, 6 and 24 hoursvolumeM5, volumeH1, volumeH6, volumeH24
Price change over the same windowspriceChangeM5, priceChangeH1, priceChangeH6, priceChangeH24
Buy and sell counts over 24 hoursbuysH24, sellsH24
Market cap, fully diluted value, pool agemarketCapUsd, fdvUsd, pairCreatedAt
The pool and token addresses, and the pair pagepairAddress, baseAddress, quoteAddress, pairUrl
When the figures were produced, and how old they weresnapshotAt, sourceAgeSeconds, retrievedAt

▶️ How to scrape DexScreener pairs

  1. Open DexScreener Pair Price & Liquidity Scraper and click Try for free.
  2. Type into Search terms, or paste into Token addresses or Pair addresses, with the chain in front of each address.
  3. Set Skip pools below this liquidity (USD) if you only want real markets.
  4. Set Maximum rows, and keep it low while you are testing.
  5. Click Start, then download the dataset as JSON, CSV or Excel, or read it from the API.

Fill in none of the three lists and you get one labelled sample row instead, which is not charged.

💰 How much does it cost to scrape DexScreener?

$1.40 per 1,000 pairs on the Free plan, with no subscription. Paid plans pay a little less: $1.38 on Starter, $1.36 on Scale and $1.34 on Business. On the free plan, the $5 Apify gives you each month covers about 3,500 pairs. One hundred pairs come to 14 cents.

Not charged: the sample row, every diagnostic row, pools under your liquidity floor, a pool found twice, and an answer that did not match what you asked for. If you set a maximum charge for the run, it stops at the last row that fits.

📥 What you give it

{
"searchTerms": ["SOL/USDC", "PEPE"],
"tokenAddresses": ["solana:So11111111111111111111111111111111111111112"],
"pairAddresses": ["base:0x1131DB5977242a03eBeaD1aCD18F80A9A29e5922"],
"minLiquidityUsd": 10000,
"maxItems": 50
}
FieldDefaultWhat it is
searchTermsnone, the form starts with SOL/USDCFree text: a symbol, a name, a pair or a contract address. At most 30 pairs per term. Up to 100 terms.
tokenAddressesnoneToken contracts as chain:address, or a dexscreener.com URL pasted from the browser. Up to 100.
pairAddressesnonePool addresses in the same forms. One row each. Up to 100.
chainIdnone, the form starts with solanaOnly read for bare addresses with no chain in front: solana, ethereum, base, bsc, arbitrum, polygon and so on. With the form's solana, a bare address is read as Solana unless you change it.
allPoolsPerTokenoffEvery pool for each token, up to 30, instead of only the deepest. It multiplies what you pay by the number of pools.
minLiquidityUsdnone, the form starts at 0Pools holding less than this many dollars are dropped before they are written, so you are not billed for dust. 10000 is a sensible floor for real markets.
maxItems50Total rows across everything you asked for, 1 to 3,000.
proxyUrlsnoneLeave it empty for a normal run. Fill it only if you want the traffic to leave through your own servers, one per line as http://user:pass@host:port.

All four of these mean the same address:

solana:So11111111111111111111111111111111111111112
solana/So11111111111111111111111111111111111111112
https://dexscreener.com/solana/So11111111111111111111111111111111111111112
So11111111111111111111111111111111111111112 (with chainId set to "solana")

📤 What you get back

A real row from a run on 30 September 2026:

{
"ok": true,
"charged": true,
"recordType": "pair",
"query": "SOL/USDC",
"chainId": "base",
"dexId": "aerodrome",
"baseSymbol": "SOL",
"quoteSymbol": "USDC",
"priceUsd": 119.55,
"liquidityUsd": 713289.14,
"volumeH24": 7372325.26,
"priceChangeH24": 2.46,
"marketCapUsd": 28813210,
"snapshotAt": "2026-09-30T02:24:25.000Z",
"sourceAgeSeconds": 47,
"pairUrl": "https://dexscreener.com/base/0x1131db5977242a03ebead1acd18f80a9a29e5922",
"pairAddress": "0x1131DB5977242a03eBeaD1aCD18F80A9A29e5922",
"baseAddress": "0x311935Cd80B76769bF2ecC9D8Ab7635b2139cf82",
"quoteAddress": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"priceNative": 119.5566,
"liquidityBase": 2171.1728,
"liquidityQuote": 453710,
"fdvUsd": 28813210,
"volumeH6": 1534194.95,
"volumeH1": 379441.31,
"volumeM5": 29220.53,
"priceChangeH6": 0.49,
"priceChangeH1": 0.05,
"priceChangeM5": 0.05,
"buysH24": 5902,
"sellsH24": 5496,
"labels": [],
"pairCreatedAt": null,
"retrievedAt": "2026-09-30T02:25:12.901Z"
}
FieldHow to read it
queryThe term or address that produced the row, so you can join the output back to your input.
snapshotAt, sourceAgeSecondsWhen DexScreener produced these figures, and how many seconds old they were when read, normally 0 to about 60.
retrievedAtWhen the run read them. Always later than snapshotAt, and the less useful of the two.
priceUsd, priceNativeThe price in dollars, and in units of the quote token. Sub-cent tokens keep full precision, so expect values like 0.00000412.
liquidityUsd, liquidityBase, liquidityQuoteWhat sits in the pool, in dollars and in each token. This is the field that tells you whether ten dollars of trading would move the price.
marketCapUsd, fdvUsd, pairCreatedAtDexScreener's own figures. Null wherever it has none, as pairCreatedAt is above. Nothing is estimated to fill a gap.
labelsTags DexScreener attaches to some pools, such as v3 or CLMM. Usually empty.

🧾 Reading the output

recordType is not a safe filter on its own, because the free sample row says pair too.

RowHow to spot itBilled
A paircharged: true, recordType: "pair", no _sample fieldyes
The sample row_sample: true and charged: false. Written only when all three lists are emptyno
A diagnostic row_diagnostic: true, charged: false, recordType: "diagnostic", with an errorCode, the query it is about, and error and details in plain wordsno
CodeWhat it means
NO_RESULTSThe search or token matched nothing. A real answer, not a failure.
NOT_FOUNDNo pool exists at that address on that chain.
WRONG_TARGETWhat came back was not the pool or token you asked for, so it was dropped.
RESULT_TRUNCATED30 pairs came back, the most one search or token gives, so you have the top of the list and not all of it.
BAD_INPUTThe chain or address was not recognised, or a bare address had no chain.
RATE_LIMITEDDexScreener's rate limit stopped the run at that target.
SERVER_ERROR, NETWORKDexScreener errored or did not answer for that target. Usually worth one re-run.
UNEXPECTED_ERRORThe run hit an error it did not expect. Nothing was charged for it.
TIME_BUDGETThe run reached its time limit before reading that target. Nothing was charged for it. The run ends as failed only when the time limit stopped it before any pair came back.
NOTHING_MATCHEDThe first 25 targets came back empty with no rows anywhere, so the run stopped. It says how many targets went unread.
CHARGE_ERRORSome charges could not be recorded. The row gives the rows delivered and the rows charged.

charged: true is what tells a real row from a sample or diagnostic row. To keep only the data, filter on it, or drop every row carrying _sample or _diagnostic.

💡 What people use it for

  • Watching one token's pools across several chains and venues, to see where it actually trades and where the price differs.
  • Keeping a sheet of current prices and pool depth for a basket of tokens on a schedule, joining one run to the last on pairAddress.
  • Checking whether a token that looks liquid on a chart has any depth behind it. liquidityUsd next to volumeH24 answers that at a glance.
  • Pulling pairCreatedAt, early volume and starting liquidity for a list of new pools.

🚧 What it does not do

  • No advice. No score, rating, signal or prediction anywhere in the output. Just the numbers.
  • No live feed. A price can be up to a minute old; sourceAgeSeconds says how old. For sub-second prices, use the trading venue's own feed.
  • No history. No candles, no OHLC, no time series. Only the current snapshot and the change percentages DexScreener publishes.
  • No holders, wallets or individual trades.
  • No second page. 30 pairs per search or token, whatever you set.
  • No pools DexScreener does not list. Coverage is what DexScreener has.
  • No protection from copycat symbols. Names and symbols are chosen by whoever deployed the contract, and two tokens can share one. That is why every row carries the addresses.
  • It is not an official DEX Screener tool. Dami's Studio is independent and is not affiliated with or endorsed by DEX Screener, or by any other company named on this page.

🧭 Which market data scraper do you need?

If you wantUse
Stock, ETF, index, FX and crypto quotes with daily price historyYahoo Finance Scraper
Coin prices, market caps and rankingsCoinGecko Scraper
Price, liquidity and volume of a DEX trading pairThis one
The daily Crypto Fear and Greed reading, back to 2018Crypto Fear and Greed Index Scraper
Large Polymarket trades and the wallets behind themPolymarket Whale Tracker
Company filings by keyword, ticker or CIKSEC EDGAR Scraper
Indian mutual fund NAVs, today's or back to 2010Indian Mutual Fund NAV Scraper

❓ Questions people ask

How fresh is the DexScreener price?

Between zero and about sixty seconds old. sourceAgeSeconds gives the exact age and snapshotAt the moment the figures were true.

What happens if my search matches nothing?

You get one free NO_RESULTS row and the run carries on to your other targets. "Nothing there" is a different code from "could not look", so you can tell them apart.

Can I get every pool for a token instead of just the biggest?

Yes. Turn on allPoolsPerToken. You get up to 30 pools per token and pay for each, which is why it is off by default.

Which chains work?

Any that DexScreener lists, in the same run. Write the chain in front of each address and mix them freely.

Is this financial advice?

No. It returns published market data and nothing else.

Can I call it from code or connect it to an AI assistant?

Yes. The API tab has ready-made code for Python, JavaScript and the command line. For Claude, ChatGPT or another MCP client, connect https://mcp.apify.com/?tools=fetch-actor-details,dami_studio/dexscreener-pairs-scraper. Either way the run happens on your Apify account at the same price.

These are public market figures, open to anyone, about pools rather than people. Check DexScreener's terms before you republish them. Apify's write-up on the legality of web scraping is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the input and the run ID, and the errorCode rows usually show what went wrong.