import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletPerformance('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { period: '30d' });
curl --request GET \
--url https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"identity": {
"name": "Cented",
"twitter": "@Cented7",
"avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"platforms": [
"axiom",
"bloom"
],
"type": "kol",
"tags": [
"kol",
"axiom",
"bloom"
]
},
"window": 30,
"totals": {
"realizedPnl": 511646.27,
"volume": 4525541.11,
"trades": 1854
},
"bestDay": {
"date": "2026-03-23",
"realizedPnl": 85718.59,
"volume": 266262.59,
"totalPnl": 10264040.54,
"trades": 954
},
"worstDay": {
"date": "2026-04-10",
"realizedPnl": 3543.36,
"volume": 30954.42,
"totalPnl": 10509957.54,
"trades": 12
},
"streaks": {
"positive": 27,
"negative": 0,
"currentPositive": 27,
"currentNegative": 0
},
"drawdown": {
"amount": 0,
"percent": 0
},
"days": [
{
"date": "2026-03-20",
"realizedPnl": 21677.68,
"unrealizedPnl": 0,
"totalPnl": 10133634.03,
"volume": 252414.51,
"trades": 812
},
{
"date": "2026-03-21",
"realizedPnl": 20060.91,
"unrealizedPnl": 0,
"totalPnl": 10153694.95,
"volume": 190766.56,
"trades": 642
}
],
"updatedAt": "2026-04-19T17:53:30.439Z"
}{
"error": "<string>"
}{
"error": "<string>"
}Get Wallet Performance
Returns rolling performance stats for a wallet, including realized PnL, volume, streaks, drawdown, best day, worst day, and the underlying daily breakdown. Trade counts (totals.trades and per-day trades) reflect daily activity within the window (day_buys + day_sells), not cumulative lifetime totals.
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletPerformance('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { period: '30d' });
curl --request GET \
--url https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/wallets/{wallet}/performance")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"wallet": "CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"identity": {
"name": "Cented",
"twitter": "@Cented7",
"avatar": "https://kol-avatar.solanatracker.io/CyaE1VxvBrahnPWkqm5VsdCvyS2QmNht2UFrKJHga54o",
"platforms": [
"axiom",
"bloom"
],
"type": "kol",
"tags": [
"kol",
"axiom",
"bloom"
]
},
"window": 30,
"totals": {
"realizedPnl": 511646.27,
"volume": 4525541.11,
"trades": 1854
},
"bestDay": {
"date": "2026-03-23",
"realizedPnl": 85718.59,
"volume": 266262.59,
"totalPnl": 10264040.54,
"trades": 954
},
"worstDay": {
"date": "2026-04-10",
"realizedPnl": 3543.36,
"volume": 30954.42,
"totalPnl": 10509957.54,
"trades": 12
},
"streaks": {
"positive": 27,
"negative": 0,
"currentPositive": 27,
"currentNegative": 0
},
"drawdown": {
"amount": 0,
"percent": 0
},
"days": [
{
"date": "2026-03-20",
"realizedPnl": 21677.68,
"unrealizedPnl": 0,
"totalPnl": 10133634.03,
"volume": 252414.51,
"trades": 812
},
{
"date": "2026-03-21",
"realizedPnl": 20060.91,
"unrealizedPnl": 0,
"totalPnl": 10153694.95,
"volume": 190766.56,
"trades": 642
}
],
"updatedAt": "2026-04-19T17:53:30.439Z"
}{
"error": "<string>"
}{
"error": "<string>"
}SDK Example
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2WalletPerformance('FbMxP3GVq8TQ36nbYgx4NP9iygMpwAwFWJwW81ioCiSF', { period: '30d' });
Authorizations
API Key for authentication
Path Parameters
Solana wallet address (base58, 32-44 characters).
^[1-9A-HJ-NP-Za-km-z]{32,44}$Query Parameters
Denomination for monetary fields in the response. Defaults to usd. Pass sol or eur to convert USD snapshot values at read time using ClickHouse reference prices. Historical endpoints use the daily rate for each snapshot date; wallet summary uses current spot. Counts, percentages, timestamps, and ROI are not converted. Invalid values return 400.
usd, sol, eur Period shorthand (e.g. 30d). Alternative to days.
1d, 7d, 14d, 30d, 90d, all Rolling window in days. Defaults to 30. Max 365.
x <= 365Response
Successful response.
Response denomination when ?currency=sol or ?currency=eur is requested. Omitted for the default USD response.
sol, eur Unified wallet identity. Only fields with known values are returned; a wallet can carry multiple tags at once.
Show child attributes
Show child attributes
Number of days in the window.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Win/loss streaks in consecutive trading days.
Show child attributes
Show child attributes
Maximum drawdown from peak total PnL within the window.
Show child attributes
Show child attributes
Day-by-day PnL and volume for the window.
Show child attributes
Show child attributes
Was this page helpful?