Discovery and markets API
Realized-profit trader ranking, Solana only
Solana wallets ranked by REALIZED profit (already sold) since a fixed epoch, 2024-09-01 — not "all time". Distinct from unrealized-pnl-leaders, which ranks UNREALISED profit on 6 chains.
/api/external/discovery/realized-pnl-leaders/{chain}What it returns
Ranks Solana wallets by REALIZED profit (already sold) since a FIXED epoch starting 2024-09-01 — not "all time", and the window is not selectable. DISTINCT FROM unrealized-pnl-leaders: that endpoint ranks wallets on six chains by a profit figure that is almost always UNREALISED mark-to-market; THIS endpoint is Solana-only and its ranking is realized-dominant (measured: 25 of 25 sampled rows carry a realized share above 90% of the total). The two never share a field meaning and are not fallbacks for each other. There is no sort/direction parameter — the wired source is always ranked by total profit, descending. page is 1-indexed; use hasNext to know whether a further page exists rather than assuming a fixed page count. A 0 on any numeric field is a real reading (e.g. a wallet currently holding nothing shows unrealizedPnlUsd: 0), never an absence.
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/discovery/realized-pnl-leaders/SOL"
| Parameter | Description |
|---|---|
pagequery · integer · optional | 1-indexed page of 25 wallets. Defaults to 1. A page past the last real one answers an empty wallets array with hasNext: false, never a 404. |
chainpath · string · required | Solana only; every other chain returns 400, because the wired source has no chain parameter at all — it indexes Solana exclusively. |
Response fields
A JSON response. Every field is always present; null means the value could not be established, never zero.
| Field | Type | Description |
|---|---|---|
wallets | object[] | Ranked highest totalPnlUsd first, 25 per page. |
wallets[].wallet | string | The wallet address. |
wallets[].totalPnlUsd | number | null | realizedPnlUsd + unrealizedPnlUsd — the field this ranking is SORTED BY, and (unlike unrealized-pnl-leaders) mostly REALIZED profit. |
wallets[].realizedPnlUsd | number | null | Profit already taken out — what has actually been SOLD. |
wallets[].unrealizedPnlUsd | number | null | Paper gain or loss on what is still held. A real 0 means the wallet currently holds nothing, not missing data. |
wallets[].totalInvestedUsd | number | null | Cost basis of everything this wallet has ever bought. |
wallets[].wins | integer | null | Winning trade count. |
wallets[].losses | integer | null | Losing trade count. |
wallets[].winPercentage | number | null | Win rate, 0-100 scale. |
wallets[].lossPercentage | number | null | Loss rate, 0-100 scale. |
wallets[].neutralPercentage | number | null | Rate of trades that were neither a win nor a loss, 0-100 scale. |
wallets[].avgBuyUsd | number | null | Average USD size of one buy. |
hasNext | boolean | Whether requesting page + 1 would return more wallets. |
page | integer | The page this response answers — echoes the request, or the default. |
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