DXT Tools

DexScreener guide

DexScreener API: endpoints, limits, examples — and what it won't tell you

The DexScreener API explained: every public endpoint, rate limits, no key needed, curl/JS/Python examples — and the paid-activity data it never exposes.

By DXT Tools Research · updated Aug 23, 2026

The DexScreener API is a free, public, read-only REST API at https://api.dexscreener.com that returns the same live data you see on dexscreener.com: pairs, prices, liquidity, volume, token profiles, the current boost lists, active ads and community takeovers. There is no API key, no sign-up and no paid tier; the only rule is a per-endpoint rate limit. The official DexScreener API docs live at docs.dexscreener.com/api/reference.

This guide is the practical version of that reference: what each endpoint returns, how the rate limits are grouped, short working requests in curl, JavaScript and Python, the mistakes almost everyone makes once — and, because this is what DXT Tools is built on, an honest answer to the question developers ask most: does the DexScreener API show which tokens paid? Partly. The last section explains exactly where it stops.

What the DexScreener API is (and is not)

The DexScreener API is a plain HTTPS/JSON interface with a handful of GET endpoints and no authentication. You call a URL, you get JSON back. It is meant for bots, dashboards, Telegram alert channels and research scripts that need current DEX data without scraping the website.

It is not a full market-data platform. There are no historical candles, no trade-by-trade feed, no account and no SLA; the only push channel is a set of WebSocket streams mirroring the "latest" lists (see below). Every response reflects "now" (with a short server-side cache), so anything you want to know about the past — what a token's market cap was an hour ago, when a badge appeared — you have to record yourself, which is the gap DXT Tools fills for paid activity.

Data coverage is the same as the site: every pair with liquidity on a supported DEX across 100+ chains, identified by a chainId (for example solana, ethereum, bsc, base) plus a pair or token address.

Every public endpoint

The reference groups the endpoints into two families. The "latest lists" (and the per-token orders lookup) — what is currently on the profile, boost, ad and CTO pages — share the smaller limit. The pair and token lookups share the larger one. All paths are relative to https://api.dexscreener.com.

DexScreener API endpoints as listed on the official reference (August 2026)
EndpointWhat it returnsRate limit group
GET /token-profiles/latest/v1Latest tokens whose team bought Enhanced Token Info (the "Dex Paid" check-mark): chain, address, icon, header, description, links60 requests / min
GET /token-profiles/recent-updates/v1Recently edited profiles — the list behind "Dex Update" events60 requests / min
GET /token-boosts/latest/v1Latest boost purchases: chain, address, amount (this purchase) and totalAmount (active total)60 requests / min
GET /token-boosts/top/v1Tokens with the most active boosts right now60 requests / min
GET /orders/v1/{chainId}/{tokenAddress}Paid orders for one token (profile, ad, community takeover) with status and payment timestamp60 requests / min
GET /latest/dex/pairs/{chainId}/{pairId}One or more pairs by pair address: price, FDV, market cap, liquidity, volume, txns, price change300 requests / min
GET /latest/dex/search?q=…Pairs matching a query (symbol, name, pair or token address)300 requests / min
GET /token-pairs/v1/{chainId}/{tokenAddress}All pools of one token on one chain300 requests / min
GET /tokens/v1/{chainId}/{tokenAddresses}Pairs for up to 30 comma-separated token addresses on one chain300 requests / min

Two more "latest" lists exist for the other two paid products — active ads and community takeovers — at /ads/latest/v1 and /community-takeovers/latest/v1 (both documented at 60 requests per minute, checked 23 Aug 2026); they behave like the boost list and our collector polls them on the same budget. The reference also lists /metas/trending/v1 and /metas/meta/v1/{slug} for DexScreener's "metas" (narrative tags), at the same limit. The 300-per-minute figure for the pair and token lookups is as published in the OpenAPI blocks of the reference and as our collector budgets for it; re-read the reference before relying on it.

One legacy path, /latest/dex/tokens/{addresses}, still answers without a chain, but the chain-scoped /tokens/v1/{chainId}/… form is the documented one and is faster because it does not have to guess the chain.

DexScreener API rate limits, in practice

The DexScreener API rate limit is per endpoint group, not per endpoint: the profile, boost, order, ad and CTO lists share a 60 requests per minute budget, and the pair, token and search lookups share a 300 requests per minute budget. Exceed one and you get HTTP 429 on that group while the other keeps working.

What the limit means for a real bot:

  • Polling the "latest" lists in a round-robin at one request every 1.5 seconds uses about 40 of the 60 — the setting our own collector runs with. One per second is the absolute ceiling and leaves no room for retries.
  • Responses are cached server-side for a short moment, so two calls inside the same second usually return the same JSON; polling faster than the cache refreshes just burns budget.
  • Back off on 429 — wait 20–30 seconds before the next request to that group. Hammering through it extends the block.
  • Batch token lookups: one /tokens/v1/{chainId}/… call with 30 addresses costs one request, not thirty.
  • Limits are per client IP. A shared office, a NAT or a cloud function with a recycled egress IP shares one bucket.

There is no way to buy a higher limit. If 60 and 300 are not enough, the answer is caching and batching on your side, or reading a tracker such as DXT Tools that already does the polling (status page shows how the API is behaving right now).

DexScreener API pricing and API key: is it free?

Yes. There is no DexScreener API key, no registration and no paid plan; every endpoint in the reference is open to anyone who respects the rate limit. Searches for "dexscreener api pricing" usually end up on the marketplace, but that page sells products for token teams — Enhanced Token Info, boosts, ads — not API access. Paying for a profile or a boost changes what the API returns about that token; it does not change your limits.

The practical consequences: keep your own cache, expect the occasional 429 during busy launches, and do not put anything that needs a guaranteed feed behind a single anonymous endpoint. The terms of use on docs.dexscreener.com cover acceptable use; read them once if you run something commercial.

Example requests: curl, JavaScript, Python

Every call is a plain GET; no headers are required beyond a sensible User-Agent. The examples below are complete.

curl — the latest boost purchases across all chains:

curl -s https://api.dexscreener.com/token-boosts/latest/v1

curl — every pair of one token on Solana (replace the address):

curl -s https://api.dexscreener.com/token-pairs/v1/solana/TOKEN_ADDRESS

JavaScript (fetch, Node 18+ or browser) — price and market cap for a batch of tokens:

const r = await fetch("https://api.dexscreener.com/tokens/v1/solana/ADDR1,ADDR2"); const pairs = await r.json(); console.log(pairs[0].priceUsd, pairs[0].marketCap);

Python (requests) — search, then pick the most liquid pair:

import requests; pairs = requests.get("https://api.dexscreener.com/latest/dex/search", params={"q": "SOL/USDC"}, timeout=10).json()["pairs"]; best = max(pairs, key=lambda p: (p.get("liquidity") or {}).get("usd", 0))

Python — poll new Dex Paid profiles every 5 seconds (stay well inside the 60/min group):

import requests, time; URL = "https://api.dexscreener.com/token-profiles/latest/v1"; seen = set()

while True: items = requests.get(URL, timeout=10).json(); print([i["tokenAddress"] for i in items if i["tokenAddress"] not in seen]); seen.update(i["tokenAddress"] for i in items); time.sleep(5)

That is the whole mechanism behind a Dex Paid alert bot, and behind the DXT Tools collector: fetch the list, diff it against what you saw before, treat every new address as an event. Everything else — market cap at that second, ATH afterwards, "seen before" — is what you add on top.

Field names worth knowing in a pair object: chainId, dexId, pairAddress, baseToken.address, priceUsd, priceNative, liquidity.usd, fdv, marketCap, volume.h24, txns.h24.buys, priceChange.h1, pairCreatedAt, plus info (socials, images) once the team has bought a profile and boosts.active when boosts are running.

Common gotchas

  • Pairs, not tokens. Almost every lookup returns pairs. A token with five pools returns five objects with five different prices and liquidities; pick the deepest one (highest liquidity.usd) before you display "the" price.
  • chainId is a slug, not a number. Use solana, ethereum, bsc, base, arbitrum, polygon, avalanche, pulsechain, ton, tron, hyperevm and so on — the same segment you see in a dexscreener.com URL. EVM chain numbers like 1 or 56 do not work.
  • Addresses are case-sensitive on Solana and checksummed-or-lowercase on EVM chains; both are accepted, but compare them consistently in your own code.
  • Search is fuzzy. /latest/dex/search?q= matches symbol, name and address; a query by ticker returns every copycat. Resolve by contract address whenever you can.
  • The "latest" lists are snapshots, not streams. They hold the most recent entries only; if you poll slower than the list turns over on a busy day, you miss items. totalAmount on a boost entry is the running total, amount is that purchase.
  • Sub-second caching. Calling the same URL repeatedly within the cache window returns identical data; a cache-buster query parameter gets you past intermediate proxies, not past DexScreener's own cache.
  • Null fields are normal. marketCap, fdv, info and boosts are absent or null for brand-new or unpaid tokens. Guard every access.
  • No pagination. The endpoints return a fixed window; there is no page or offset parameter, and no way to ask for "boosts from yesterday".

DexScreener websocket and historical data

The reference now documents WebSocket streams at wss://api.dexscreener.com for the "latest" lists only — token profiles (latest and recent updates), community takeovers, ads, and boosts (latest and top) — pushing the same objects the REST lists return (websockets page, checked 23 Aug 2026). There is no documented stream for pair prices or trades: the website's own chart socket is undocumented and unsupported, and anything built on it breaks eventually. For price data the supported pattern is still polling the REST endpoints inside the limits; for paid-activity lists, the streams or polling both work.

For DexScreener historical data — candles, past prices, the state of the boost list an hour ago — you need another source or your own archive. Price history per pool is available from on-chain indexers and from APIs such as GeckoTerminal (which is what DXT Tools uses for the ATH-after-payment calculation), and paid-activity history is exactly what our archive keeps. If your question is "what was this token worth when it paid DexScreener", the token check already has the answer.

What DexScreener doesn't show you

Here is what polling those endpoints continuously looks like once you keep the history the API throws away: the latest payments across every chain, the market cap at that moment, and where each token is now.

When (UTC)TokenChainWhatPaid @ mcapSince paid
Aug 24, 2026 13:32 UTCEZA3Qw…SolanaAd
Aug 24, 2026 13:29 UTCEZA3Qw…SolanaDex Paid
Aug 24, 2026 13:24 UTC6kN6YS…SolanaAd
Aug 24, 2026 13:24 UTCNYFya5…SolanaAd
Aug 24, 2026 13:20 UTCDz2iVS…SolanaCTO
Aug 24, 2026 13:20 UTC6kN6YS…SolanaDex Paid
Aug 24, 2026 13:18 UTCNYFya5…SolanaDex Paid
Aug 24, 2026 13:16 UTCDUXYc7…SolanaAd
Aug 24, 2026 13:16 UTCBBeUZY…SolanaAd
Aug 24, 2026 13:13 UTCBBeUZY…SolanaDex Paid

Live data from the DXT Tools tracker — refreshes every minute while this page is open.

Open the live feed →

Frequently asked questions

Is the DexScreener API free?

Yes. The DexScreener API is free and public: no API key, no sign-up and no paid plan. The only constraint is the rate limit, 60 requests per minute for the profile, boost, order, ad and CTO lists and 300 per minute for pair, token and search lookups.

Do I need a DexScreener API key?

No. None of the documented endpoints accept or require a key. Requests are anonymous and limited per IP address. The marketplace sells token profiles, boosts and ads to token teams, not API access.

What is the DexScreener API rate limit?

Two groups: 60 requests per minute shared by the token-profiles, token-boosts, orders, ads and community-takeover endpoints, and 300 requests per minute shared by pairs, tokens, token-pairs and search. Exceeding a group returns HTTP 429 for that group.

Does the DexScreener API show which tokens paid?

Only the current state: the latest profile, boost, ad and CTO lists, and per-token order status. It does not give payment history, the market cap at payment or what happened after. DXT Tools records those from the same endpoints.

Does DexScreener have a websocket API?

Only for the paid-activity lists: the reference documents WebSocket streams for the latest token profiles, profile updates, boosts, ads and community takeovers. There is no documented stream for prices or trades; the chart socket on the website is unsupported. For market data, poll the REST endpoints within the limits.

Can I get historical data from the DexScreener API?

No. Every endpoint returns current data only; there are no candles, no past prices and no pagination into older boosts or profiles. Use an indexer such as GeckoTerminal for price history and a tracker such as DXT Tools for paid-activity history.

How do I use the DexScreener API in Python?

Use the requests library: requests.get("https://api.dexscreener.com/tokens/v1/solana/ADDRESS", timeout=10).json() returns a list of pair objects with priceUsd, liquidity, fdv, marketCap and volume. No headers or key are needed; keep calls under the rate limit.

DXT Tools Research · On-chain paid-activity tracking since 2026

The team behind DXT Tools — we record every DexScreener paid action (Dex Paid, boosts, ads, CTO) across every chain, the market cap at that moment and what happened afterwards, then publish what the data says.

Last updated Aug 23, 2026. About DXT Tools