DexScreener API rate limits: the numbers and what stops you first
DexScreener documents 300 calls a minute on its pair endpoints and 60 on the rest, then sends nothing back to pace against. Here is what 36 requests on 23 September 2026 showed about its cache.

The short answer. The DexScreener API rate limit is 300 requests a minute on its four pair and token endpoints, and 60 a minute on the other nine, with none of the 13 endpoints needing a key. According to DexPaprika data, the Orca SOL/USDC pool I tested against logged 134,036 swaps in the 24 hours to 22:44 UTC on 23 September 2026, about 1.5 a second, while DexScreener's answer for that pool came from a cache that holds for up to 30 seconds.
That cache is what you meet first. The responses carry no rate-limit headers to pace against, and DexScreener's keyless WebSocket streams token profiles, boosts, takeovers and ads, with no feed for prices or swaps.
Rate limits are easy to look up and hard to observe in practice, so this goes endpoint by endpoint, then through 36 live requests, the WebSocket, and where DexPaprika fits if you need candles or swaps.
The DexScreener API rate limit, endpoint by endpoint
DexScreener prints a limit in the heading of each endpoint in its API reference. Thirteen endpoints, two tiers:
As of 23 September 2026, source: the DexScreener API reference, last edited 13 April 2026. The endpoints you would build a price feed on get the higher limit; the 60 a minute group is mostly promotion data. The reference documents only a 200 response for each endpoint, with no error shape for a refused call.
What 36 requests showed on 23 September 2026
35 HTTPS calls and one WebSocket connection, no key, well under every documented limit. The busiest endpoint got 16 calls in a minute against a documented 300.
As of 23 September 2026, measured against api.dexscreener.com. A sample this small can't show where refusals start.
No headers to pace against
Responses carried the usual Cloudflare set, including cache-control, cf-cache-status and, on hits, age. Nothing named ratelimit or retry-after appeared on hits or misses. So count your own calls, somewhere all your workers share.
The cache answers before the limit does
The pair, token and token-pairs endpoints go out with max-age=30; search, token profiles and boosts with max-age=60. My 15-call burst on the Orca SOL/USDC pair came back byte for byte identical, all from cache. Sampling /tokens/v1 every five seconds, the age climbed to 26 seconds, dropped to 1 and climbed again, and the price changed only at the drop.
That sets a floor on freshness: polling a 30 second endpoint once a second returns the same body about thirty times. Take your interval from cache-control instead. If you track many tokens, /tokens/v1 takes up to 30 comma-separated addresses, and my call for SOL, USDC and JUP returned three pairs in one request. For lookups by contract address across chains, here is a guide.
A unique query string goes past the cache
Appending a random parameter to /tokens/v1 produced a MISS on all four tries, and so did a search for a random term. Cloudflare defines a MISS as a response served from the origin web server, so cache-busting gets you data fetched at request time and sends every such call to DexScreener's own servers. I'd assume those are the calls the per-minute limits exist for, though DexScreener doesn't say how it counts.
What the WebSocket carries
DexScreener publishes a WebSocket API at wss://api.dexscreener.com, and it needs no key. Its own description is "real-time streaming updates for token data such as token profiles, boosts, and community take-overs". Its six streams mirror six of the 60 a minute REST endpoints: two for token profiles, two for boosts, one for community takeovers and one for ads.
I opened /token-boosts/latest/v1 with no credentials and got 101 Switching Protocols, then a first frame of 67,353 bytes holding 90 boosted tokens with chain, address, description, links and boost amounts. For a bot that reacts to new profiles or boosts, that's a clean push feed. None of the six streams carries pair prices, swaps or candles, so a live price from DexScreener means polling REST through the 30 second cache.
Is there a paid plan?
The reference describes no key, no authorization scheme and no plans, and DexScreener's FAQ calls it "our free API". The API terms, last updated 18 August 2023, go further: users "have the option to choose between a free and paid version", with rate limits detailed "during the API Services checkout stage". I found no checkout or API price list in the docs on 23 September 2026, so I can't say what a paid version costs or whether one is sold.
The same terms allow commercial use and rule out building a product "whose primary purpose is to compete directly with DEX Screener's product". Within that, 300 calls a minute with no account to open is a generous deal for a bot, a side project or a dashboard.
When you need candles, swaps or a ceiling you can raise
DexScreener's pair responses carry volume, transaction counts and price change over 5 minute, 1 hour, 6 hour and 24 hour windows, which covers a lot of dashboards. None of the 13 endpoints returns OHLCV candles or individual swaps. DexPaprika, our DEX data API, does: candles with no key needed to start, and swaps on the Dev and Pro plans. Hourly candles for the same Orca pool:
curl "https://api.dexpaprika.com/networks/solana/pools/Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE/ohlcv?start=-24h&interval=1h&limit=5"
Each candle has time_open, time_close, open, high, low, close and volume. The latest swaps on the pool, which since 30 September 2026 need a Dev or Pro plan on api-pro.dexpaprika.com, with your key on its own in the Authorization header:
curl -H "Authorization: YOUR_API_KEY" "https://api-pro.dexpaprika.com/networks/solana/pools/Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE/transactions?limit=3"
Each swap row has sender, recipient, amount_0, amount_1, price_0_usd and created_at. For push delivery, DexPaprika's SSE streams carry token prices, pool reserves, swap transactions and candles. A free key opens prices and pool reserves on any token it indexes; the swap and candle streams are on the paid plans.
The ceiling is the other difference: a free key from the console raises both the rate and the quota. Free-tier data can be up to 60 seconds delayed, so on freshness alone DexScreener's 30 second pair cache compares well. What DexPaprika adds is a real-time paid tier to move up to; the current numbers for every tier are on the pricing page.
Common questions
Is the DexScreener API free?
Its endpoints work with no key, signup or payment, and the FAQ calls it "our free API". The API terms also mention a paid version, but I found no public price list for one.
Do you need a DexScreener API key?
No. All 36 calls in this test went through with no key or authorization header, and the reference describes no authorization scheme.
What is the DexScreener API rate limit?
300 requests a minute on /latest/dex/pairs, /latest/dex/search, /token-pairs/v1 and /tokens/v1, and 60 a minute on the other nine, per each endpoint's heading in the reference.
What happens when you exceed it?
DexScreener doesn't document it, and I stayed under the limits, so I can't show you a refusal. With no retry-after header to follow, back off exponentially on any non-200.
Does the DexScreener API have OHLCV candles or trade history?
Not in its 13 REST endpoints or six WebSocket streams. See how to get OHLCV candles for any DEX token, and for live prices, streaming them over SSE.
How these numbers were measured
Everything above was read or measured on 23 September 2026, between 22:39 and 22:48 UTC.
The endpoints and limits come from the rendered DexScreener reference, cross-checked against its markdown export and embedded OpenAPI file; all 13 headings carry a limit. The streams come from the WebSockets page and the paid-version wording from the API terms.
The live test was 35 curl requests and one WebSocket upgrade to api.dexscreener.com, recording status, cf-cache-status, age and cache-control for each. The pool, Czfq3xZZDmsdGdUyrNLtRhGc47cXcZtLG4crryfu44zE, is the pair /tokens/v1 returned for wrapped SOL. The swap count, candles and swap fields came from DexPaprika's MCP tools between 22:44 and 22:45 UTC. Rate limits and cache policy can change without an announcement, so re-check before you design around them.
Full REST reference at docs.dexpaprika.com, and a per-DEX page for Orca on Solana. Deciding between polling and streaming? This guide covers when each makes sense.
Original CoinPaprika guide.