Discovery and markets API
Which tokens belong to this market sector, and which are biggest?
One market sector (layer-1, meme-token, real-world-assets…) by id or name: its coins by market cap, with price, cap, FDV, 24h volume and change, plus the sector's totals.
/api/external/discovery/sector-tokens/{id}What it returns
Every coin filed under one market sector (layer-1, meme-token, asset-backed-tokens, real-world-assets-rwa…), by sector id or display name in any case, largest market cap first, each with its price, cap, fully diluted valuation, 24h volume and 24h change. These sector ids are the ones `sectors` publishes, and are NOT the on-chain sector ids `sector-pools` takes — the two id spaces do not overlap. It also takes sector ids sectors does not list (about 270 of them, e.g. pulsechain-ecosystem); for those the sector's own totals and updatedAt are null. A sector spans chains and these rows carry no chain and no contract address: they identify a coin, which may be listed on several chains at once or on none this API serves. total is how many coins were read before limit, and complete is false when the sector holds more coins than one request reads, in which case the answer is the sector's largest by market cap and not its whole membership. A sector that files no coin answers an empty list; a subject that names no sector returns 404.
Chains
This endpoint is not tied to a chain: it takes no chain in its request.
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/sector-tokens/<id>"
| Parameter | Description |
|---|---|
limitquery · integer · optional | How many coins to return, largest market cap first. Defaults to 50, at most 250. It costs no extra upstream work to raise it. limit ≤ 90 keeps the answer under 32 KB. |
idpath · string · required | A market sector, by id (e.g. "layer-1", "meme-token") or by display name (e.g. "Layer 1 (L1)"), in any case, exactly as the market-sector listing publishes it — not a token mint, contract address or protocol slug, and not one of the on-chain sector ids, which are a different id space. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
id | string | The sector's id, whichever id or name was asked for. |
name | string | null | Display name of the sector, e.g. Layer 1 (L1). |
marketCapUsd | number | null | The whole sector's aggregate market cap in USD, as sectors publishes it. Null for a sector sectors does not list. |
volumeUsd24h | number | null | The whole sector's trailing 24h volume in USD. |
marketCapChangePercent24h | number | null | 24h change of the sector's market cap, in percent. It is the sector's own computation and does not reconcile with a market-wide change; never derive one from it. |
updatedAt | string | null | When the sector's aggregates were last computed (ISO 8601). |
total | integer | How many coins were read for the sector, before limit. |
complete | boolean | True when every coin the sector files was read, so total is the whole membership. False when the sector holds more coins than one request reads, in which case the answer covers only its largest. |
tokens | object[] | Largest market cap first; coins without a cap come last. |
tokens[].id | string | The coin's id in the same directory the sector ids come from, e.g. bitcoin. It is NOT a mint or contract address — these rows carry no address, and one sector spans many chains. |
tokens[].symbol | string | null | The ticker, lower case as published, e.g. btc. |
tokens[].name | string | null | The display name, e.g. Bitcoin. |
tokens[].marketCapRank | integer | null | The rank in the WHOLE market, not within this sector: the third coin of a sector read rank 4. Null for a coin the ranking does not cover — on one small-cap sector that was 232 rows of 250. |
tokens[].priceUsd | number | null | Price in USD. |
tokens[].marketCapUsd | number | null | Market cap in USD. Null, never 0: a cap of 0 upstream means the circulating supply is unknown, not that the coin is worthless — one such coin carried 28.8B of 24h volume. |
tokens[].fdvUsd | number | null | Fully diluted valuation in USD. |
tokens[].volume24hUsd | number | null | Trailing 24h traded volume in USD. Null, never 0: a 0 upstream means the volume was not recorded — coins with a 6B market cap and a price from the same minute carried it. |
tokens[].priceChange24hPct | number | null | 24h price change in percent (4.5 = +4.5 %). |
tokens[].marketCapChange24hPct | number | null | 24h market-cap change in percent. |
tokens[].circulatingSupply | number | null | Circulating supply. Null, never 0: it is the same unknown that nulls marketCapUsd, measured one-for-one with it. |
tokens[].totalSupply | number | null | Total supply, where it is known. |
tokens[].maxSupply | number | null | Maximum supply, where the coin has one. Usually null. |
tokens[].updatedAt | string | null | When the coin's figures were last refreshed (ISO 8601). |
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