GET /v2/data/combos/leaderboard: Combo Traders
curl --request GET \
--url https://partner-api.bravadotrade.com/v2/data/combos/leaderboardimport requests
url = "https://partner-api.bravadotrade.com/v2/data/combos/leaderboard"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://partner-api.bravadotrade.com/v2/data/combos/leaderboard', 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://partner-api.bravadotrade.com/v2/data/combos/leaderboard",
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://partner-api.bravadotrade.com/v2/data/combos/leaderboard"
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://partner-api.bravadotrade.com/v2/data/combos/leaderboard")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.bravadotrade.com/v2/data/combos/leaderboard")
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{
"window": "<string>",
"sort_by": "<string>",
"role": "<string>",
"traders": [
{
"rank": 123,
"wallet": "<string>",
"volume": "<string>",
"trade_count": 123,
"combo_count": 123,
"resolved_trades": 123,
"wins": 123,
"losses": 123,
"win_rate": {},
"realized_pnl": "<string>"
}
]
}Combos Data API
GET /v2/data/combos/leaderboard: Combo Traders
Wallets ranked by combo volume, realized PnL, trade count or win rate over a rolling window.
GET
/
v2
/
data
/
combos
/
leaderboard
GET /v2/data/combos/leaderboard: Combo Traders
curl --request GET \
--url https://partner-api.bravadotrade.com/v2/data/combos/leaderboardimport requests
url = "https://partner-api.bravadotrade.com/v2/data/combos/leaderboard"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://partner-api.bravadotrade.com/v2/data/combos/leaderboard', 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://partner-api.bravadotrade.com/v2/data/combos/leaderboard",
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://partner-api.bravadotrade.com/v2/data/combos/leaderboard"
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://partner-api.bravadotrade.com/v2/data/combos/leaderboard")
.asString();require 'uri'
require 'net/http'
url = URI("https://partner-api.bravadotrade.com/v2/data/combos/leaderboard")
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{
"window": "<string>",
"sort_by": "<string>",
"role": "<string>",
"traders": [
{
"rank": 123,
"wallet": "<string>",
"volume": "<string>",
"trade_count": 123,
"combo_count": 123,
"resolved_trades": 123,
"wins": 123,
"losses": 123,
"win_rate": {},
"realized_pnl": "<string>"
}
]
}Sign each request with a fresh HMAC signature. The cURL and HTTP header values below are placeholders, not reusable credentials. For runnable signing code, use request signing examples.
GET https://partner-api.bravadotrade.com/v2/data/combos/leaderboard
GET /trader-analytics/leaderboard.
Query Parameters
string
default:"all"
Rolling window ending now. One of
24h, 7d, 30d, all.string
default:"volume"
One of
volume, realized_pnl, trade_count, win_rate. win_rate ranks only wallets with at least 5 resolved trades.string
default:"taker"
taker ranks the traders who took liquidity, maker the market makers, all both.integer
default:"25"
Rows to return, 1 to 100. The board does not page.
Response
string
Echo of
window.string
Echo of
sort_by.string
Echo of
role.array
Show Row fields
Show Row fields
integer
1-based rank.
string
Polygon wallet address.
string
Notional traded in the window, decimal string.
integer
Fills in the window.
integer
Distinct combos traded.
integer
Fills whose combo has resolved.
integer
Resolved fills with positive PnL.
integer
Resolved fills with negative PnL.
string | null
wins / resolved_trades, between 0 and 1. null with no resolved trades.string
Sum of realized PnL over resolved fills.
Errors
| Status | When |
|---|---|
400 Bad Request | INVALID_WINDOW, INVALID_SORT, or a role / limit outside the allowed values |
401 Unauthorized | Missing or invalid HMAC credentials, or not a Data API key |
429 Too Many Requests | Rate limit exceeded, see Retry-After header |
Example
curl -G https://partner-api.bravadotrade.com/v2/data/combos/leaderboard \
-H "X-BRAVADO-API-KEY: $BRAVADO_API_KEY" \
-H "X-BRAVADO-TIMESTAMP: <unix-ms>" \
-H "X-BRAVADO-SIGNATURE: <signature-for-this-request>" \
-d window=7d \
-d sort_by=realized_pnl \
-d limit=2
{
"window": "7d",
"sort_by": "realized_pnl",
"role": "taker",
"traders": [
{
"rank": 1,
"wallet": "0xabc123...def456",
"volume": "18420.000000",
"trade_count": 57,
"combo_count": 31,
"resolved_trades": 40,
"wins": 9,
"losses": 31,
"win_rate": "0.2250",
"realized_pnl": "6120.500000"
}
]
}