Polymarket Market Monitor + Whale & Arbitrage Signals avatar

Polymarket Market Monitor + Whale & Arbitrage Signals

Pricing

from $5.00 / 1,000 polymarket market signals

Go to Apify Store
Polymarket Market Monitor + Whale & Arbitrage Signals

Polymarket Market Monitor + Whale & Arbitrage Signals

Turn Polymarket into a trading-signal feed: watchlist any market by slug, track price and volume changes between runs, whale flow, top holders, price history, orderbook depth, and Kalshi arbitrage spreads. Category, keyword and volume filters. JSON or CSV. First 5 results per run free

Pricing

from $5.00 / 1,000 polymarket market signals

Rating

0.0

(0)

Developer

Muhamed Didovic

Muhamed Didovic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 days ago

Last modified

Share

Polymarket Market Monitor — Prices, Whale Trades & Arbitrage Signals

Turn Polymarket into a structured trading-signal feed. Track prediction markets by category or keyword — live prices, 24h/1wk/1mo price moves, volume, liquidity, resolution dates — plus signal layers no plain scraper gives you: price & volume deltas versus your previous run, whale trade flow, live orderbook depth, and experimental Kalshi cross-market arbitrage matching. One row per market (or per event group), JSON or CSV out. First 5 results of every run are free so you can validate the output shape.

How it works

How Polymarket Market Monitor works

✨ Why use this monitor?

Watching hundreds of prediction markets by hand doesn't scale, and a plain market scraper only tells you where prices are — not what changed, who's moving size, or whether the same question is priced differently elsewhere.

  • 📌 Watchlist mode. Pass marketSlugs / eventSlugs straight from polymarket.com URLs to track exactly the markets you care about — watchlist items are always included, bypassing the volume/keyword filters, and combine freely with category discovery.
  • 📈 Cross-run change detection. The actor remembers every market it saw and reports priceChangeSinceLastRun, volume24hChangeSinceLastRun, and volumeTradedSinceLastRun on the next run — schedule it hourly and you have a change feed, not a snapshot.
  • 🕰️ Price history (opt-in). Each market's full YES-price time series from the CLOB — daily candles over the market's lifetime, or 6h/1h candles for the last month. Backtest or chart without waiting for scheduled runs to accumulate.
  • 🏦 Top holders (opt-in). The largest position holders on each side of the market — wallet, display name, shares, and estimated USD value. Whale positions to complement the whale flow feed.
  • 🐋 Whale trade flow (opt-in). Large-trade count, buy/sell/net USD flow, and the top 5 biggest recent trades per market — trader name, side, outcome, USD value — joined from Polymarket's public trade feed in a single extra API sweep.
  • 📚 Live orderbook depth (opt-in). Best bid/ask, spread, bid/ask depth in USD (top 10 levels), and book imbalance from the CLOB — see whether a price can actually absorb your size.
  • ⚖️ Kalshi arbitrage matching (opt-in, experimental). Each Polymarket question is fuzzy-matched against ~70k open Kalshi markets; when a twin is found you get its ticker, yes bid/ask, the price spread in points, and an arbSignal flag. Matching is deliberately conservative — a missed match beats a false signal.
  • 🚨 Odds-outlier flags. Every row carries heuristic signals: isBigMover (10+ point move in 24h), isLongshotRally (+5 points on a ≤20¢ market), isNearResolution (resolves within 48h with active volume), isThinBook (high volume on thin liquidity).
  • 🎛️ Trader-grade filters. Minimum 24h volume, minimum liquidity, minimum lifetime volume, minimum price move, minimum minutes until resolution — keep only markets that matter to your strategy.
  • Pure JSON APIs. No HTML parsing, no login, no proxies needed — data comes straight from Polymarket's public Gamma, CLOB, and Data APIs plus Kalshi's public API. Fast and stable.

🎯 Use cases

TeamWhat they build
Prediction-market tradersHourly change feeds with whale flow and thin-book warnings before entering positions
Arbitrage huntersPolymarket-vs-Kalshi spread screens on matched markets
Quant / data teamsHistorical price+volume time series by scheduling runs and appending datasets
Journalists / researchersOdds trackers for elections, geopolitics, Fed decisions, sports
Crypto analystsBTC/ETH strike-market dashboards with orderbook depth
Alert buildersPipe arbSignal / isBigMover rows into Slack, Telegram or email via Apify integrations

📥 Supported inputs

No URLs needed — pick what to track with filters:

InputBehaviour
marketSlugsWatchlist: exact markets by URL slug (the last path segment of a polymarket.com market URL). Always included, filters bypassed
eventSlugsWatchlist: event groups from polymarket.com/event/<slug>. In markets mode every market inside the event is tracked; in events mode each slug is one row
categoriesTop-level category shortcuts: sports, politics, crypto, technology, science, business, finance, elections, entertainment, economy, world
tagIdsRaw Polymarket Gamma tag IDs for anything outside the shortcuts (browse at gamma-api.polymarket.com/tags)
searchQueriesKeyword filter on the market question/description, e.g. ["bitcoin", "fed"]
itemTypemarkets = one row per question · events = one row per event group (e.g. "World Cup Winner") with a nested markets summary
statusactive (default), closed (resolved), or all

Watchlist slugs and category/keyword discovery combine in one run (watchlist rows come first). Leave everything empty to track the whole exchange sorted by your sortBy choice.

🔄 How it works

  1. Pull markets (or event groups) from Polymarket's public Gamma API for each selected category/tag, sorted by 24h volume, liquidity, end date, or recency.
  2. Apply your filters — volume, liquidity, price move, minutes-until-resolution, keywords.
  3. Diff against the previous run — price/volume deltas are computed from a persistent snapshot (stored in a named key-value store, so it survives between runs and works on schedules).
  4. Join the signal layers you enabled — whale trades (one API sweep for all markets), orderbook depth (one CLOB call per market, fetched in parallel), Kalshi twin matching (one index build per run).
  5. Flag outliers and push one row per market/event to the dataset. JSON and CSV export automatically.

⚙️ Input parameters

ParameterTypeDefaultDescription
marketSlugsarray[]Watchlist of exact market slugs — always included, filters bypassed
eventSlugsarray[]Watchlist of event slugs — expanded to their markets in markets mode
categoriesarray["politics"]Category shortcuts (see Supported inputs)
searchQueriesarray[]Case-insensitive keyword filter on question + description
tagIdsarray[]Raw Gamma tag IDs, combined with categories
itemTypestringmarketsmarkets or events
statusstringactiveactive / closed / all
sortBystringvolume24hrvolume24hr / liquidity / endDate / startDate / newest
minVolume24hinteger0Drop markets under this 24h USD volume
minLiquidityinteger0Drop markets under this resting liquidity
minTotalVolumeinteger0Drop markets under this lifetime volume
minPriceChangePctinteger0Keep only markets whose 1wk/1mo price moved ≥ N points
minutesUntilEndinteger0Drop markets resolving sooner than N minutes from now
includeWhaleTradesbooleanfalseJoin whale flow + top 5 whale trades per market
whaleMinUsdinteger10000Minimum single-trade cash value to count as a whale
includeOrderbookbooleanfalseFetch live CLOB book per market (best bid/ask, depth, imbalance)
includePriceHistorybooleanfalseAttach the YES-price time series (up to 400 points, newest last)
priceHistoryIntervalstringdailydaily (full lifetime) / 6h / 1h (last ~month)
includeTopHoldersbooleanfalseAttach largest position holders per outcome side
topHoldersCountinteger10Holders fetched per outcome side
kalshiArbbooleanfalseFuzzy-match against open Kalshi markets and compute arb spreads
kalshiArbMinSpreadPctinteger5Points of spread needed to flag arbSignal: true
dedupebooleanfalseSkip rows already pushed on previous runs. Leave off for monitoring — deltas are computed either way
maxItemsPerSourceinteger300Per-category fetch cap before filtering
maxItemsTotalinteger100Hard cap on dataset rows per run (controls cost)

📊 Output overview

Each tracked market is one single dataset row of type: "market" (or type: "event" in events mode). All enabled signal layers — cross-run deltas, whale flow, orderbook, Kalshi match — are merged into the same row, so the dataset row count equals the market count exactly. You're charged per result after the first 5 free rows each run.

📦 Output sample

{
"type": "market",
"id": "531217",
"question": "Will the price of Bitcoin be above $66,000 on July 11?",
"slug": "will-the-price-of-bitcoin-be-above-66000-on-july-11",
"url": "https://polymarket.com/event/bitcoin-price-on-july-11",
"conditionId": "0x66b0824d3e2fe1c...",
"eventTitle": "Bitcoin price on July 11?",
"outcomes": ["Yes", "No"],
"outcomePrices": [0.0145, 0.9855],
"yesPrice": 0.0145,
"lastTradePrice": 0.014,
"bestBid": 0.014,
"bestAsk": 0.015,
"spread": 0.001,
"volume24h": 311480.51,
"volume1wk": 1102873.22,
"totalVolume": 4817263.9,
"liquidity": 54921.34,
"startDate": "2026-07-04T20:01:44Z",
"endDate": "2026-07-11T21:00:00Z",
"minutesUntilEnd": 1362,
"oneDayPriceChange": -0.011,
"oneWeekPriceChange": -0.045,
"oneMonthPriceChange": null,
"priceChangeSinceLastRun": -0.002,
"volume24hChangeSinceLastRun": 18211.4,
"volumeTradedSinceLastRun": 21830.7,
"lastSeenAt": "2026-07-10T21:24:21.931Z",
"isBigMover": false,
"isLongshotRally": false,
"isNearResolution": true,
"isThinBook": false,
"signals": ["resolves within 48h with active volume"],
"whaleTradeCount": 3,
"whaleBuyUsd": 42100.5,
"whaleSellUsd": 5250.47,
"whaleNetFlowUsd": 36850.03,
"topWhaleTrades": [
{
"side": "BUY",
"outcome": "No",
"usdValue": 18067.0,
"shares": 50000,
"price": 0.3613,
"trader": "0x8bd3...f69a",
"tradedAt": "2026-07-10T18:14:50.000Z"
}
],
"bookBestBid": 0.014,
"bookBestAsk": 0.015,
"bookSpread": 0.001,
"bidDepthUsd": 8211.19,
"askDepthUsd": 12081.53,
"bookImbalance": -0.191,
"priceHistory": [
{ "t": "2026-07-04T00:00:08.000Z", "p": 0.031 },
{ "t": "2026-07-05T00:00:08.000Z", "p": 0.024 }
],
"topHolders": [
{ "outcome": "No", "wallet": "0xa5ef...2966", "name": "athelstan", "shares": 505624, "usdValue": 498293.4 }
],
"kalshiMatch": {
"kalshiTicker": "KXBTCD-26JUL1117-T66000",
"kalshiTitle": "BTC price on Jul 11, 2026 at 5pm EDT? — $66,000 or above",
"kalshiYesBid": 0.01,
"kalshiYesAsk": 0.01,
"kalshiYesMid": 0.01,
"matchScore": 0.67,
"arbSpreadPct": 0.45,
"arbSignal": false
},
"arbSpreadPct": 0.45,
"arbSignal": false,
"active": true,
"closed": false,
"scrapedAt": "2026-07-10T22:30:11.412Z"
}

🗂 Key output fields

GroupFields
Identityid, question, slug, url, conditionId, eventId, eventSlug, eventTitle
Pricesoutcomes[], outcomePrices[], yesPrice, lastTradePrice, bestBid, bestAsk, spread
Volume & liquidityvolume24h, volume1wk, volume1mo, totalVolume, liquidity
Price movesoneDayPriceChange, oneWeekPriceChange, oneMonthPriceChange (from the API, as decimals: 0.05 = 5 points)
Cross-run deltaspriceChangeSinceLastRun, volume24hChangeSinceLastRun, volumeTradedSinceLastRun, lastSeenAtnull on the first run a market is seen
Outlier flagsisBigMover, isLongshotRally, isNearResolution, isThinBook, signals[] (human-readable reasons)
Whale flow (when includeWhaleTrades: true)whaleTradeCount, whaleBuyUsd, whaleSellUsd, whaleNetFlowUsd, topWhaleTrades[]
Orderbook (when includeOrderbook: true)bookBestBid, bookBestAsk, bookSpread, bidDepthUsd, askDepthUsd, bookImbalance (−1…1, positive = bid-heavy)
Price history (when includePriceHistory: true)priceHistory[]{t, p} points, ISO timestamp + YES price, newest last, up to 400 points
Top holders (when includeTopHolders: true)topHolders[]{outcome, wallet, name, shares, usdValue} sorted by position value
Kalshi arb (when kalshiArb: true)kalshiMatch{} (ticker, title, yes bid/ask/mid, match score), arbSpreadPct (Polymarket yes − Kalshi mid, in points), arbSignal
Event rows (itemType events)title, tags[], marketCount, leadingOutcome, leadingOutcomePrice, markets[] (nested per-outcome summary), openInterest, commentCount

❓ FAQ

How do the cross-run deltas work? The actor stores a snapshot of every market it saw (price, 24h volume, lifetime volume) in a named key-value store called polymarket-monitor-state. On the next run it diffs current values against that snapshot. Deltas are null the first time a market is seen. Snapshots older than 30 days are pruned automatically.

How reliable is the Kalshi matching? It's fuzzy title matching with a conservative threshold, and it's marked experimental for a reason. In testing it correctly pairs exact twins (e.g. Polymarket "Bitcoin above $66,000 on July 11" → Kalshi "BTC price on Jul 11 — $66,000 or above") and rejects near-misses (a "Fed +25bps" question will NOT match a "Fed funds rate above X%" market). But resolution criteria, timezones and fee structures differ between platforms — always verify both markets' rules before trading a flagged spread. matchScore is included so you can set your own bar.

Does a big arbSpreadPct mean free money? No. Spreads can reflect different resolution sources, different cut-off times, fees, or stale quotes on the thinner platform. Treat arbSignal as a screening tool, not a trade instruction. Nothing in this actor's output is financial advice.

Where do I find a market's slug for the watchlist? It's the last path segment of the market's polymarket.com URL. For event pages (polymarket.com/event/<slug>) use eventSlugs. Unresolvable slugs are reported in the run log and skipped — the run doesn't fail.

What's the difference between whale trades and top holders? topWhaleTrades is flow — who traded size recently. topHolders is positions — who is currently sitting on the largest stake on each side. A market can have zero recent whale trades but a $1M standing position.

Why don't I see whale trades on my markets? The whale feed covers recent large trades exchange-wide. Quiet markets often have none above your whaleMinUsd threshold — that's real signal (no size moving), not missing data.

How do I build a price history? Schedule the actor (e.g. hourly) with dedupe: false. Each run appends a fresh snapshot per market, and the delta fields tell you what changed between runs.

Does it need a proxy or login? No. All four data sources (Polymarket Gamma, CLOB, Data API, Kalshi) are public JSON APIs. The proxy input exists for completeness but is rarely needed.

How is the run priced? Pay-per-event: you're charged per dataset row, and the first 5 rows of every run are free so you can validate output on your exact input before scaling maxItemsTotal up.

💬 Support

🛠 Additional services

  • Custom output shape, additional signal layers, or one-off datasets: muhamed.didovic@gmail.com
  • Need a similar monitor for other prediction or betting markets (Kalshi-first, sports odds, etc.)? Drop an email.
  • For API access (no Apify fee, just a usage fee for the API): muhamed.didovic@gmail.com

🔎 Explore more scrapers

If this Polymarket Market Monitor was useful, see other scrapers and actors at memo23's Apify profile — covering finance, social media, job boards, real estate, and more.


⚠️ Disclaimer

This Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Polymarket, Kalshi, or any of their subsidiaries or affiliates. All trademarks mentioned are the property of their respective owners.

The actor accesses only publicly available JSON APIs (Polymarket's Gamma, CLOB and Data APIs; Kalshi's public trade API) — no authenticated endpoints, no order placement, no wallet access, no content behind a login. Output is market data, not financial advice; users are responsible for their own trading decisions and for ensuring their use complies with each platform's Terms of Service and applicable law in their jurisdiction.


SEO Keywords

polymarket scraper, polymarket api, polymarket market monitor, polymarket price tracker, prediction market scraper, prediction market data, polymarket odds api, polymarket whale tracker, polymarket whale trades, polymarket kalshi arbitrage, kalshi polymarket spread, prediction market arbitrage finder, polymarket orderbook data, polymarket volume tracker, polymarket price alerts, polymarket monitoring tool, scrape polymarket, polymarket dataset, election odds scraper, crypto prediction market data, polymarket gamma api, prediction market signals