curl --request GET \
--url https://public-api.birdeye.so/wallet/v2/leaderboard \
--header 'X-API-KEY: <api-key>'import requests
url = "https://public-api.birdeye.so/wallet/v2/leaderboard"
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://public-api.birdeye.so/wallet/v2/leaderboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"data": [
{
"owner": "3QG3aFvShbd6SxN3SdPowYQbokfReLGV6L141kMJQoLc",
"total_value": 5235177.875046033,
"trade_count": 82,
"volume_usd": 2528308.586962412,
"realized_pnl": -236.30401229077495,
"unrealized_pnl": 0
},
{
"owner": "226rXSbYUSwux7aHGC2XhhVhnuzazVPYuveGXyAsqvrt",
"total_value": 27178262.34140204,
"trade_count": 189,
"volume_usd": 1575267.9387524147,
"realized_pnl": -146.38501180820623,
"unrealized_pnl": 0
}
]
}{
"success": false,
"message": "Bad request"
}{
"success": false,
"message": "Unauthorized"
}{
"success": false,
"message": "Access Denied"
}{
"success": false,
"message": "Too many requests"
}{
"success": false,
"message": "Internal Server Error"
}Wallet - Leaderboard
’ Retrieve the wallet leaderboard sorted by total asset value in descending order.’
curl --request GET \
--url https://public-api.birdeye.so/wallet/v2/leaderboard \
--header 'X-API-KEY: <api-key>'import requests
url = "https://public-api.birdeye.so/wallet/v2/leaderboard"
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://public-api.birdeye.so/wallet/v2/leaderboard', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"success": true,
"data": [
{
"owner": "3QG3aFvShbd6SxN3SdPowYQbokfReLGV6L141kMJQoLc",
"total_value": 5235177.875046033,
"trade_count": 82,
"volume_usd": 2528308.586962412,
"realized_pnl": -236.30401229077495,
"unrealized_pnl": 0
},
{
"owner": "226rXSbYUSwux7aHGC2XhhVhnuzazVPYuveGXyAsqvrt",
"total_value": 27178262.34140204,
"trade_count": 189,
"volume_usd": 1575267.9387524147,
"realized_pnl": -146.38501180820623,
"unrealized_pnl": 0
}
]
}{
"success": false,
"message": "Bad request"
}{
"success": false,
"message": "Unauthorized"
}{
"success": false,
"message": "Access Denied"
}{
"success": false,
"message": "Too many requests"
}{
"success": false,
"message": "Internal Server Error"
}- Usage Note
- Accessibility
- Chain Supported
Wallet leaderboard by total asset value.
limitsupports1to100, andoffsetsupports up to10,000.from_valuedefaults to100,000and cannot go below that threshold.to_value, when provided, must be greater thanfrom_value.- Results are sorted by total asset value in descending order.
- Standard
- Lite
- Starter
- Premium
- Business
- Enterprise
Solana
Compute Unit ⚙️
Compute Unit ⚙️
- This endpoint consumes
25 CUper request.
Use Cases 💡
Use Cases 💡
- Build whale leaderboards and wallet-rich-list style screens.
- Slice wallet rankings by value bands for cohort analysis.
- Find large wallets worth investigating further with PnL or funding endpoints.
How to Use 🛠️
How to Use 🛠️
- Set
x-chain=solana. - Use
from_valueand optionalto_valueto define the wallet band. - Page through the leaderboard with
offsetandlimit.
Best Practices ✅
Best Practices ✅
- Use the leaderboard as a discovery layer, then drill into individual wallets with net-worth and PnL endpoints.
- Keep value bands explicit so comparisons stay meaningful across screens.
Limitations ⚠️
Limitations ⚠️
- Solana only.
from_valuehas a hard floor of100,000.
Authorizations
API key for authentication
Headers
Solana network only.
solana Query Parameters
Minimum total value filter. Defaults to 100,000 and must be greater than or equal to 100,000.
x >= 100000Maximum total value filter. Must be greater than or equal to 100,000 and greater than from_value.
x >= 100000Field used to sort leaderboard results.
Supported values:
- total_value: Total wallet value in USD.
- trade_count: Total number of trades.
- volume_usd: Total trading volume in USD.
- realized_pnl: Realized profit and loss in USD.
- unrealized_pnl: Unrealized profit and loss in USD.
total_value, trade_count, volume_usd, realized_pnl, unrealized_pnl Time interval used to calculate leaderboard metrics.
30m, 1h, 2h, 4h, 6h, 8h, 12h, 24h, 2d, 3d, 7d, 14d, 30d, 60d, 90d, all_time PNL calculation method. wac (Weighted Average Cost): calculates PNL for each sell against the average cost of the position held at the time of the sell. Buys only re-average the cost of the remaining inventory, and previously realized sell PNL is not affected by later trades. net_cash (Net Cash): calculates PNL across the full trade history using the spread between cumulative average sell price and cumulative average buy price. The buy average includes all buys and is not reduced by sells, so later buys can change the reported PNL.
wac, net_cash Minimum number of trades. Must be greater than or equal to 0.
x >= 0Maximum number of trades. Must be greater than or equal to min_trade.
x >= 0Minimum trading volume in USD. Must be greater than or equal to 0.
x >= 0Maximum trading volume in USD. Must be greater than or equal to min_volume_usd.
x >= 0Minimum realized PnL in USD. Can be negative.
Maximum realized PnL in USD. Must be greater than or equal to min_realized_pnl.
Minimum unrealized PnL in USD. Can be negative.
Maximum unrealized PnL in USD. Must be greater than or equal to min_unrealized_pnl.
1 <= x <= 100Make sure offset <= 10000
0 <= x <= 10000Was this page helpful?

