
Congress Stock Trades Scraper
scrape.ly/store/querystone/congress-trades-scraperNewsBusiness
3 monthly users

Scrape DexScreener without an API key: trending, new and top DEX pairs on any chain with the website's filters (liquidity, market cap, FDV, age, transactions, volume), token and pair lookups, keyword search, boosted tokens, token profiles and community takeovers.
Get DexScreener's live DEX data as clean JSON: trending, new and top pairs on any chain with the same filters as the website, plus token and pair lookups, keyword search, boosted tokens, token profiles and community takeovers. Pages of 100 pairs come back in well under a second. No login, no API key, and you pay only for the rows you save.
| Field | What it does |
|---|---|
mode | screener, search, tokens, pairs, boosts-latest, boosts-top, profiles, takeovers or ads |
chain | Chain id such as solana, ethereum, base, bsc (empty = all chains) |
maxResults | Maximum rows for the run (0 = no limit) |
rankBy, order, timeframe | Screener sort (trending score, volume, liquidity, market cap, pair age, ...), direction and time frame |
startUrls | DexScreener screener or pair URLs; they replace the screener settings |
searchQueries | Search mode: names, symbols or addresses |
tokenAddresses / pairAddresses | Lookup modes: chain:address, bare addresses or pair URLs |
minLiq ... maxPriceChange | Screener filters (USD, hours, counts, %), activity filters use filterTimeframe |
dexIds, profile, boosted, ads | Only these DEXes, only tokens with a profile, boosts or ads |
allPools | Also save every other pool of each token |
{
"mode": "screener",
"chain": "solana",
"rankBy": "trendingScoreH6",
"order": "desc",
"timeframe": "h24",
"minLiq": 10000,
"maxAge": 24,
"maxResults": 100
}
Pasting a URL works too:
{
"startUrls": [{ "url": "https://dexscreener.com/solana?rankBy=volume&order=desc&minLiq=50000&maxAge=72&profile=1" }],
"maxResults": 200
}
Pair rows use the same shape as DexScreener's public API, so existing code keeps working. Screener rows add the extra stats.
| Field | Description |
|---|---|
chainId, dexId, pairAddress, url | Where the pair trades and its DexScreener page |
baseToken, quoteToken | Address, name and symbol |
priceUsd, priceNative | Current price in USD and in the quote token |
txns, volume, priceChange | Buys and sells, USD volume and price change % for 5m, 1h, 6h and 24h |
liquidity, marketCap, fdv | Liquidity (USD, base, quote), market cap and FDV |
pairCreatedAt, pairAgeHours | Launch time (Unix ms) and age in hours |
info | Logo, header, websites, socials and description |
boosts | Active boosts |
makers, buyers, sellers, volumeBuy, volumeSell | Unique traders and buy and sell volume per time frame (screener) |
launchpad | Launchpad, bonding progress, creator and migration DEX (screener) |
rank, scrapedAt | Position in the list and scrape time |
Feed rows (boosts-latest, boosts-top, profiles, takeovers, ads) contain the token address, profile links, boost amounts or claim date, plus name, symbol, priceUsd, marketCap, liquidityUsd, volume24h, priceChange24h and the full topPair.
Example screener row (trimmed):
{
"chainId": "solana",
"dexId": "pumpswap",
"url": "https://dexscreener.com/solana/ggm3wpy8mtxx7afvs1rsxbztbnz9kk1heg9mbfmyada1",
"pairAddress": "GGM3WPy8Mtxx7AFvS1RsxbZTbnz9KK1HEG9MbFMyADA1",
"baseToken": { "address": "D61pTaTqR93axxVvu7AX5TW6c3a4vhffPPMfCnsYpump", "name": "The Owldacity", "symbol": "OWLDACITY", "decimals": 6 },
"quoteToken": { "address": "So11111111111111111111111111111111111111112", "name": "Wrapped SOL", "symbol": "SOL" },
"priceNative": "0.000007233",
"priceUsd": "0.0007630",
"txns": { "m5": { "buys": 491, "sells": 196 }, "h24": { "buys": 30937, "sells": 12419 } },
"volume": { "m5": 5472.76, "h24": 1222374.48 },
"priceChange": { "m5": 0.32, "h24": 1097.0 },
"liquidity": { "usd": 76856.32, "base": 51627940.0, "quote": 355.1658 },
"fdv": 756704.0,
"marketCap": 756704.0,
"pairCreatedAt": 1792096236000,
"info": {
"imageUrl": "https://cdn.dexscreener.com/cms/images/kmAW8gHTa2pUo1HY?width=800&height=800&quality=95&format=auto",
"websites": [{ "url": "https://theowldacity.site", "label": "Website" }],
"socials": [{ "url": "https://x.com/owldacity", "type": "twitter" }]
},
"boosts": { "active": 500 },
"makers": { "h24": 8186 },
"buyers": { "h24": 7684 },
"sellers": { "h24": 3726 },
"launchpad": { "id": "pumpfun", "progress": 100.0, "migrationDex": "pumpswap" },
"pairAgeHours": 4.28,
"rank": 1,
"scrapedAt": "2026-10-16T00:47:16Z"
}
You pay $2.50 per 1,000 rows ($0.0025 per pair, token or feed row), plus a small platform usage fee for compute and proxy traffic. For example, 1,000 trending pairs cost about $2.50 in results. Errors, skipped inputs and empty results are never charged. Set a maximum total charge on the run and the scraper stops cleanly when it is reached.
Is it legal to scrape DexScreener? The scraper reads public market data that DexScreener shows to every visitor. You are responsible for how you use the data and for following DexScreener's terms.
Do I need an account, API key or proxy? No. The default datacenter proxy works well, and no login is used.
How many results can I get? The screener lists every pair DexScreener has for your filters (tens of thousands on busy chains) in pages of 100. Search returns up to 30 pairs per query, and each feed has up to 30 of the latest tokens.
Why is a field empty? DexScreener does not have every value for every pair: young tokens often lack a profile, market cap or socials, and some stats only exist in the screener. Empty values are left out instead of being guessed.
Can I schedule it or use it from code? Yes. Schedule runs in the console, or start them over the API and read the dataset as JSON or CSV.
I already use another DexScreener scraper. Will my code work?
Pair rows keep the field names of DexScreener's public API (priceUsd, txns, volume, liquidity, info, ...), so most pipelines need no changes.
Every field below can be set in the run form, passed through the API, or saved as a task. Unset fields fall back to the defaults shown.
modeenumOptionalWhat to scrape
Screener: trending, new or top pairs by chain with filters (like the DexScreener website). Search: pairs matching keywords. Tokens / Pairs: look up addresses. Feeds: the latest boosted tokens, top boosted tokens, new token profiles, community takeovers or ads.
chainenumOptionalChain
Blockchain for the screener (empty = all chains). Also filters the search and feed modes.
maxResultsintegerOptionalMax results
Maximum number of rows to save for the whole run. The screener pages through 100 pairs at a time; 0 = no limit.
rankByenumOptionalSort by
Screener ranking, the same choices as the DexScreener website.
orderenumOptionalOrder
Descending (highest first) or ascending. Pair age ascending = newest first.
timeframeenumOptionalTime frame
Screener time frame: only pairs active in this window are listed.
startUrlsarrayOptionalDexScreener URLs
Optional. Paste screener URLs straight from dexscreener.com (any chain, DEX, sort and filters, e.g. https://dexscreener.com/solana?rankBy=volume&order=desc&minLiq=10000) or pair pages. When set, they replace the screener settings above.
searchQueriesarrayOptionalSearch queries
Search mode: token names, symbols or addresses. DexScreener returns up to 30 pairs per query.
tokenAddressesarrayOptionalToken addresses
Tokens mode: token addresses, optionally as chain:address (solana:JUPy...). Returns the main pair of each token, or every pool with 'All pools'.
pairAddressesarrayOptionalPair addresses
Pairs mode: pair addresses as chain:address, bare addresses or dexscreener.com pair URLs.
Screener filters, the same ones the DexScreener website offers. All optional.
minLiqintegerOptionalMin liquidity
Minimum liquidity in USD.
maxLiqintegerOptionalMax liquidity
Maximum liquidity in USD.
minMarketCapintegerOptionalMin market cap
Minimum market cap in USD.
maxMarketCapintegerOptionalMax market cap
Maximum market cap in USD.
minFdvintegerOptionalMin FDV
Minimum fully diluted valuation in USD.
maxFdvintegerOptionalMax FDV
Maximum fully diluted valuation in USD.
minAgeintegerOptionalMin pair age
Minimum pair age in hours.
maxAgeintegerOptionalMax pair age
Maximum pair age in hours (e.g. 24 for pairs launched in the last day).
filterTimeframeenumOptionalActivity filter window
Time window for the transaction, buy, sell, volume and price change filters below.
minTxnsintegerOptionalMin transactions
Minimum transactions in the activity window.
maxTxnsintegerOptionalMax transactions
Maximum transactions in the activity window.
minBuysintegerOptionalMin buys
Minimum buys in the activity window.
maxBuysintegerOptionalMax buys
Maximum buys in the activity window.
minSellsintegerOptionalMin sells
Minimum sells in the activity window.
maxSellsintegerOptionalMax sells
Maximum sells in the activity window.
minVolumeintegerOptionalMin volume
Minimum volume in USD in the activity window.
maxVolumeintegerOptionalMax volume
Maximum volume in USD in the activity window.
minPriceChangenumberOptionalMin price change
Minimum price change in % in the activity window (can be negative).
maxPriceChangenumberOptionalMax price change
Maximum price change in % in the activity window (can be negative).
dexIdsarrayOptionalDEXes
Only these DEXes (ids as on DexScreener, e.g. raydium, pumpswap, uniswap, pancakeswap).
profilebooleanOptionalHas profile
Only pairs whose token has a DexScreener profile (logo, socials, website).
boostedbooleanOptionalIs boosted
Only pairs with active boosts.
adsbooleanOptionalHas ads
Only pairs with recent DexScreener ads.
allPoolsbooleanOptionalAll pools
Also save every other liquidity pool of each token (up to 30 per token). Each pool is a separate row.
includeMarketDatabooleanOptionalAdd market data to feeds
Feed modes (boosts, profiles, takeovers, ads): add price, market cap, liquidity, volume and the top pair of each token.
proxyConfigurationobjectOptionaldefault {"useScrapelyProxy":true,"scrapelyProxyGroups":["DATACENTER…Proxy
Datacenter proxies work well for DexScreener.
Every run writes its results to a dataset. Preview it in the dashboard, then export it or read it through the API.
| Field | Type | Description |
|---|---|---|
| chainId | string | null | Blockchain id (solana, ethereum, base, bsc, ...) |
| dexId | string | null | DEX id (raydium, pumpswap, uniswap, ...) |
| url | string | null | DexScreener pair page |
| pairAddress | string | null | Pair (pool) address |
| labels | array | null | Pool labels such as v2, v3, wp |
| baseToken | object | null | Base token: address, name, symbol (and decimals, total supply in the screener) |
| quoteToken | object | null | Quote token: address, name, symbol |
| priceNative | string | null | Price in the quote token |
| priceUsd | string | null | Price in USD |
| txns | object | null | Buys and sells for m5, h1, h6, h24 |
| volume | object | null | Volume in USD for m5, h1, h6, h24 |
| priceChange | object | null | Price change % for m5, h1, h6, h24 |
| liquidity | object | null | Liquidity: usd, base, quote |
| fdv | number | null | Fully diluted valuation in USD |
| marketCap | number | null | Market cap in USD |
| pairCreatedAt | number | null | Pair creation time (Unix ms) |
| pairAgeHours | number | null | Pair age in hours at scrape time |
| info | object | null | Token profile: imageUrl, header, openGraph, websites, socials, description |
| boosts | object | null | Active boosts |
| makers | object | null | Unique traders per time frame (screener) |
| buyers | object | null | Unique buyers per time frame (screener) |
| sellers | object | null | Unique sellers per time frame (screener) |
| volumeBuy | object | null | Buy volume in USD per time frame (screener) |
| volumeSell | object | null | Sell volume in USD per time frame (screener) |
| launchpad | object | null | Launchpad id, bonding progress %, creator, migration DEX (screener) |
| rank | number | null | Position in the list or search result |
| searchQuery | string | null | Search query that found this pair |
| inputToken | string | null | Token address from the input |
| feed | string | null | Feed the row came from: boost, top-boost, profile, community-takeover, ad |
| tokenAddress | string | null | Token address (feeds) |
| description | string | null | Token description (feeds) |
| icon | string | null | Token icon URL (feeds) |
| header | string | null | Header image URL (feeds) |
| openGraph | string | null | Open Graph image URL (feeds) |
| websites | array | null | Websites (feeds) |
| socials | array | null | Social links (feeds) |
| boostAmount | number | null | Boost amount (latest boosts) |
| boostTotalAmount | number | null | Total active boosts |
| claimDate | string | null | Community takeover claim date |
| adDate | string | null | Ad date |
| adType | string | null | Ad type |
| adImpressions | number | null | Ad impressions |
| cto | boolean | null | Community takeover flag |
| position | number | null | Position in the feed |
| name | string | null | Token name (feeds with market data) |
| symbol | string | null | Token symbol (feeds with market data) |
| liquidityUsd | number | null | Top pair liquidity in USD (feeds) |
| volume24h | number | null | Top pair 24h volume in USD (feeds) |
| priceChange24h | number | null | Top pair 24h price change % (feeds) |
| topPair | object | null | Top pair of the token, same shape as pair rows (feeds) |
| scrapedAt | string | null | Scrape time (UTC) |
You pay for the events the actor reports, such as each result or page it produces. Platform usage is included in the event prices.
| Event | Charged when | Price |
|---|---|---|
| Result | Charged per pair, token or feed row saved to the dataset. | $0.0025 |
Run this actor from your own code. Swap in your API token and the examples work as-is.
import { ScrapelyClient } from 'scrapely-client'
const client = new ScrapelyClient({ token: process.env.SCRAPELY_TOKEN })
// Start the actor and wait for the run to finish.
const run = await client.actor('querystone/dexscreener-scraper').call({
"mode": "screener",
"chain": "solana",
"maxResults": 20,
"rankBy": "trendingScoreH6",
"order": "desc",
"timeframe": "h24",
"includeMarketData": true,
"proxyConfiguration": {
"useScrapelyProxy": true,
"scrapelyProxyGroups": [
"DATACENTER"
]
}
})
// Read the dataset the run produced.
const { items } = await client.dataset(run.defaultDatasetId).listItems()
console.log(items)Tokens live in your account settings. Keep them server-side: a token carries the full permissions of your account.
Connect the Scrape.ly MCP server once and your agent can run this actor as a tool. Pick your tool:
Fetch scrape.ly/agents.md and run querystone/dexscreener-scraperPaste into Claude Code, Codex, Cursor or any AI agent. It signs you in once in the browser.
{
"mcpServers": {
"scrapely": {
"url": "https://api.scrape.ly/mcp?tools=actors,runs,storage,docs&actors=querystone/dexscreener-scraper"
}
}
}No key in the file: your client opens the browser to sign you in the first time it connects.
Inputs the developer prepared for common jobs. Open one to see its input, then copy it to your account to run it as-is or adjust it.
Pairs with price, volume and liquidity.
Pairs with at least 100k liquidity.
Trading pairs for one Solana token.
Scrape.ly gives you the infrastructure, the tooling, and the team to extract, process, and operationalize web data at any scale. Setup takes minutes. The advantage lasts forever.