Get trader best and worst PnL periods
curl --request GET \
--url https://api.struct.to/v1/polymarket/trader/pnl/{address}/periodsimport requests
url = "https://api.struct.to/v1/polymarket/trader/pnl/{address}/periods"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.struct.to/v1/polymarket/trader/pnl/{address}/periods', 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.struct.to/v1/polymarket/trader/pnl/{address}/periods",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.struct.to/v1/polymarket/trader/pnl/{address}/periods"
req, _ := http.NewRequest("GET", url, nil)
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.struct.to/v1/polymarket/trader/pnl/{address}/periods")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.struct.to/v1/polymarket/trader/pnl/{address}/periods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"timeframe": "<string>",
"resolution": "<string>",
"points": 1,
"total_pnl_day": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"total_pnl_week": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"total_pnl_month": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"portfolio_day": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"portfolio_week": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"portfolio_month": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"from": 1,
"to": 1
}Trader
Get trader best and worst PnL periods
Best and worst daily, weekly and monthly PnL and portfolio periods.
GET
/
polymarket
/
trader
/
pnl
/
{address}
/
periods
Get trader best and worst PnL periods
curl --request GET \
--url https://api.struct.to/v1/polymarket/trader/pnl/{address}/periodsimport requests
url = "https://api.struct.to/v1/polymarket/trader/pnl/{address}/periods"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.struct.to/v1/polymarket/trader/pnl/{address}/periods', 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.struct.to/v1/polymarket/trader/pnl/{address}/periods",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.struct.to/v1/polymarket/trader/pnl/{address}/periods"
req, _ := http.NewRequest("GET", url, nil)
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.struct.to/v1/polymarket/trader/pnl/{address}/periods")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.struct.to/v1/polymarket/trader/pnl/{address}/periods")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"timeframe": "<string>",
"resolution": "<string>",
"points": 1,
"total_pnl_day": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"total_pnl_week": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"total_pnl_month": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"portfolio_day": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"portfolio_week": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"portfolio_month": {
"best": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
},
"worst": {
"from": 1,
"to": 1,
"change": 123,
"change_pct": 123
}
},
"from": 1,
"to": 1
}Path Parameters
Trader wallet address
Query Parameters
Default: lifetime
Available options:
1d, 24h, 7d, 30d, lifetime Response
Best and worst PnL periods
Timeframe.
Resolution.
Points.
Required range:
x >= 0Total PnL day.
Show child attributes
Show child attributes
Total PnL week.
Show child attributes
Show child attributes
Total PnL month.
Show child attributes
Show child attributes
Portfolio day.
Show child attributes
Show child attributes
Portfolio week.
Show child attributes
Show child attributes
Portfolio month.
Show child attributes
Show child attributes
Window start timestamp.
Required range:
x >= 0Window end timestamp.
Required range:
x >= 0Last modified on July 28, 2026
Was this page helpful?
⌘I