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.

GET/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"
Parameters
ParameterDescription
page

query · 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.
chain

path · 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.

Response fields of Realized-profit trader ranking, Solana only
FieldTypeDescription
walletsobject[]Ranked highest totalPnlUsd first, 25 per page.
wallets[].walletstringThe wallet address.
wallets[].totalPnlUsdnumber | nullrealizedPnlUsd + unrealizedPnlUsd — the field this ranking is SORTED BY, and (unlike unrealized-pnl-leaders) mostly REALIZED profit.
wallets[].realizedPnlUsdnumber | nullProfit already taken out — what has actually been SOLD.
wallets[].unrealizedPnlUsdnumber | nullPaper gain or loss on what is still held. A real 0 means the wallet currently holds nothing, not missing data.
wallets[].totalInvestedUsdnumber | nullCost basis of everything this wallet has ever bought.
wallets[].winsinteger | nullWinning trade count.
wallets[].lossesinteger | nullLosing trade count.
wallets[].winPercentagenumber | nullWin rate, 0-100 scale.
wallets[].lossPercentagenumber | nullLoss rate, 0-100 scale.
wallets[].neutralPercentagenumber | nullRate of trades that were neither a win nor a loss, 0-100 scale.
wallets[].avgBuyUsdnumber | nullAverage USD size of one buy.
hasNextbooleanWhether requesting page + 1 would return more wallets.
pageintegerThe 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