Polymarket Alpha Signals: Odds Moves Live avatar

Polymarket Alpha Signals: Odds Moves Live

Pricing

from $15.00 / 1,000 price move signals

Go to Apify Store
Polymarket Alpha Signals: Odds Moves Live

Polymarket Alpha Signals: Odds Moves Live

Track Polymarket odds in real time and get only the markets that actually moved. Pay per signal, not per row. A quiet run costs you nothing.

Pricing

from $15.00 / 1,000 price move signals

Rating

0.0

(0)

Developer

Dmitrii Lominskii

Dmitrii Lominskii

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

This Actor watches live Polymarket markets and returns only the ones where something happened: a price move past your thresholds, a spike in 24 hour volume, or a brand new market. Every run compares the current state against what it saw on the previous run and writes one row per signal. You are charged per signal, so a run that finds nothing costs nothing beyond the Actor start fee. Put it on a schedule and it becomes a continuous monitor.

What you get

Three signal types, each a separate row in the dataset:

  • Price move: the price changed by at least 0.03 points and at least 15 percent within your comparison window. Both thresholds must be met.
  • Volume spike: 24 hour volume grew by at least 25 percent and at least $5,000. Both thresholds must be met.
  • New market: a market appeared since the previous run. Off by default, see Limits below.

Every row carries the current and previous price, the change in points and in percent, current and previous volume, liquidity, best bid, best ask, spread, the market question, its tags, event title and a link to the market on Polymarket.

How it works

The Actor keeps a short price and volume history in a named key-value store on your account. Each run reads that history, compares it against live data, and writes the history back.

The first run has nothing to compare against, so it records a baseline and emits no signals. This is expected. The second run is the first one that can produce results.

When a run produces no signals, it writes a single free run_summary row instead of leaving the dataset empty. That row tells you how many markets were checked, how many candidates were suppressed, and why nothing fired. It is not charged. Filter on signal_type if you only want real signals.

Set Comparison window, minutes close to how often you schedule the run. If you run hourly, use 60. If you run every 15 minutes, use 15. The Actor looks for the stored point closest to that window and reports the age it actually used in actual_window_minutes, which is almost always a few minutes off the window you asked for. That is the real interval the comparison was made over.

Quick start

  1. Leave the defaults and press Start. This run records a baseline.
  2. Wait roughly as long as your comparison window, then press Start again. This run returns signals.
  3. When the output looks right, create a schedule with the same input and the same interval.

Results land in the dataset and can be sent onward through the Integrations tab: webhooks, Slack, Zapier, Make, n8n and the rest.

What a run costs

You pay per signal that reaches the dataset. Suppressed candidates, filtered markets and run_summary rows are not charged.

Max signals per run is the ceiling, 5 by default. Signals are ranked by strength first, so the cap keeps the strongest ones. That makes the worst case of any single run exactly:

5 x $0.015 = $0.075

On an hourly schedule that is at most $1.80 per day. Most runs return fewer than five signals, so the real figure is lower. Raise the cap for full coverage, lower it to tighten the ceiling.

The Actor start fee is $0.00005 at 512 MB of memory, and one such fee per extra gigabyte above 1 GB.

Tuning the output

Too many signals: raise Minimum price move, percent, raise Minimum 24 hour volume to work on a smaller and more liquid universe, or lower Max signals per run.

Too few signals: lower the move thresholds, lower Minimum liquidity and Minimum 24 hour volume, or raise Max markets per run.

Only the markets you care about: fill Market slugs or Condition IDs to watch a fixed list, or use Include tags to keep a theme such as politics or crypto. In watchlist mode the liquidity and volume filters do not apply, since you named the markets yourself.

Limits worth knowing before you start

Schedule interval and comparison window belong together. If the interval is much longer than the window, the Actor may have no usable history point and return nothing. It accepts points between a quarter and four times the window, so a missed run or a few minutes of drift will not break the chain.

Above 180 minutes the Actor falls back to Polymarket's own 24 hour price change until it has collected enough history of its own. In those rows window_source is gamma_1d and actual_window_minutes is 1440, so the comparison really is against 24 hours ago, not against the window you set. Volume spikes have no such fallback and simply will not fire until history builds up.

The very first run can still find price moves. With no history yet, the Actor checks Polymarket's own 1 hour price change and can emit price_move signals from it, with window_source set to gamma_1h and actual_window_minutes at 60. Volume spikes and new market signals still need a second run, there is no such field to fall back on for those.

New market signals are off by default. In a broad scan they mostly surface sports sub-markets with no trading yet, which is noise you would be paying for. Turn them on together with a watchlist or a tag filter.

Markets near either end of the price scale are skipped. By default a signal is suppressed when the old or the new price sits outside 0.05 to 0.95, because a market that is already settling produces large percentage moves that mean nothing. Set Minimum price for a signal to 0 if you want to see those collapses.

Watching by slug is more reliable than by condition ID. A few markets cannot be looked up by condition ID directly. The Actor logs them and carries on with the rest.

Auto-generated recurring markets are excluded, such as the five-minute crypto up or down contracts Polymarket creates around the clock. Turn them back on with the checkbox if you want them.

Output fields

FieldMeaning
signal_typeprice_move, volume_spike, new_market, or run_summary for a run with no signals
signal_strengthHow many times over its threshold the signal went. Used for ranking
noteOn a run_summary row, why the run produced no signals
markets_checked, candidates_suppressedOn a run_summary row, how many markets passed the filters and how many candidates were suppressed
price_now, price_thenPrice at this run and at the comparison point, on the 0 to 1 scale
price_change_points, price_change_pctAbsolute and relative change
volume_24h_now, volume_24h_then, volume_change_pctSame for 24 hour volume
window_minutes, actual_window_minutesRequested window and the age of the point actually used
window_sourcehistory for a stored point, gamma_1d for the long window fallback, gamma_1h for the first-run fallback
liquidity, best_bid, best_ask, spreadOrder book context at the time of the signal
question, slug, outcome_yes, end_dateMarket identity
event_title, event_slug, tags, market_urlEvent context and link
condition_idStable market identifier, use it for a watchlist
detected_at_iso, created_at_iso, age_hoursWhen the signal fired and how old the market is

Running several monitors

All runs on your account share one history store by default, which is what you want: change a threshold and the history stays. If you run two monitors with different watchlists and want their histories kept apart, give each a different State key.