import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2TokenFirstBuyers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { limit: 50 });curl --request GET \
--url https://data.solanatracker.io/v2/pnl/tokens/{token}/first-buyers \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/tokens/{token}/first-buyers"
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/tokens/{token}/first-buyers', 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/tokens/{token}/first-buyers",
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/tokens/{token}/first-buyers"
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/tokens/{token}/first-buyers")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/tokens/{token}/first-buyers")
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{
"meta": {
"symbol": "TRUMP",
"name": "OFFICIAL TRUMP",
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Farweave.net%2FVQrPjACwnQRmxdKBTqNwPiyo65x7LAT773t8Kd7YBzw",
"decimals": 6,
"price": 2.8078556911015307,
"snapshotPrice": null,
"marketCap": 2807853276.49,
"liquidity": 66749438.29,
"primaryMarket": "meteora-dlmm"
},
"traders": [
{
"wallet": "6QSc2CxSdkUQSXttkceR9yMuxMf36L75fS8624wJ9tXv",
"pnl": {
"token": {
"realized": 0,
"unrealized": 0,
"total": 0
},
"wallet": {
"realized": 58523.47,
"unrealized": -11351.36,
"total": 47172.11,
"invested": 699558.43,
"proceeds": 758081.9,
"totalTrades": 13111,
"tokensTraded": 2258
}
},
"identity": {
"platforms": [
"axiom"
],
"type": "axiom",
"tags": [
"axiom"
]
},
"position": {
"balance": 0,
"costBasis": 1096109,
"value": 0,
"price": 2.8078556911015307
},
"buyUsd": 1096109,
"sellUsd": 0,
"counts": {
"buys": 1,
"sells": 0,
"total": 1
},
"roi": 0,
"invested": 1096109,
"proceeds": 0,
"volume": {
"tokensBought": 390375.34,
"tokensSold": 0,
"buyUsd": 1096109,
"sellUsd": 0
},
"averages": {
"buy": 1096109,
"sell": 0
},
"current": {
"balance": 0,
"costBasis": 1096109,
"value": 0,
"price": 2.8078556911015307,
"avgCost": 2.8079
},
"timing": {
"firstTrade": 1737165693000,
"lastTrade": 1737165693000,
"firstBuy": 1737165693000,
"lastBuy": 1737165693000,
"firstSell": null,
"lastSell": null,
"holdTimeSecs": 0
}
},
{
"wallet": "GoM5z4nTyMcU5ewJ6hamXo4PDKnc8u1HPNkHpNdZeotR",
"pnl": {
"token": {
"realized": 852242.51,
"unrealized": 0,
"total": 852242.51
},
"wallet": {
"realized": 4554030.67,
"unrealized": 32140.55,
"total": 4586171.22,
"invested": 2314000,
"proceeds": 6868030,
"totalTrades": 18432,
"tokensTraded": 1247
}
},
"identity": {
"type": "developer",
"tags": [
"developer"
],
"developer": {
"token": "TRUMPSo1111111111111111111111111111111111111",
"via": [
"token_creator"
]
}
},
"position": {
"balance": 0,
"costBasis": 0.34,
"value": 0,
"price": 2.8078556911015307
},
"buyUsd": 500000.34,
"sellUsd": 1352242.51,
"counts": {
"buys": 3,
"sells": 113,
"total": 116
},
"roi": 170.45,
"invested": 500000.34,
"proceeds": 1352242.51,
"volume": {
"tokensBought": 178000.12,
"tokensSold": 178000.12,
"buyUsd": 500000.34,
"sellUsd": 1352242.51
},
"averages": {
"buy": 166666.78,
"sell": 11966.75
},
"current": {
"balance": 0,
"costBasis": 0.34,
"value": 0,
"price": 2.8078556911015307,
"avgCost": 0
},
"timing": {
"firstTrade": 1737165694000,
"lastTrade": 1739980499000,
"firstBuy": 1737165694000,
"lastBuy": 1737165694000,
"firstSell": 1737165700000,
"lastSell": 1739980499000,
"holdTimeSecs": 2814805
}
}
],
"pagination": {
"hasMore": true,
"nextCursor": "eyJzb3J0VmFsdWUiOiIxNzM3MTY1Njk0MDAwIiwidGllQnJlYWtlciI6MTAwNzQ1OX0=",
"count": 2,
"total": 2
}
}{
"error": "<string>"
}{
"error": "<string>"
}Get Token First Buyers
Returns the same trader dataset as /traders, but only in chronological earliest-first order. Omit sort or use sort=first_trade, and use direction=asc. For ROI, PnL, position size, latest trade, or descending order, use /v2/pnl/tokens/{token}/traders.
import { Client } from '@solana-tracker/data-api';
const client = new Client({ apiKey: 'YOUR_API_KEY' });
const data = await client.getPnlV2TokenFirstBuyers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { limit: 50 });curl --request GET \
--url https://data.solanatracker.io/v2/pnl/tokens/{token}/first-buyers \
--header 'x-api-key: <api-key>'import requests
url = "https://data.solanatracker.io/v2/pnl/tokens/{token}/first-buyers"
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/tokens/{token}/first-buyers', 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/tokens/{token}/first-buyers",
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/tokens/{token}/first-buyers"
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/tokens/{token}/first-buyers")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.solanatracker.io/v2/pnl/tokens/{token}/first-buyers")
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{
"meta": {
"symbol": "TRUMP",
"name": "OFFICIAL TRUMP",
"image": "https://image.solanatracker.io/proxy?url=https%3A%2F%2Farweave.net%2FVQrPjACwnQRmxdKBTqNwPiyo65x7LAT773t8Kd7YBzw",
"decimals": 6,
"price": 2.8078556911015307,
"snapshotPrice": null,
"marketCap": 2807853276.49,
"liquidity": 66749438.29,
"primaryMarket": "meteora-dlmm"
},
"traders": [
{
"wallet": "6QSc2CxSdkUQSXttkceR9yMuxMf36L75fS8624wJ9tXv",
"pnl": {
"token": {
"realized": 0,
"unrealized": 0,
"total": 0
},
"wallet": {
"realized": 58523.47,
"unrealized": -11351.36,
"total": 47172.11,
"invested": 699558.43,
"proceeds": 758081.9,
"totalTrades": 13111,
"tokensTraded": 2258
}
},
"identity": {
"platforms": [
"axiom"
],
"type": "axiom",
"tags": [
"axiom"
]
},
"position": {
"balance": 0,
"costBasis": 1096109,
"value": 0,
"price": 2.8078556911015307
},
"buyUsd": 1096109,
"sellUsd": 0,
"counts": {
"buys": 1,
"sells": 0,
"total": 1
},
"roi": 0,
"invested": 1096109,
"proceeds": 0,
"volume": {
"tokensBought": 390375.34,
"tokensSold": 0,
"buyUsd": 1096109,
"sellUsd": 0
},
"averages": {
"buy": 1096109,
"sell": 0
},
"current": {
"balance": 0,
"costBasis": 1096109,
"value": 0,
"price": 2.8078556911015307,
"avgCost": 2.8079
},
"timing": {
"firstTrade": 1737165693000,
"lastTrade": 1737165693000,
"firstBuy": 1737165693000,
"lastBuy": 1737165693000,
"firstSell": null,
"lastSell": null,
"holdTimeSecs": 0
}
},
{
"wallet": "GoM5z4nTyMcU5ewJ6hamXo4PDKnc8u1HPNkHpNdZeotR",
"pnl": {
"token": {
"realized": 852242.51,
"unrealized": 0,
"total": 852242.51
},
"wallet": {
"realized": 4554030.67,
"unrealized": 32140.55,
"total": 4586171.22,
"invested": 2314000,
"proceeds": 6868030,
"totalTrades": 18432,
"tokensTraded": 1247
}
},
"identity": {
"type": "developer",
"tags": [
"developer"
],
"developer": {
"token": "TRUMPSo1111111111111111111111111111111111111",
"via": [
"token_creator"
]
}
},
"position": {
"balance": 0,
"costBasis": 0.34,
"value": 0,
"price": 2.8078556911015307
},
"buyUsd": 500000.34,
"sellUsd": 1352242.51,
"counts": {
"buys": 3,
"sells": 113,
"total": 116
},
"roi": 170.45,
"invested": 500000.34,
"proceeds": 1352242.51,
"volume": {
"tokensBought": 178000.12,
"tokensSold": 178000.12,
"buyUsd": 500000.34,
"sellUsd": 1352242.51
},
"averages": {
"buy": 166666.78,
"sell": 11966.75
},
"current": {
"balance": 0,
"costBasis": 0.34,
"value": 0,
"price": 2.8078556911015307,
"avgCost": 0
},
"timing": {
"firstTrade": 1737165694000,
"lastTrade": 1739980499000,
"firstBuy": 1737165694000,
"lastBuy": 1737165694000,
"firstSell": 1737165700000,
"lastSell": 1739980499000,
"holdTimeSecs": 2814805
}
}
],
"pagination": {
"hasMore": true,
"nextCursor": "eyJzb3J0VmFsdWUiOiIxNzM3MTY1Njk0MDAwIiwidGllQnJlYWtlciI6MTAwNzQ1OX0=",
"count": 2,
"total": 2
}
}{
"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.getPnlV2TokenFirstBuyers('6p6xgHyF7AeE6TZkSmFsko444wqoP15icUSqi2jfGiPN', { limit: 50 });
Authorizations
API Key for authentication
Path Parameters
Solana token mint address (base58, 32-44 characters).
^[1-9A-HJ-NP-Za-km-z]{32,44}$Query Parameters
Chronological sort only. Omit this parameter or use first_trade.
first_trade Earliest-first only. Any value other than asc is rejected.
asc Number of results per page.
x <= 200Opaque pagination cursor returned from the previous page's pagination.nextCursor.
Filter traders by the trading platform(s) they use. Comma-separated list.
axiom, axiom-flash, bloom, photon Exclude wallets flagged as arbitrage bots. Pass false to include them.
true, false Exclude wallets with zero buy transactions. Pass false to include them.
true, false Only include wallets currently holding the token.
true, false Minimum trade count.
Was this page helpful?