Discovery and markets API
Top holders of a chain's native coin (ETH rich list)
The 50 addresses holding the most ETH on RHC, Ethereum, OP or Scroll, largest first, with contract flags and published labels such as exchange cold wallets.
/api/external/discovery/native-coin-holders/{chain}What it returns
The top 50 addresses on one chain by native-coin balance (ETH on every chain served), largest first. Contracts are ranked alongside wallets — the staking deposit contract, the wrapped-coin contract and bridges usually lead — and isContract tells them apart. Each row carries the labels published for the address (e.g. an exchange cold wallet). Balances are in base units (wei) as decimal strings, exact at any size; divide by 10^coin.decimals. Only the native coin counts: a wallet holding its value in tokens is not on this list. One page; no pagination.
Chains
- Ethereum ETH
- Robinhood Chain RHC
- Optimism OP
- Scroll SCROLL
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/native-coin-holders/ETH"
| Parameter | Description |
|---|---|
chainpath · string · required | RHC, ETH, OP or SCROLL; every other chain returns 400, because no wired source ranks its addresses by native balance. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
coin | object | |
coin.symbol | string | The chain's native coin. |
coin.decimals | integer | Decimals of balanceRaw. |
holders | object[] | Largest balance first, in the order the ranking publishes — never re-sorted here. |
holders[].rank | integer | 1-based position in the ranking. |
holders[].address | string | The address. |
holders[].balanceRaw | string | null | Native balance in base units (wei), as a decimal string. |
holders[].isContract | boolean | null | Whether the address is a contract. false is a real answer, distinct from null. |
holders[].contractName | string | null | A contract's published name; null for wallets and unnamed contracts. |
holders[].verified | boolean | null | Whether a contract's source is verified; null for wallets. |
holders[].flaggedScam | boolean | null | Whether the address is flagged as a scam. false is a real answer. |
holders[].ensName | string | null | The ENS name set for the address, or null. |
holders[].transactionCount | integer | null | Transactions the address has sent, or null when not published. |
holders[].labels | string[] | Who the address belongs to, e.g. "Binance: Cold Wallet". Empty when unlabelled. |
holders[].categories | string[] | What kind of address it is, e.g. "Exchange", "Bridge". Empty when uncategorised. |
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