Base URL:
Auth: Pass your API key in the
Values: Monetary amounts default to USD. Wallet summary, history, and performance accept
https://data.solanatracker.ioAuth: Pass your API key in the
x-api-key header.Values: Monetary amounts default to USD. Wallet summary, history, and performance accept
?currency=usd|sol|eur. Timestamps are Unix milliseconds unless noted.Essentials
What PnL V2 includes
- Token coverage. Every SPL token is supported except stablecoins and SOL.
- Wallet endpoints. Use wallet endpoints for any wallet, even if it is not on a leaderboard.
- Identity tags. Wallets can include an
identityobject with labels such as KOL, bot, exchange, pool, developer, trading platform, or SNS primary.soldomain.
What PnL V2 excludes
SOL and stablecoins serve as quote assets and are excluded from PnL positions.excludeArbitrage=true is the default on endpoints that expose this filter. Set it to false when your analysis needs arbitrage wallets.
The top-traders leaderboard covers the top 500k wallets per period. If a wallet is outside that ranked set, query it directly with the wallet endpoints.
Identity tags
Anidentity object can contain several labels:
- Bots and MEV —
potential_bot(heuristic),bot(curated named bots like Mayhem Bot), andarbitrage(confirmed MEV). - Platforms —
axiom,bloom, andphoton. The API also acceptsaxiom-flashas anaxiomalias. - Safety / infrastructure tags — curated
hacker,spam_dusting, andexchangelabels when known. - Pool and developer roles are automatically resolved on token-scoped endpoints.
- SNS: primary
.soldomain via Ridge (identity.sns,snstag). See SNS Primary Domain.
PnL modes
Wallet-summary, positions, single-position, top-trader leaderboard, and position batch endpoints accept?pnlMode=.
Supported endpoints echo
pnlMode in the response. Position rows expose mode-aware pnl.realized and unfiltered pnl.realizedRaw; read the selected mode when comparing results.
The KOL leaderboards, history, chart, performance, highlights, risk, token-traders, first-buyers, and wallet-summary batch endpoints do not take pnlMode; they return the API’s fixed server-side view for that dataset.
Currency denomination
Wallet summary, history, and performance accept an optional?currency= query parameter:
Conversion rules:
- History and performance — each day’s USD values are divided by that day’s historical reference rate.
- Wallet summary — converted with current spot (
getSolanaPrice()for SOL; latest 1m candle for EUR). - Counts, percentages, timestamps, and ROI are not converted.
- Field names stay the same (e.g.
activity.volume.costUsd); check the top-levelcurrencyfield for denomination. - Invalid values (e.g.
?currency=btc) return 400:{ "error": "Invalid currency. Options: usd, sol, eur" }.
Endpoint groups
Wallet endpoints
Token endpoints
Leaderboard endpoints
Batch endpoints
Key concepts
Realized vs unrealized PnL
Realized PnL
Realized PnL
Profit or loss attributed to completed sales.
Unrealized PnL
Unrealized PnL
The current value of open positions minus their remaining cost basis.
Total PnL
Total PnL
realized + unrealized.Wallet coverage
PnL V2 covers all Solana wallets from December 2023 onward. Wallets are not indexed on request.Pagination
For paginated responses, passpagination.nextCursor unchanged as cursor in the next request. Keep the other filters the same.
Wallet identity
When available,identity combines wallet labels from multiple sources. For example, a wallet may have ["kol", "developer", "axiom"]. Only populated fields are returned:
On token-scoped endpoints (
/tokens/:token/traders, /first-buyers, /tokens/:token/positions/batch) the pool and developer roles are resolved for the exact token in the path, so you can spot devs, LPs, and snipers inline without extra requests. See the Solana Wallet Tags guide for the full supported tag list.
Enrichment on /tokens/:tokenAddress/holders
The classic holders endpoint accepts an optional ?enrich= parameter:
?enrich=identity— adds pool / developer / platform identity per holder.?enrich=walletPnl— adds lifetime wallet PnL plus per-token PnL per holder.?enrich=all— both.
enrich when you only need the base holder response.
Real-time via Datastream
Pair these REST endpoints with the Datastream PnL V2 WebSocket rooms for live updates. Available on Premium, Business, and Enterprise plans:
Typical pattern: call
GET /v2/pnl/wallets/:wallet once to seed state, then subscribe to pnl:{wallet}:summary to keep it in sync.
For valuations between position events, combine a PnL room with price:aggregated:{token} or price-by-token:{token}. Use PnL events for balances and cost basis, and price events for the displayed market value. Follow the live PnL guide.