Tutorial

How To Sort And Filter Cryptocurrency Listings

CoinMarketCap APIUpdated 3 August 2026 · 8 min read
How To Sort And Filter Cryptocurrency Listings, a CoinMarketCap API guide, illustrated with market data being sorted through a funnel.

The listings endpoint is far more capable than its default top-100 view suggests. It supports a full set of sort and filter parameters that let you rank by any market metric and narrow results to exactly the assets you care about, all server-side, before the data ever reaches your code.

This guide is the parameter reference for that. It covers every sort option, every filter, the aux parameter for controlling response size, and how to combine them.

Parameter availability can change. Confirm the current endpoint reference before shipping production code.

The endpoint

Every example on this page uses the same route. What changes is the query string.

GET/v1/cryptocurrency/listings/latestRanked, filterable market listing

Sort parameters

sort

Controls which field the results are ordered by.

Value Description
market_cap CoinMarketCap market cap rank (default)
market_cap_strict Strict market cap: latest price multiplied by circulating supply
volume_24h 24-hour trading volume
percent_change_24h 24-hour price percentage change
name Alphabetical by asset name
symbol Alphabetical by ticker symbol
date_added Newest listings first, with sort_dir=desc
price Current price
circulating_supply Circulating supply
total_supply Total supply

sort_dir

asc or desc. Default is desc.

Top gainers over 24 hours

bash
curl -G 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest' \
  --data-urlencode 'sort=percent_change_24h' \
  --data-urlencode 'sort_dir=desc' \
  --data-urlencode 'limit=20' \
  --data-urlencode 'convert=USD' \
  -H 'X-CMC_PRO_API_KEY: YOUR_API_KEY'

Highest volume

bash
curl -G 'https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest' \
  --data-urlencode 'sort=volume_24h' \
  --data-urlencode 'sort_dir=desc' \
  --data-urlencode 'limit=50' \
  --data-urlencode 'convert=USD' \
  -H 'X-CMC_PRO_API_KEY: YOUR_API_KEY'

Filter parameters

Each filter narrows the result set before it is returned. The min and max variants can be used together or independently.

Filter Parameters Notes
Price range price_min, price_max In the currency set by convert
Market cap range market_cap_min, market_cap_max Absolute values, not abbreviations
Volume floor volume_24h_min Pairs naturally with sort=volume_24h
Percent change percent_change_24h_min, percent_change_24h_max Accepts negative values
Asset type cryptocurrency_type all, coins or tokens
Tag tag all, defi or filesharing only

Price range

python
params = {
    "price_min": "0.001",
    "price_max": "10",
    "sort": "market_cap",
    "limit": "100",
    "convert": "USD",
}

Market cap range

python
params = {
    "market_cap_min": "100000000",   # $100M minimum
    "market_cap_max": "1000000000",  # $1B maximum
    "sort": "market_cap",
    "limit": "100",
    "convert": "USD",
}

Volume floor

python
params = {
    "volume_24h_min": "10000000",  # $10M minimum daily volume
    "sort": "volume_24h",
    "sort_dir": "desc",
    "limit": "50",
    "convert": "USD",
}

Percent change filter

python
# Assets down more than 5% today
params = {
    "percent_change_24h_max": "-5",
    "sort": "percent_change_24h",
    "sort_dir": "asc",
    "limit": "50",
    "convert": "USD",
}

Filter by type

python
params = {
    "cryptocurrency_type": "tokens",  # "coins", "tokens", or "all"
    "sort": "market_cap",
    "limit": "100",
    "convert": "USD",
}

Filter by tag

The tag parameter accepts only three values: all, defi or filesharing.

python
params = {
    "tag": "defi",
    "sort": "market_cap",
    "limit": "100",
    "convert": "USD",
}

For other tag-based filtering such as layer-2 or NFT, fetch a broader list and filter locally by inspecting the tags array on each asset.

Combining sort and filters

Filters and sort work together. This fetches the top 50 DeFi tokens by volume with at least $5M daily volume:

python
import os
import requests

HEADERS = {
    "Accept": "application/json",
    "X-CMC_PRO_API_KEY": os.getenv("CMC_API_KEY"),
}

response = requests.get(
    "https://pro-api.coinmarketcap.com/v1/cryptocurrency/listings/latest",
    headers=HEADERS,
    params={
        "tag": "defi",
        "sort": "volume_24h",
        "sort_dir": "desc",
        "volume_24h_min": "5000000",
        "limit": "50",
        "convert": "USD",
    },
)
response.raise_for_status()

for asset in response.json()["data"]:
    usd = asset["quote"]["USD"]
    print(
        f"{asset['symbol']:<8} ${usd['volume_24h']:>15,.0f} "
        f"{usd['percent_change_24h']:>+6.2f}%"
    )

The aux parameter

By default the response includes several supplemental fields. Use aux to add or remove them and control response size:

python
params = {
    "limit": "100",
    "convert": "USD",
    "aux": "cmc_rank,date_added,tags,circulating_supply,max_supply",
}

Available aux fields include num_market_pairs, cmc_rank, date_added, tags, platform, max_supply, circulating_supply, total_supply, market_cap_by_total_supply, volume_24h_reported, volume_7d, volume_30d and is_market_cap_included_in_calc.

Common mistakes

Passing custom tag values

The tag parameter only accepts all, defi or filesharing. Other values return a 400 error. Filter by other tags locally.

Treating quote as an array

In v1 listings, quote is a dict keyed by symbol. Use asset["quote"]["USD"]["price"], not next().

Using this endpoint for specific known assets

If you already know which assets you want, use quotes/latest. It is more efficient.

FAQ

Which fields can I sort cryptocurrency listings by?

Ten values are supported: market_cap (default), market_cap_strict, volume_24h, percent_change_24h, name, symbol, date_added, price, circulating_supply and total_supply. Pair any of them with sort_dir set to asc or desc.

How do I find the top crypto gainers?

Set sort=percent_change_24h with sort_dir=desc. Add volume_24h_min to exclude thinly traded assets whose percentage moves are not meaningful.

Which tags does the tag parameter accept?

Only all, defi and filesharing. Any other value returns a 400 error. For tags such as layer-2 or NFT, fetch a broader list and filter locally on each asset's tags array.

Can I filter by market cap and price at the same time?

Yes. Filters compose freely and combine with any sort. You can pass market_cap_min, market_cap_max, price_min, price_max and volume_24h_min in the same request.

What does the aux parameter do?

It controls which supplemental fields the response carries, so you can add fields such as volume_7d or trim the default set to reduce response size.

When should I use quotes/latest instead?

When you already know which assets you want. Listings is built for discovery and ranking; quotes/latest is the efficient choice for looking up a known set of assets.

Where to go next

Build your first filtered query

Combine a sort field with the range filters your product needs, and let the API do the narrowing before the data reaches your code.


This article contains links to third-party websites or other content for information purposes only ("Third-Party Sites"). The Third-Party Sites are not under the control of CoinMarketCap, and CoinMarketCap is not responsible for the content of any Third-Party Site, including without limitation any link contained in a Third-Party Site, or any changes or updates to a Third-Party Site. CoinMarketCap is providing these links to you only as a convenience, and the inclusion of any link does not imply endorsement, approval or recommendation by CoinMarketCap of the site or any association with its operators.

This article is intended to be used and must be used for informational purposes only. It is important to do your own research and analysis before making any material decisions related to any of the products or services described. This article is not intended as, and shall not be construed as, financial advice.