curl -H 'Authorization: Bearer $HD_KEY' 'https://data.hyperdash.com/v1/traders/screener?sort=sharpe30d&limit=100'import requests
url = "https://data.hyperdash.com/v1/traders/screener"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://data.hyperdash.com/v1/traders/screener', 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.hyperdash.com/v1/traders/screener",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.hyperdash.com/v1/traders/screener"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.hyperdash.com/v1/traders/screener")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.hyperdash.com/v1/traders/screener")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"address": "<string>",
"rank": 123,
"pnl_day": "<string>",
"pnl_week": "<string>",
"pnl_month": "<string>",
"pnl_alltime": "<string>",
"total_trades": 123,
"trades_7d": 123,
"trades_30d": 123,
"long_trades": 123,
"short_trades": 123,
"winning_trades": 123,
"losing_trades": 123,
"winrate": "<string>",
"winrate_7d": "<string>",
"winrate_30d": "<string>",
"winrate_90d": "<string>",
"last_trade_at": 123,
"last_fill_at": 123,
"account_value": "<string>",
"notional": "<string>",
"unrealized_pnl": "<string>",
"display_name": "<string>",
"twitter": "<string>",
"tag": "<string>",
"verified": true,
"label": "<string>",
"sharpe_7d": "<string>",
"sharpe_30d": "<string>",
"sortino_7d": "<string>",
"sortino_30d": "<string>",
"sortino_90d": "<string>",
"max_drawdown_week": "<string>",
"max_drawdown_month": "<string>",
"max_drawdown_90d": "<string>",
"gpr_7d": "<string>",
"gpr_30d": "<string>",
"gpr_90d": "<string>",
"gpr_all_time": "<string>",
"copy_score": "<string>",
"copy_score_v2": "<string>",
"top_assets": "<string>",
"total_volume": "<string>",
"updated_at": 123
}
],
"has_more": true,
"next_cursor": "<string>",
"meta": {}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}Trader screener
Ranked traders with their stats: PnL per window, trade counts, win rates, Sharpe and Sortino, drawdowns, GPR, copy scores, account value, open notional, unrealized PnL, profile and top assets. The top 2,000 per sort and filter set, paged; like hyperdash.com’s Explore, it leaves out the 13 accounts the site excludes (e.g. the Assistance Fund). Explore’s filters as fixed choices: smallest account value, smallest PnL in the timeframe, smallest copy score and style tag (all optional, combined with AND). rank is the wallet’s rank on the perp-PnL leaderboard of timeframe (Explore’s # column; display only, it does not change the order). Explore’s Win Rate column is winrate_30d; winrate is lifetime.
Pricing: base + per row. Scope: analytics:read.
curl -H 'Authorization: Bearer $HD_KEY' 'https://data.hyperdash.com/v1/traders/screener?sort=sharpe30d&limit=100'import requests
url = "https://data.hyperdash.com/v1/traders/screener"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://data.hyperdash.com/v1/traders/screener', 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.hyperdash.com/v1/traders/screener",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$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.hyperdash.com/v1/traders/screener"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
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.hyperdash.com/v1/traders/screener")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.hyperdash.com/v1/traders/screener")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": [
{
"address": "<string>",
"rank": 123,
"pnl_day": "<string>",
"pnl_week": "<string>",
"pnl_month": "<string>",
"pnl_alltime": "<string>",
"total_trades": 123,
"trades_7d": 123,
"trades_30d": 123,
"long_trades": 123,
"short_trades": 123,
"winning_trades": 123,
"losing_trades": 123,
"winrate": "<string>",
"winrate_7d": "<string>",
"winrate_30d": "<string>",
"winrate_90d": "<string>",
"last_trade_at": 123,
"last_fill_at": 123,
"account_value": "<string>",
"notional": "<string>",
"unrealized_pnl": "<string>",
"display_name": "<string>",
"twitter": "<string>",
"tag": "<string>",
"verified": true,
"label": "<string>",
"sharpe_7d": "<string>",
"sharpe_30d": "<string>",
"sortino_7d": "<string>",
"sortino_30d": "<string>",
"sortino_90d": "<string>",
"max_drawdown_week": "<string>",
"max_drawdown_month": "<string>",
"max_drawdown_90d": "<string>",
"gpr_7d": "<string>",
"gpr_30d": "<string>",
"gpr_90d": "<string>",
"gpr_all_time": "<string>",
"copy_score": "<string>",
"copy_score_v2": "<string>",
"top_assets": "<string>",
"total_volume": "<string>",
"updated_at": 123
}
],
"has_more": true,
"next_cursor": "<string>",
"meta": {}
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"code": "<string>",
"request_id": "<string>",
"detail": "<string>",
"hint": "<string>"
}Authorizations
hdk_sk_live_v1_… or hdk_sk_test_v1_…
Headers
Refuse (free) if the request could cost more.
Expected price version; 409 price_changed if it differs.
Query Parameters
Sort field. Default pnlPerpMonth (30-day perp PnL), as hyperdash.com's Explore traders.
pnlPerpDay, pnlPerpWeek, pnlPerpMonth, pnlPerpAllTime, winrate30d, winrate7d, winrateLifetime, totalTrades, accountValue, notional, sharpe30d, copyScore, copyScoreV2, maxDrawdownPerpWeek, maxDrawdownPerpMonth Sort order.
desc, asc Window of rank and of min_pnl. Default: the sort's window (pnlPerpDay 24h, pnlPerpWeek 7d, pnlPerpMonth 30d, so 30d for the default sort, pnlPerpAllTime alltime), else alltime.
24h, 7d, 30d, alltime Only traders with at least this account value (USD; Explore's equity filter).
1000, 10000, 100000, 1000000, 10000000 Only traders with at least this perp PnL (USD) in timeframe's window (pnl_day, pnl_week, pnl_month or pnl_alltime); 0 = profitable.
0, 10000, 100000, 1000000 Only traders with at least this copy score (copy_score_v2, Explore's copy-score filter).
50, 70, 90 Only traders with this style tag (Explore's trader-type filter).
algo, scalp, intraday, swing, position Rows (≤ 1000).
1 <= x <= 1000Opaque cursor from next_cursor.

