Skip to main content
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
{
  "window": "1 day",
  "data": [
    {
      "address": "0x4c4f...",
      "equity": "3148956.82",
      "trading_pnl": "7709.63",
      "as_of": 1783616146481
    }
  ]
}
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.

Authorizations

x-api-key
string
header
required

Query Parameters

window
string

1h, 6h, 1d, 7d, 30d (default 1d)

limit
integer

Max rows.

Response

200 - application/json

Success