Smart money
curl --request GET \
--url https://api.polynode.dev/v3/perps/traders \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/perps/traders"
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://api.polynode.dev/v3/perps/traders', 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://api.polynode.dev/v3/perps/traders",
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://api.polynode.dev/v3/perps/traders"
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://api.polynode.dev/v3/perps/traders")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/perps/traders")
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{
"data": [
{
"address": "0x4c4f4d655b77c4d1cb4343af6c54c2ec8f4022b4",
"as_of": 1783738831016,
"equity": "3210858.4630355855412800745281",
"trading_pnl": "39001.29194488"
},
{
"address": "0x7af67514a161670287f2afa5bf598a9902f09ec4",
"as_of": 1783738873846,
"equity": "704281.55429788810796043150483",
"trading_pnl": "9294.67916731"
}
],
"window": "1 day"
}Perps Analytics
Smart Money
Rank wallets by real TRADING P&L over a window: equity change minus net deposits. Possible only because we hold both equity snapshots and on-chain collateral flows.
GET
/
v3
/
perps
/
traders
Smart money
curl --request GET \
--url https://api.polynode.dev/v3/perps/traders \
--header 'x-api-key: <api-key>'import requests
url = "https://api.polynode.dev/v3/perps/traders"
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://api.polynode.dev/v3/perps/traders', 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://api.polynode.dev/v3/perps/traders",
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://api.polynode.dev/v3/perps/traders"
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://api.polynode.dev/v3/perps/traders")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polynode.dev/v3/perps/traders")
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{
"data": [
{
"address": "0x4c4f4d655b77c4d1cb4343af6c54c2ec8f4022b4",
"as_of": 1783738831016,
"equity": "3210858.4630355855412800745281",
"trading_pnl": "39001.29194488"
},
{
"address": "0x7af67514a161670287f2afa5bf598a9902f09ec4",
"as_of": 1783738873846,
"equity": "704281.55429788810796043150483",
"trading_pnl": "9294.67916731"
}
],
"window": "1 day"
}Rank wallets by real trading P&L over a window — equity change minus net deposits in that window, so growth from funding the account is stripped out. This is only possible because we hold both the equity snapshots and the on-chain collateral flows. Pick the
window (1h, 6h, 1d, 7d, 30d). Coverage deepens as history accrues.⌘I

