Discovery and markets API

Which tokens are climbing a bonding curve, or just graduated

Tokens on a bonding curve that traded in the last hour, or just graduated, on Solana/BNB, optionally in a progress band such as 70-99%. Read createdAtIso for age. No risk signal.

GET/api/external/discovery/launch-progress/{chain}

What it returns

Answers exactly ONE of two disjoint lifecycle questions, chosen by the REQUIRED stage parameter: stage=launching ("which tokens are closest to finishing their bonding curve right now?", sorted by completion percentage descending) or stage=graduated ("which tokens just finished their bonding curve?", sorted by graduation time descending, most recent first). stage=launching lists only tokens that traded within the last hour, so curves that finished funding long ago and never migrated are left out. These two sets share no rows with each other at any given moment, so there is no default stage and an unknown value is rejected before any upstream call. To screen a band of the curve, for example 70-99%, pass minProgressPct=70&maxProgressPct=99.99 with stage=launching: both bounds are inclusive, and without a max below 100 the top of the list is tokens already at 100% waiting to migrate. ONLY SOL AND BNB ARE SERVED — every other chain 400s naming itself. IMPORTANT — THIS ENDPOINT CARRIES NO RISK SIGNAL OF ANY KIND, ON EITHER CHAIN: its only wired source publishes no verified/risk/scam field at all, so a token appearing here, however close to graduating, is UNVETTED — follow up with security/authorities/sellability before treating it as safe. progressPct of 0 is a real, common reading meaning the launch has not started funding yet, never "unknown" — do not read a null progressPct as zero or a zero as null. Do not derive graduated from progressPct reaching 100: a token can sit at 100% funded with graduated still false while its migration transaction is pending. This is a DIFFERENT question from GET /discovery/new-listings?stage=graduating or ?stage=graduated: that endpoint derives migration from a different source's pool structure on Solana only; this endpoint reads a source-computed completion percentage covering SOL and BNB, and a live overlap check found the two rosters are not the same tokens. Rows are identified by address, never by symbol: symbol is null on some populated rows and is not unique in this population.

Chains

  • Solana SOL
  • BNB Chain BNB

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/launch-progress/SOL?stage=launching"
Parameters
ParameterDescription
stage

query · string · required

REQUIRED, no default. "launching" (closest to finishing first) or "graduated" (most recently graduated first).launchinggraduated
minProgressPct

query · number · optional

stage=launching only. Lowest completion percentage to list, 0-100, inclusive. Default 0.
maxProgressPct

query · number · optional

stage=launching only. Highest completion percentage to list, 0-100, inclusive. Default 100. Pass 99.99 to leave out tokens already at 100% waiting to migrate.
chain

path · string · required

Only SOL and BNB answer this endpoint — every other chain 400s naming itself rather than returning a blank not-found.

Response fields

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

Response fields of Which tokens are climbing a bonding curve, or just graduated
FieldTypeDescription
stagestringEchoes the requested stage.
resultsobject[]stage=launching: tokens that traded in the last hour, sorted by progressPct descending. stage=graduated: sorted by graduatedAtUnixTime descending. Empty when the source genuinely has nothing.
results[].addressstringThe token's mint (Solana) or contract address (BNB). 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 — confirmed null on some populated rows.
results[].progressPctnumber | nullBonding-curve/funding-round completion, 0-100. A real 0 means the launch has not started funding yet, never "unknown". null means this row was reported but not this field.
results[].graduatedboolean | nullWhether the migration transaction has actually landed. Do not derive this from progressPct reaching 100 — a token can sit at 100% funded with this still false.
results[].graduatedAtUnixTimenumber | nullUnix seconds once graduated; null (an explicit reported value, not an absence) while still climbing.
results[].createdAtUnixTimenumber | nullUnix seconds of the transaction that created this token, or null when that transaction is not indexed — seen on some Solana launches, mostly graduated ones.
results[].createdAtIsostring | nullThe same instant as createdAtUnixTime, as ISO 8601 UTC, e.g. 2026-09-24T20:24:58Z. null exactly when createdAtUnixTime is null.
results[].lastTradeUnixTimenumber | nullUnix seconds of the newest trade on any pool, or null when none was reported.
results[].venuestring | nullThe launch venue, e.g. "pump_dot_fun", "four.meme", "flap". null when none was reported.
results[].creatorstring | nullThe wallet that created this launch, or null when none was reported.
results[].marketCapUsdnumber | nullUSD market capitalisation, or null when none was reported.
results[].liquidityUsdnumber | nullPooled USD liquidity, or null when none was reported.

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