# Polymarket Whale Tracker: Big Bets and Smart Money (`scrapemint/polymarket-whale-tracker`) Actor

Every large Polymarket bet across all markets, with the bettor's rank and profit on Polymarket's own leaderboard, so you can tell a top trader's $40K from a losing gambler's. Flags smart money. Schedule it for alerts. No key, no proxy. Pay per bet.

- **URL**: https://apify.com/scrapemint/polymarket-whale-tracker.md
- **Developed by:** [Ken M](https://apify.com/scrapemint) (community)
- **Categories:** Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Polymarket Whale Tracker: Big Bets and Smart Money

Every large bet on Polymarket, across every market, the moment it happens, and **who placed it**. Each bet carries the bettor's rank and profit on Polymarket's own leaderboard, all time and over the last 30 days, so a top-50 trader putting $40K on an outcome stands out from someone down $300K doing the same.

Put it on a schedule (every 5 to 15 minutes) and each run returns only the bets placed since the last one. Connect it to Slack, Telegram, email or a webhook through Apify integrations for whale alerts.

No key, no login, no browser, no proxy: it reads Polymarket's public data API.

### What you get

One row per bet:

| Field | Example |
|---|---|
| `market`, `outcome`, `side` | `Phillies vs. Braves`, `Atlanta Braves`, `SELL` |
| `betUsd`, `shares`, `avgPrice` | `307827.42`, `355130`, `0.8668` |
| `impliedProbability` | the price as a probability |
| `payoutIfRightUsd`, `profitIfRightUsd` | what a buy pays if it is right |
| `smartMoney`, `smartMoneyReasons` | `true`, `["30-day profit rank #59"]` |
| `traderName`, `wallet`, `traderX` | Polymarket name, wallet address, X handle if linked |
| `allTimeProfitRank`, `allTimePnlUsd`, `allTimeVolumeUsd` | where the bettor stands all time |
| `monthProfitRank`, `monthPnlUsd` | and over the last 30 days |
| `fills`, `placedAt`, `lastFillAt` | a large order often fills in pieces; they are added together |
| `marketUrl`, `traderUrl`, `transactionHashes` | links to check any row on Polymarket and on-chain |

Largest bets come first.

### Examples

- **Whale alerts:** defaults, scheduled every 10 minutes
- **Only proven traders:** `onlySmartMoney: true`
- **Stricter smart money:** `smartMoneyTopRank: 50`
- **Only one topic:** `marketKeywords: ["election"]` or `["bitcoin", "ethereum"]` or `["fed", "rate"]`
- **Follow specific wallets (copy-trading research):** `wallets: ["0x..."]`, `minBetUsd: 100`
- **What happened today:** `onlyNew: false`, `lookbackMinutes: 1440`

### How it works

1. Reads every Polymarket trade since the last run above a tenth of your minimum, because a big order can fill as several smaller trades.
2. Adds together the fills of one bet: same wallet, same outcome, same side, within 5 minutes.
3. Keeps bets at or above `minBetUsd`, and by default skips trades at 97 cents and above or 3 cents and below. Those are cash parked in, or taken out of, an outcome already decided, not a view.
4. Looks each bettor up on Polymarket's profit leaderboard, all time and 30 days, and flags smart money when either rank is inside your cut-off with positive profit.

### Pricing

| Event | Price | When |
|---|---|---|
| `whale_bet` | $0.005 | a bet at or above your minimum |
| `smart_money_bet` | $0.02 | the same, from a wallet inside your smart money cut-off |

A run with no new bets returns nothing and costs nothing. Raise `minBetUsd` or turn on `onlySmartMoney` to receive and pay for fewer, stronger signals.

### Notes

- **Smart money means a track record, not inside knowledge.** Leaderboard rank measures past profit on Polymarket. It is a signal, not a guarantee, and a wallet is not a named person.
- **Losing wallets are reported too.** A large bet from a wallet deep in the red is its own signal; some traders fade them.
- **Polymarket only.** Kalshi's public trade feed has no size filter and does not identify traders, so it cannot answer "who is betting big".

# Actor input Schema

## `minBetUsd` (type: `integer`):

Only bets at least this large. Fills of one order placed within 5 minutes are added together first.

## `onlySmartMoney` (type: `boolean`):

Only bets from wallets ranked inside the cut-off below on Polymarket's profit leaderboard.

## `smartMoneyTopRank` (type: `integer`):

A bettor counts as smart money when ranked this high or better by profit, all time or over the last 30 days, with positive profit.

## `marketKeywords` (type: `array`):

Only markets whose title matches one of these, e.g. election, bitcoin, fed, nba.

## `sides` (type: `array`):

BUY, SELL, or empty for both.

## `wallets` (type: `array`):

Only bets from these wallet addresses (0x...), for following specific traders.

## `skipNearCertain` (type: `boolean`):

Skip trades priced at 97 cents or above, or 3 cents or below: parking cash in, or cashing out of, an outcome already decided.

## `onlyNew` (type: `boolean`):

On: each run picks up where the previous one ended, for alerts on a schedule. Off: every bet in the lookback window.

## `lookbackMinutes` (type: `integer`):

How far back the first run (or every run, with only-new off) reaches.

## `maxBets` (type: `integer`):

Stop after this many bets, largest first.

## Actor input object example

```json
{
  "minBetUsd": 10000,
  "onlySmartMoney": false,
  "smartMoneyTopRank": 250,
  "marketKeywords": [],
  "sides": [],
  "wallets": [],
  "skipNearCertain": true,
  "onlyNew": true,
  "lookbackMinutes": 60,
  "maxBets": 50
}
```

# Actor output Schema

## `bets` (type: `string`):

Market, outcome, side, bet size in USD, average price, payout if right, smart money flag and reasons, wallet, trader name, all-time and 30-day profit rank and PnL, links.

## `summary` (type: `string`):

Window covered, fills read, bets returned and how many were smart money.

# 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 = {
    "minBetUsd": 10000,
    "lookbackMinutes": 60,
    "maxBets": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapemint/polymarket-whale-tracker").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 = {
    "minBetUsd": 10000,
    "lookbackMinutes": 60,
    "maxBets": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapemint/polymarket-whale-tracker").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 '{
  "minBetUsd": 10000,
  "lookbackMinutes": 60,
  "maxBets": 50
}' |
apify call scrapemint/polymarket-whale-tracker --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,scrapemint/polymarket-whale-tracker"
        }
    }
}
```

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/Ad4NWwasa6wzvB1Dn/builds/SChXtK6c9pFh0rUyo/openapi.json
