1. Copy-trading automation
Poll a trader's open positions and mirror the delta against your own book.
Every trader on Binance's Smart Money leaderboard, as normalized REST JSON. Rankings, open positions with entry and mark prices, and closed-trade history. One X-API-KEY header, no signing.
Pick one to see its parameters and the exact shape it returns.
The leaderboard itself: traders ranked by PNL or ROI over a window you pick.
timeRangeenumrequiredrankingTypeenumrequiredorderenumrequiredonlyShowSharingPositionboolrequiredaccountGroupenumoptionalpageintrequiredrowsintrequiredTraders whose nickname matches a keyword, ranked the same way as tradersList.
searchKeywordstringrequiredtimeRangeenumrequiredrankingTypeenumrequiredorderenumrequiredonlyShowSharingPositionboolrequiredaccountGroupenumoptionalpageintrequiredrowsintrequiredEverything the leaderboard holds on one trader, by ID.
topTraderIdstringrequiredA timestamped series for one trader: ROI, PNL or balance.
topTraderIdstringrequiredtimeRangeenumrequiredchartDataTypeenumrequiredWhat one trader is holding right now, one row per symbol.
topTraderIdstringrequiredmarketTypeenumrequiredpageintrequiredrowsintrequiredPositions one trader has already closed. Paged by cursor, not by page number.
topTraderIdstringrequiredmarketTypeenumrequiredrowsintrequiredstartTimeintoptionalendTimeintoptionalsymbolstringoptionalsearchAfterstringoptionalThe individual fills behind a trader's positions.
topTraderIdstringrequiredmarketTypeenumrequiredpageintrequiredrowsintrequiredstartTimeintoptionalendTimeintoptionalRank the traders, then feed an id from that response into the positions call. Set KOPYON_KEY in your environment and both samples run as they are.
import os, requests
BASE = "https://api.kopyon.com/v4"
AUTH = {"X-API-KEY": os.environ["KOPYON_KEY"]}
def get(path, **params):
r = requests.get(f"{BASE}/{path}", headers=AUTH, params=params)
return r.json()
# 1. top traders by 30-day PnL, only those sharing positions
traders = get("tradersList", timeRange="30D", rankingType="PNL",
order="DESC", onlyShowSharingPosition="true",
page=1, rows=20)
trader_id = traders["data"]["accounts"][0]["topTraderId"]
# 2. that trader's open USD-M positions
positions = get("traderOpenPositions", topTraderId=trader_id,
marketType="UM", page=1, rows=20)
for p in positions["data"]["positions"]:
print(p["symbol"], p["side"], p["pnl"])const BASE = "https://api.kopyon.com/v4";
const headers = { "X-API-KEY": process.env.KOPYON_KEY };
const get = async (path, params) => {
const q = new URLSearchParams(params);
const res = await fetch(`${BASE}/${path}?${q}`, { headers });
return res.json();
};
// 1. top traders by 30-day PnL, only those sharing positions
const traders = await get("tradersList", {
timeRange: "30D", rankingType: "PNL", order: "DESC",
onlyShowSharingPosition: "true", page: 1, rows: 20,
});
const traderId = traders.data.accounts[0].topTraderId;
// 2. that trader's open USD-M positions
const positions = await get("traderOpenPositions", {
topTraderId: traderId, marketType: "UM", page: 1, rows: 20,
});
for (const p of positions.data.positions)
console.log(p.symbol, p.side, p.pnl);Neither endpoint has an optional parameter, so nothing here is safe to trim. Full reference
Most integrations are one of these three.
Poll a trader's open positions and mirror the delta against your own book.
Watch insertTime on the order feed. Alert when a trader you track opens or closes.
Rank the board by PnL or ROI over any window, then aggregate what the leaders hold.
Every plan reaches all seven endpoints. What changes is how fast you can call them, how many calls you get, and what you are allowed to do with the data.
Capacity, uptime and redistribution rights are all negotiated. It's for firms reselling the data, or running it as core infrastructure.
Responses are delivered live, with no caching or polling on our side. Binance typically refreshes Smart Money data per trader about every 10 seconds, so an upstream response may be up to roughly 10 seconds old. Polling more frequently lets you detect each Binance refresh as soon as it becomes available, although repeated responses between refreshes are expected.
Yes, right here. Every endpoint above has a Run button that calls the live API without a key, on a small daily allowance per IP. A free key raises that to 10,000 requests a month and never asks for a card.
One header: X-API-KEY. No OAuth flow, no request signing. The key carries your plan and is not pinned to an IP, so it works from as many workers or regions as you like. An unrecognised key returns 401.
You get a 429 immediately, carrying Retry-After with the seconds to wait. Two limits run at once: a per-minute rate on each endpoint, and a monthly quota across all of them that runs 30 days from your first call. Nothing is queued, and nothing is billed as overage. Both follow your key, or your IP if you have no key. You do not have to wait to find out where you stand: every metered response reports both counters in X-RateLimit-* headers.
USDT-M (UM) and COIN-M (CM) Binance Futures. The position and order endpoints take a marketType parameter. The ranked list also takes accountGroup, which separates AI accounts from human Featured Traders.
That depends on the trader, not your plan. Each one chooses what to share, and traderProfile returns those flags, so you can check before spending requests on someone who shares nothing. When they do share it, you can filter by time range and page through.
Yes. Higher rate limits and dedicated capacity are both negotiable, and we license the source too. Tell us the volume you need on Telegram at @nunnito, or by email.
Yes. We get it running inside your own infrastructure, wire the feed into a system you already run, push position alerts into Telegram, and hand over history as a database dump. Send the scope to @nunnito on Telegram, or by email.
The free tier is 10,000 requests a month. That is enough to build a whole integration and test it against live data before you pay anything.
Usually answered within a day · [email protected] ·