DEX tokens
One list of DEX tokens, a page at a time, optionally on one chain, filtered and sorted.
Query parameters
liststringDefaulttrendingtrending,neworgainers, in any casewindowstringDefault24h5m,1h,4hor24h. Picks the list (below) and the periodvolume,txns,tradersandpercent_changefilter and sort onchain_slugstringDefaultall chainsAslugfrom/dex/chains. One the list does not cover is an empty pagepage,size,limit,offsetintegerDefaultsize20As on/assetssortstringDefaultthe list's orderprice,volume,liquidity,market_cap,fdv,percent_change_5m,percent_change_1h,percent_change_4h,percent_change_24h,txns,traders,launch_time, written<key>[:asc|desc]; no direction is ascending.volume,txnsandtradersare those ofwindow. Anullsorts first ascending and last descending; equal values keep the list's orderselectcomma-separated stringsAt most 100. Return only theseitems[]fields, plusid; a name not among them is a400. Selectchain_slugandaddressto call the other/dexendpoints. See Choosing fields withselect- filtersDefaultthe list'sBelow
Filters, each _min and _max inclusive. A filter sent empty is the same as one not sent:
the list's default applies.
| Filter | Value | Bounds |
|---|---|---|
liquidity_min, liquidity_max |
decimal ≥ 0 | liquidity |
volume_min, volume_max |
decimal ≥ 0 | the volume over window |
market_cap_min, market_cap_max, fdv_min, fdv_max |
decimal ≥ 0 | market_cap, fdv |
txns_min, txns_max, traders_min, traders_max |
integer ≥ 0 | transactions, traders over window |
age_hours_min, age_hours_max |
decimal ≥ 0 | hours since launch_time |
percent_change_24h_min, percent_change_24h_max |
decimal | percent_change["24h"], whatever window |
percent_change_min, percent_change_max |
decimal | the change over window |
hide_high_risk |
true or false |
true drops risk_level high_risk; unknown and null stay. Rows from our backup copy of the 24-hour Trending list, served when the published list is unavailable, all carry risk_level null, so this filter drops none of them |
has_social |
true or false |
true keeps tokens with a website, X or Telegram link |
A token whose value is null does not pass a bound on it. A _min above its _max is an empty
page. Each list has default filters, shown in filters.defaults: none on Trending;
liquidity_min 10000, volume_min 1000 and hide_high_risk on New; liquidity_min 50000,
volume_min 10000, percent_change_24h_max 100000 and hide_high_risk on Gainers. A filter
you send replaces that list's default for it.
Which list. window=24h serves the list named. A shorter window on trending serves
Trending's version for that window. On gainers, it serves Gainers' version for that window,
followed by the tokens of the 24-hour Gainers and Trending lists that are not in it, by their
change over the window, highest first, none above its last row. On new, every window serves
the same list, with that window's figures. A list that is missing or more than three hours old
is an empty page with data_time: null and stale: true; for a shorter window, the 24-hour list
does not stand in for it.
Order without sort. The 24-hour Trending list by trending_rank, or by chain_rank on one
chain. Every other list — Trending's shorter windows included — in the order CoinMarketCap gives
it, with Gainers' fill after it.
Response
The example's values are illustrative, and filters shows five of its twenty keys.
| Field | Type | Notes |
|---|---|---|
items[] |
array | [] past the last page |
page, total_page, total |
number | As on /assets; total counts the tokens after chain_slug and the filters |
list, window |
string | What was served |
data_time |
string or null |
When the list was built; null when it is missing or more than three hours old |
stale |
boolean | The list is more than two hours old, or missing |
filters.applied, filters.defaults |
object | Every filter above by name: what this request used, and the list's defaults. Amounts, percentages and age_hours_* are decimal strings, txns_* and traders_* integers, null no bound; hide_high_risk and has_social are booleans |
items[].id |
string | The token's id: one per chain and address |
items[].chain_slug, items[].address |
string | Name the token on the other /dex endpoints |
items[].symbol, items[].name, items[].logo |
string | Those of the asset we match the token to, CoinMarketCap's otherwise — and CoinMarketCap's logo when that asset has none; logo is "" when there is none |
items[].price, items[].volume_24h, items[].liquidity, items[].market_cap, items[].fdv |
string or null |
USD |
items[].percent_change |
object | Always the keys 5m, 1h, 4h, 24h; each a percentage string ("2.31" is 2.31%) or null |
items[].txns, items[].traders |
number or null |
Over 24 hours |
items[].windows |
object | Always the keys 5m, 1h, 4h, 24h, each {volume, txns, traders}, any of them null |
items[].trending_rank, items[].chain_rank |
number or null |
Its place in the 24-hour Trending list, overall and on its chain; null when it is not in it |
items[].launch_time |
string or null |
When the token was created, as CoinMarketCap records it |
items[].last_trade_time |
string or null |
The newest trade we have seen |
items[].risk_level |
string or null |
safe, caution, high_risk or unknown, from CoinMarketCap. Tolerate a value you do not recognise |
items[].inactive |
boolean | No trade in 24 hours, or liquidity under $1,000 |
Examples
# Trending, first page
curl -H "X-Api-Key: <your-api-key>" \
"https://open-api.coinworldcap.com/openapi/v1/dex/tokens"
# The biggest 1-hour gainers on Solana with at least $50,000 of liquidity
curl -H "X-Api-Key: <your-api-key>" \
"https://open-api.coinworldcap.com/openapi/v1/dex/tokens?list=gainers&window=1h&chain_slug=solana&liquidity_min=50000&sort=percent_change_1h:desc&limit=10"
| HTTP status | code |
When |
|---|---|---|
| 400 | 40000 | list, window or sort outside the values above; a filter that is not a number of its kind (a count that is not a whole number, an amount below zero, more than 64 characters, an exponent beyond ±64), or a switch other than true/false; a select name that is not an items[] field, or more than 100 names; the paging limits of /assets |
| 503 | 50300 | No Trending list younger than three hours |
id and slug are not parameters here and are ignored. The other errors are in
Errors.