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": 8612631
},
"bestDay": {
"date": "2026-03-23",
"realizedPnl": 85718.59,
"volume": 266262.59,
"totalPnl": 10264040.54,
"trades": 308520
},
"worstDay": {
"date": "2026-04-10",
"realizedPnl": 3543.36,
"volume": 30954.42,
"totalPnl": 10509957.54,
"trades": 323507
},
"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": 304888
},
{
"date": "2026-03-21",
"realizedPnl": 20060.91,
"unrealizedPnl": 0,
"totalPnl": 10153694.95,
"volume": 190766.56,
"trades": 306189
}
],
"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.
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": 8612631
},
"bestDay": {
"date": "2026-03-23",
"realizedPnl": 85718.59,
"volume": 266262.59,
"totalPnl": 10264040.54,
"trades": 308520
},
"worstDay": {
"date": "2026-04-10",
"realizedPnl": 3543.36,
"volume": 30954.42,
"totalPnl": 10509957.54,
"trades": 323507
},
"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": 304888
},
{
"date": "2026-03-21",
"realizedPnl": 20060.91,
"unrealizedPnl": 0,
"totalPnl": 10153694.95,
"volume": 190766.56,
"trades": 306189
}
],
"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
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.
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?