Skip to main content
A market mover is anything that just shifted hard: a probability that jumped, platform volume that accelerated, or a bucket of activity that spiked above its neighbors. Struct exposes three REST endpoints that cover these angles. markets.getPriceJumps finds sharp probability moves inside one market’s candle history, analytics.getChanges reports platform-wide percentage momentum, and analytics.getDeltas returns a per-bucket activity series you can render as a sparkline.

When to use this

  • Movers rails and “biggest moves today” widgets.
  • Alerting when a market’s implied probability swings past a threshold.
  • Dashboard headline numbers that show whether the platform is heating up or cooling down.
  • Sparklines that summarize recent platform activity at a glance.

Sharp price moves in a market

Use GET /v1/polymarket/market/price-jumps to detect candles where a market’s probability moved more than a threshold. Pass either condition_id or market_slug (one is required). The resolution is the candle size in minutes ("1", "5", "15", "30", "60", "240", default "15"), min_change_pct is the minimum move to report (default 10.0), and lookback is how many candles back to scan (default 1440, max 2500).
const { data: jumps } = await client.markets.getPriceJumps({
  condition_id: "0xCONDITION",
  resolution: "15",
  min_change_pct: 10,
  lookback: 1440,
});
Each PriceJump row describes one move: from and to are the start and end timestamps (epoch seconds), price_before and price_after are the probabilities at each end, change_pct is the magnitude of the move, direction indicates whether it rose or fell, and volume and trades_count quantify how much trading drove it. The condition_id echoes the market so you can key the row in a list.

Platform-wide momentum

Use GET /v1/polymarket/analytics/changes for a single snapshot of how the whole platform is trending. The only parameter is timeframe ("1h", "24h", "7d", "30d", "1mo", "1y", default "24h").
const { data: changes } = await client.analytics.getChanges({
  timeframe: "24h",
});
The AnalyticsMetricPctChange response returns percentage changes for the headline platform metrics: volume_usd, unique_traders, txn_count, fees_usd, and related fields. Each value is the percentage move over the chosen timeframe, so positive numbers mean the platform is heating up. These map directly onto dashboard headline tiles.

Per-bucket activity sparkline

Use GET /v1/polymarket/analytics/deltas for a time series of platform activity you can plot as a sparkline. The resolution controls bucket size ("60", "240", "D", "W", "M", default "60"), and from, to, and count_back bound the window.
const { data: deltas } = await client.analytics.getDeltas({
  resolution: "60",
  count_back: 168,
});
Each AnalyticsTimeBucketRow uses compact keys to keep the series small. They expand as follows:
KeyMeaning
tBucket timestamp (epoch seconds)
vVolume in USD for the bucket
tcTransaction count
utUnique traders
fFees in USD
bvBuy volume in USD
svSell volume in USD
Plot v for an activity sparkline, or compare bv against sv to show whether buying or selling pressure dominated each bucket.

Push-based movers

The endpoints above are pull-based: you call them to find what already moved. For push-based movers that arrive as they happen, subscribe to the websocket spike alerts instead. The relevant alerts are price_spike for sharp probability moves, market_volume_spike and event_volume_spike for surges in trading volume, and position_volume_spike for individual positions. Use REST to seed a movers list, then keep it live with the spike alerts.
Last modified on June 13, 2026