# Bitget Leaderboard Position Tracker With Trading Signals (`brilliant_gum/bitget-scraper`) Actor

Scrape Bitget copy trading leaderboard, track live open positions of top traders, and generate LONG/SHORT trading signals using Three-Signal Analysis — notional, trader count, and volume-weighted consensus.

- **URL**: https://apify.com/brilliant\_gum/bitget-scraper.md
- **Developed by:** [Yuliia Kulakova](https://apify.com/brilliant_gum) (community)
- **Categories:** Automation, Developer tools
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $45.00 / 1,000 trader scrapeds

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

![Bitget Copy Trading Scraper](https://i.imgur.com/wnbCQeh.png)

## Bitget Copy Trading Scraper

See exactly where Bitget's top copy traders are putting their money — in real time. Track up to **2,184 traders**, scrape their open positions, and get actionable **LONG/SHORT signals** generated by a three-layer analysis engine that separates winners from losers.

Built for crypto traders, quant analysts, and anyone who wants to know what the smart money is doing before the market moves.

***

### What You Get

- **Full leaderboard** — up to 2,184 copy traders ranked by ROI, with PnL, AUM, win rate, and follower count
- **Live open positions** — every trader's current futures positions: coin, direction, leverage, margin, entry price
- **Trading signals** — which coins top traders are loading up on vs. where the losers are sitting
- **Market sentiment** — overall BULLISH / BEARISH / NEUTRAL bias from winners' positioning

***

### Modes

| Mode | What it does |
|------|-------------|
| `leaderboard` | Scrape rankings + full stats for all traders (fast) |
| `positions` | Fetch live positions for specific traders by ID |
| `full` | Leaderboard + open positions for every trader |
| `analytics` | Everything above + Winners vs Losers signal analysis |

***

### How the Signals Work

The analytics engine runs **three independent signal methods** per coin and combines them into a consensus:

- **Notional signal** — raw USD exposure: where are winners putting the most capital?
- **Trader signal** — democratic vote: each trader counts once, regardless of position size
- **Volume signal** — sqrt-weighted to dampen single-whale distortion

**Consensus** = 2 out of 3 signals agree on direction.
**Confidence**: `HIGH` (all 3 agree) · `MEDIUM` (2/3) · `LOW` (split)

> When all leaderboard traders are profitable (common on Bitget), the scraper automatically switches to **winners-only mode** — signals reflect where top performers are positioned with the highest conviction.

***

### Input

| Field | Type | Default | Description |
|-------|------|---------|-------------|
| `mode` | string | `leaderboard` | Scraping mode |
| `maxTraders` | integer | `50` | Traders to analyze (up to 2,184) |
| `traderIds` | array | — | Hex IDs for `positions` mode |
| `fetchPositions` | boolean | `true` | Include open positions |
| `winnersPercent` | integer | `25` | Top N% classified as Winners |
| `losersPercent` | integer | `25` | Bottom N% classified as Losers |
| `proxyConfiguration` | object | — | Custom proxy (leave empty — built-in proxy included) |

***

### Output

**Trader record** (`_type: "trader"`):

```json
{
  "traderUid": "bcb44a7286b73953ac96",
  "displayName": "LiquidityMatrix",
  "pnl": 15265.32,
  "roi": 7507.24,
  "aum": 60342.59,
  "winRate": 93.93,
  "followCount": 137,
  "positions": [
    {
      "symbol": "ETH",
      "side": "LONG",
      "leverage": 40,
      "margin": 5099.07,
      "notionalValue": 203962.88,
      "avgPrice": 2286.45
    }
  ]
}
```

**Analytics record** (`_type: "analytics"`):

```json
{
  "marketBias": "STRONGLY_BULLISH",
  "tradersAnalyzed": 100,
  "winnersCount": 25,
  "losersCount": 25,
  "topSignals": [
    {
      "symbol": "BTC",
      "signal": "STRONG_LONG",
      "confidence": "HIGH",
      "volumeBattleScore": 100
    }
  ]
}
```

***

### Pricing

**$45 per 1,000 traders** scraped.

💡 More traders = stronger signals. For analytics mode, we recommend at least 100 traders — the more data, the less noise.

***

### Good to Know

- Bitget positions are always **public** — no login needed
- Handles up to **2,184 traders** (73 pages × 30) in a single run
- Auto-stops at **55 minutes** and runs analytics on collected data — safe within Apify's 1-hour limit
- Rate: ~2 seconds per trader

# Actor input Schema

## `mode` (type: `string`):

<b>leaderboard</b> — Scrape the leaderboard rankings only (fast).<br><b>positions</b> — Fetch positions for specific traders by ID.<br><b>full</b> — Leaderboard + positions for all traders.<br><b>analytics</b> — Full + Winners/Losers analysis and trading signals.

## `maxTraders` (type: `integer`):

Maximum number of traders to scrape. Bitget API calls are fast (~2s per trader).<br>The leaderboard exposes up to 2,184 traders (73 pages × 30).<br><br>💡 <b>More traders = more accurate signals.</b> Larger samples reduce noise and improve signal reliability — we recommend at least 100 traders for analytics mode. With 2,184 available and ~2s per trader, you can analyze the full leaderboard in under 1 hour.<br><br>⚠️ <b>Apify's free tier has a 1-hour timeout.</b> For <code>full</code>/<code>analytics</code> modes the safe limit is ~1,500 traders. The actor auto-stops at 55 minutes and runs analytics on collected data.

## `traderIds` (type: `array`):

Bitget copy trader hex IDs (from the trader page URL: <code>https://www.bitget.com/copy-trading/futures-trader-v1/{traderId}</code>). Required for <code>positions</code> mode.

## `fetchPositions` (type: `boolean`):

Retrieve each trader's current open positions (via the same API that powers the 'Active elite trades' button). Positions are always public on Bitget.

## `winnersPercent` (type: `integer`):

Top N% of traders by PnL classified as Winners for signal generation.

## `losersPercent` (type: `integer`):

Bottom N% of traders by PnL classified as Losers.

## `proxyConfiguration` (type: `object`):

Advanced: custom proxy settings. Leave empty to use the built-in proxy (recommended).

## Actor input object example

```json
{
  "mode": "leaderboard",
  "maxTraders": 50,
  "traderIds": [
    "b0b64d7587b73053a496"
  ],
  "fetchPositions": true,
  "winnersPercent": 25,
  "losersPercent": 25
}
```

# Actor output Schema

## `traderUid` (type: `string`):

Unique Bitget copy trader hex identifier.

## `displayName` (type: `string`):

Trader's display name on Bitget.

## `pnl` (type: `string`):

Total profit and loss in USDT over 30 days.

## `roi` (type: `string`):

Return on investment percentage over 30 days.

## `winRate` (type: `string`):

Percentage of winning trades. Available for elite traders only.

## `aum` (type: `string`):

Assets under management in USDT. Available for elite traders only.

## `followCount` (type: `string`):

Number of copy traders following this trader.

## `positions` (type: `string`):

Array of current open futures positions: symbol, side (LONG/SHORT), leverage, margin, notionalValue, avgPrice.

## `positionCount` (type: `string`):

Number of currently open positions.

## `marketBias` (type: `string`):

Overall market sentiment from winners' positioning: STRONGLY\_BULLISH, BULLISH, NEUTRAL, BEARISH, STRONGLY\_BEARISH. Analytics mode only.

## `topSignals` (type: `string`):

Array of trading signals per coin: symbol, signal (STRONG\_LONG/LONG/NEUTRAL/SHORT/STRONG\_SHORT), confidence (HIGH/MEDIUM/LOW), volumeBattleScore. Analytics mode only.

## `tradersAnalyzed` (type: `string`):

Total number of traders used to generate signals. Analytics mode only.

## `_type` (type: `string`):

"trader" for individual trader records, "analytics" for the signal summary record.

## `_scrapedAt` (type: `string`):

ISO 8601 timestamp when this record was collected.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "traderIds": [
        "b0b64d7587b73053a496"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("brilliant_gum/bitget-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "traderIds": ["b0b64d7587b73053a496"] }

# Run the Actor and wait for it to finish
run = client.actor("brilliant_gum/bitget-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "traderIds": [
    "b0b64d7587b73053a496"
  ]
}' |
apify call brilliant_gum/bitget-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,brilliant_gum/bitget-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/KmDUL4CQiWPV0ahNd/builds/Eeuon7Qlxm6nF30hl/openapi.json
