Tokens API
Which insiders, bundlers, snipers, devs, smart traders and KOLs hold this token?
Labelled wallets holding a token (insider, bundler, sniper, dev, smart trader, KOL), largest first: balance, supply share, buys/sells, USD in/out, avg buy price, profit. SOL only.
/api/external/token-analysis/tagged-holders/{chain}/{mint}What it returns
The wallets holding one token that carry a label — insider, bundler, sniper, dev, smart_trader, kol — largest balance first, each with its balance, its share of supply, and what it bought, sold and made on the token. ONLY labelled wallets are listed, so this is not the holder list and the shares do not add up to the concentration of the token: for the largest holders read top-holders, for the share each group holds read cohorts. Wallets holding nothing are not listed. totalPnlUsd is realized plus unrealized profit on the tokens the wallet bought; it is null for a wallet that sold without ever buying (tokens it received), because there is no cost basis to measure against, and 0 for a wallet that never traded. An empty holders list means no labelled wallet holds the token, the page is past the end, or the address is not a token. SOL only.
Chains
- Solana SOL
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/token-analysis/tagged-holders/SOL/<mint>"
| Parameter | Description |
|---|---|
labelsquery · string · optional | A comma-separated list of labels to keep, any of: insider, bundler, sniper, dev, smart_trader, kol, e.g. insider,dev. A wallet carrying any one of them is listed. Omitted, every labelled wallet is listed. |
limitquery · integer · optional | How many wallets to return, largest balance first. 1 to 50; defaults to 50. |
offsetquery · integer · optional | How many wallets to skip, for the next page: pass the previous page's nextOffset. |
chainpath · string · required | The chain the token lives on. SOL only; every other chain returns 400. |
mintpath · string · required | The token mint address (Solana) or contract address (EVM). |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
offset | integer | The offset this page starts at. |
nextOffset | integer | null | The offset of the next page when this page is full, else null (also null past the largest offset accepted). A full page can be followed by an empty one. |
holders | object[] | Largest balance first. At most limit rows; empty when there is nothing to list. |
holders[].rank | integer | 1 = the largest balance among the labelled wallets matching labels. |
holders[].wallet | string | The holding address. |
holders[].labels | string[] | What the wallet is, one or more of: insider, bundler, sniper, dev, smart_trader, kol. |
holders[].amount | number | null | The balance, in whole tokens. |
holders[].supplyPct | number | null | The balance as a share of supply, in percent (0.1453 = 0.1453%). |
holders[].buys | integer | null | How many buys of the token the wallet made. |
holders[].sells | integer | null | How many sells. |
holders[].tokensBought | number | null | Tokens bought, in whole tokens. |
holders[].tokensSold | number | null | Tokens sold, in whole tokens. |
holders[].investedUsd | number | null | USD spent buying. |
holders[].proceedsUsd | number | null | USD received selling. |
holders[].avgBuyPriceUsd | number | null | Average buy price, USD per token; null when the wallet never bought. |
holders[].totalPnlUsd | number | null | Realized plus unrealized profit on the tokens bought, USD. Null when the wallet sold without ever buying; 0 when it never traded. |
holders[].firstTradeAt | integer | null | Unix seconds of its first buy or sell of the token; null when it never traded. |
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