๐Ÿ“ˆ Price History Builder - Volatility, Promo Cadence & Bands avatar

๐Ÿ“ˆ Price History Builder - Volatility, Promo Cadence & Bands

Pricing

Pay per event

Go to Apify Store
๐Ÿ“ˆ Price History Builder - Volatility, Promo Cadence & Bands

๐Ÿ“ˆ Price History Builder - Volatility, Promo Cadence & Bands

๐Ÿ“ˆ Accumulate per-product price history across scheduled runs into analytics nobody else offers. โœ… Volatility (stdev/CV), promo cadence (frequency, gap, discount depth), price bands with today's percentile, a next-drop estimate, and trend. Scrape URLs or feed a price list โ€” testable offline.

Pricing

Pay per event

Rating

0.0

(0)

Developer

mohamed alaya

mohamed alaya

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 days ago

Last modified

Categories

Share

Price History Builder

Every price monitor tells you the price changed. This one remembers every price it has ever seen for a product and turns that history into analytics nobody else offers: volatility, promo cadence, price bands, a next-drop estimate, and trend.

It is stateful by design โ€” the value it delivers builds up run over run. Run it once and you get a snapshot. Run it on a schedule for a few weeks and you get a real picture of how a product actually gets priced.

Honesty first: what this actor can and cannot know

  • History only exists from the first run onward. This actor cannot see prices from before you started tracking a product. A product's first-ever run always reports isFirstRun: true with a one-point series โ€” volatility, bands and cadence only become meaningful after several runs, and cadence needs multiple discount cycles before it means anything at all.
  • The next-drop estimate is extrapolation, not a promise. It projects a window from the gaps between past discount events. A shop can change its pricing strategy at any time without warning. Every prediction row says so explicitly in its note field, and the actor refuses to predict at all until minEventsForPrediction discount events have been observed.

Two ways to feed it prices

  1. Scrape URLs. Put product pages in products. The price is auto-detected from JSON-LD, microdata/OpenGraph, common price containers, or a text scan โ€” the same selector-free detection used by Price Drop Monitor. Supply priceSelector per item to override it.
  2. Supply a price list. Put {"key":"sku-123","price":19.99} objects in prices โ€” your own feed, a spreadsheet export, a previous scrape, anything. This needs no network access at all, which is what makes the analytics testable fully offline and reusable as a pure analytics step in any pipeline that already has prices.

You can mix both in the same run; they accumulate into the same per-key series in the named state store (stateStoreName).

What gets computed, per product, every run

FieldWhat it means
volatilitySample stdev and coefficient of variation (CV) of the whole series โ€” CV is scale-free so a $50 item and a $5,000 item are comparable.
promoCadenceDetected discount events (price โ‰ฅ promoDropThresholdPercent below a rolling baseline), how often they happen, average gap in days, typical discount depth, longest gap.
priceBandsmin / max / median of the series, and currentPercentile โ€” is today's price actually good, or is it near the historical ceiling?
nextDropEstimateA predicted window derived from the observed cadence, with a confidence (LOW/MEDIUM/HIGH) and an explicit note that it is extrapolation.
trendRISING / FALLING / STABLE (a trendFlatBandPercent deadband absorbs noise) plus a linear-regression slope.
alerttrue when priceBands.currentPercentile <= alertPercentile โ€” today's price is at or below the historical Nth percentile.

Input

{
"products": [
"https://shop.example/product/123"
],
"prices": [
{ "key": "own-feed-sku-9", "price": 44.5, "currency": "USD" }
],
"maxHistory": 90,
"promoDropThresholdPercent": 8,
"alertPercentile": 25
}

Output

Per product: key, price, checkedAt, isFirstRun, historyLength, priceHistory (the capped series), volatility, priceBands, promoCadence, nextDropEstimate, trend, alert.

Who uses it

Buyers deciding whether today's price is actually a deal ยท dropshippers timing restocks around a competitor's known sale cadence ยท deal-alert sites that want a statistically grounded "buy now" signal instead of a gut call ยท anyone who has ever screenshotted a price history chart by hand.