Discovery and markets API

Tokens that just launched, are about to graduate, or just graduated

Answers one of three disjoint lifecycle stages: launched (every chain, NO risk signal), or graduating/graduated (Solana only, has a risk score). Identify rows by address, not symbol.

GET/api/external/discovery/new-listings/{chain}

What it returns

Answers exactly ONE of three disjoint lifecycle questions, chosen by the REQUIRED stage parameter: stage=launched ("which tokens just received their first pooled liquidity?"), stage=graduating ("which tokens are about to finish bonding?", Solana only) or stage=graduated ("which tokens just finished bonding and started trading on a real AMM?", Solana only). These three sets share NO rows with each other at any given moment — a token cannot be in two lifecycle states at once — so there is no default stage and an unknown value is rejected before any upstream call. IMPORTANT — stage=launched CARRIES NO RISK SIGNAL OF ANY KIND, ON ANY CHAIN, INCLUDING SOLANA: no source behind this stage publishes a verified/risk/scam field at all, so rugScore and rugged are always null for it. A brand-new token with real, non-zero liquidity and one that is an outright impersonator of a well-known ticker look identical in this stage's response — treat every stage=launched row as UNVETTED. stage=graduating and stage=graduated DO carry a risk signal (rugScore, rugged), from an independent source, only on Solana. Rows are identified by address, never by symbol: symbols repeat inside one page, and impersonation of well-known tickers is routine (three separate tokens named "USDC" were seen in one stage=graduating snapshot). newestSinceUnixTime/oldestSinceUnixTime report the actual span of the returned page rather than assuming one: freshness varies enormously and unpredictably by chain for stage=launched, measured between 10 seconds (ARC) and nearly 4 hours (Ethereum) for the identical request — a four-hour-old Ethereum page and a ten-second-old ARC page are both normal answers and must not be treated as equally fresh; a STABLE page can span days. There is no pagination: stage=launched returns at most 20 rows (no working offset — accepted upstream but silently ignored, so it is not exposed here) and stage=graduating/stage=graduated each return a fixed 100-row page.

Chains

  • Solana SOL
  • BNB Chain BNB
  • Ethereum ETH
  • Stable STABLE
  • Base BASE
  • Robinhood Chain RHC
  • Arc ARC

Request

Send your key in the x-dex-data-key header. Replace each <placeholder> with a real value.

curl -H "x-dex-data-key: $DEXDATA_API_KEY" \
  "https://api.dexdata.io/api/external/discovery/new-listings/SOL?stage=launched"
Parameters
ParameterDescription
stage

query · string · required

REQUIRED, no default. "launched" (every chain), "graduating" or "graduated" (Solana only — every other chain 400s for these two, enforced after the API-key gate).launchedgraduatinggraduated
chain

path · string · required

Every trading chain answers stage=launched. Only SOL answers stage=graduating or stage=graduated; on any other chain those two stages return 400 even though the chain is valid for this endpoint. CELO, ARB, OP and SCROLL return 400 here.

Response fields

A JSON response. Every field is always present; null means the value could not be established, never zero.

Response fields of Tokens that just launched, are about to graduate, or just graduated
FieldTypeDescription
resultsobject[]Newest first, per the source's own ordering. Empty when the source genuinely has nothing.
results[].addressstringThe token's mint (Solana) or contract address (EVM). Never identify a row by symbol instead.
results[].namestring | nullThe name as reported by the underlying source, or null when none was reported.
results[].symbolstring | nullThe ticker as reported by the underlying source, or null when none was reported. Repeats inside one page.
results[].liquidityUsdnumber | nullPooled USD liquidity. A real 0 (measured on up to 15 of 20 rows on some chains, stage=launched) means "no liquidity yet OR not computed" — this source does not distinguish the two. null means no figure was reported at all, a different claim.
results[].sinceUnixTimenumber | nullUnix seconds. For stage=launched: when this pool first received liquidity. For stage=graduating/stage=graduated: the TOKEN's creation time — not specifically a "graduation" instant, because no such field is published on this row shape.
results[].venuestring | nullThe launch venue, e.g. "pumpfun". Present ONLY on stage=launched Solana rows — null on every other chain and on stage=graduating/stage=graduated means this source carries no such signal here, never "no venue".
results[].rugScorenumber | null0-100, higher = MORE risk. Present ONLY on stage=graduating/stage=graduated (Solana). null on stage=launched means this stage's source publishes no risk signal of any kind on any chain — never read null here as "confirmed clean". A real 0 IS "confirmed clean" and is preserved as 0.
results[].ruggedboolean | nullWhether the source has already flagged this token as rugged. null has the same meaning as rugScore: null.
newestSinceUnixTimenumber | nullThe most recent sinceUnixTime among the returned rows, or null when results is empty or every row's own timestamp was unavailable. Compare against "now" to judge how fresh THIS answer is — measured to vary from 10 seconds to nearly 4 hours across chains for the identical stage=launched request, so read it per response, never assume it.
oldestSinceUnixTimenumber | nullThe oldest sinceUnixTime among the returned rows — together with newestSinceUnixTime, the span this page actually covers.

Start building with DexData today

Sign in, create a key and make your first call in a minute. Free credits every month, and you only pay for calls that succeed.

Get a free API key