Discovery and markets API
Which tokens are paying for visibility on the listing venue right now?
The tokens currently buying boosts, ads or an enhanced listing profile, across every chain at once, newest or largest first. Spend is in the listing units, never a quality signal.
/api/external/discovery/promotedWhat it returns
Who is currently paying to be seen, across every chain at once. feed picks the product: boosts-top is the standing ranking of tokens by boost credits bought, largest first; boosts-recent is the latest boost purchases, newest first, each with the size of that purchase and the running total; ads is the latest paid placements, newest first; profiles is the listings whose enhanced profile was published most recently. The order is always the source's and is never re-sorted here.
One fixed page. The upstream feed takes no filter and sends a fixed number of rows (30 on every feed measured). chain therefore narrows THAT PAGE rather than asking for a chain, so a chain with promoted tokens can still answer an empty list when none of them is on the page. feedSize is how many rows the page held, so count: 0 with a large feedSize means "none on this page", not "nobody is paying".
Paying for visibility is not a quality signal. It says money was spent on presentation, and nothing about the token. For one token's own lifetime boost total use promotion instead.
Chains
- Solana SOL
- Ethereum ETH
- BNB Chain BNB
- Base BASE
- Stable STABLE
- 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/promoted"
| Parameter | Description |
|---|---|
feedquery · string · optional | Which promotion product to list. boosts-top (default): ranked by boost credits bought. boosts-recent: the latest purchases. ads: the latest paid placements. profiles: the latest published listing profiles.boosts-topboosts-recentadsprofiles |
chainquery · string · optional | Keep only the rows on this chain. Omit for every chain. Filters the page, see above. |
limitquery · integer · optional | How many rows to return, 1 to 100, applied after chain. Defaults to 30. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
feed | string | The product listed. |
chain | string | null | The chain the page was narrowed to, or null when it was not. |
feedSize | integer | How many rows the source sent, before chain and limit. Not a total of everything being promoted. |
count | integer | How many rows are in promotions. |
promotions | object[] | In the source's order. |
promotions[].chain | string | null | The chain the token is promoted on, or null when the listing is on a chain this API does not publish — the feeds cover the whole venue, not only these chains. |
promotions[].chainRef | string | The listing's own chain identifier, e.g. solana or bsc. Always present, including when chain is null. |
promotions[].tokenAddress | string | The token's mint or contract address on that chain. |
promotions[].description | string | null | The project's own blurb on the listing. Null when the listing carries none. |
promotions[].boostTotal | number | null | Boost feeds: the running total bought for this token, in the listing units. Null on the other feeds. |
promotions[].boostLatest | number | null | Feed boosts-recent: the size of the single purchase that put the row on the feed. |
promotions[].adType | string | null | Feed ads: which placement was bought, e.g. tokenAd, trendingBarAd. |
promotions[].adImpressions | integer | null | Feed ads: impressions bought. Null — never 0 — when the placement was sold by duration instead. |
promotions[].adDurationHours | number | null | Feed ads: hours bought. Null — never 0 — when the placement was sold by impressions instead. |
promotions[].adStartedAt | string | null | Feed ads: when the placement started, ISO-8601. |
promotions[].communityTakeover | boolean | null | Feed profiles: true when the community holds the listing profile rather than the project itself. |
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