Universal Price & Stock Monitor avatar

Universal Price & Stock Monitor

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Universal Price & Stock Monitor

Universal Price & Stock Monitor

Monitor public product pages for price and stock changes. Auto-detect JSON-LD and common HTML, retain history, calculate price movements, and send webhook alerts—no site-specific setup required.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Sinan Kuşdoğan

Sinan Kuşdoğan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Scan public product pages, return structured price and availability data, compare it with earlier runs, and optionally send changes to an HTTPS webhook.

Quick start

Use the prefilled public Books to Scrape URL or provide up to 200 product URLs. Automatic discovery checks Product JSON-LD first and then common HTML price, currency, availability, and product-name patterns. Add priceSelector or stockSelector only for a site that needs an override.

Example input:

{
"startUrls": [
{
"url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"
}
],
"maxConcurrency": 5,
"maxRequestsPerMinute": 120,
"maxRequestRetries": 3,
"requestHandlerTimeoutSecs": 45,
"proxyConfiguration": {
"useApifyProxy": false
}
}

Each dataset row includes the URL, product name, raw and numeric price, currency, availability, stock flag, previous price, percentage change, change type, HTTP status, timestamp, and extraction method. The OUTPUT key-value-store record contains the run summary.

Example result:

{
"url": "https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html",
"productName": "A Light in the Attic",
"price": "£51.77",
"priceValue": 51.77,
"currency": "GBP",
"availability": "In stock (22 available)",
"inStock": true,
"previousPrice": "£51.77",
"priceChangePercentage": 0,
"changeType": "unchanged",
"extractionMethod": "html-fallback"
}

History and change detection

The Actor stores snapshots in the named key-value store configured by stateStoreName. Use the same name on later runs to compare a product with its previous snapshot. historyLimit bounds the number of stored snapshots per product.

The first observation is marked first-seen. Later observations are unchanged, price, availability, or price-and-availability.

For hands-off monitoring, save a task with a stable stateStoreName, then attach an Apify schedule. Every scheduled run compares the new snapshot with the history retained by that named store.

Webhook

Set an HTTPS webhookUrl to receive completed-run JSON when a stored product changes. webhookOnEveryRun also sends unchanged runs. If webhookSecret is present it is sent as a bearer token. Delivery failures are reported in the run summary and do not discard dataset results.

Crawler controls

  • maxRequestsPerMinute enforces a global request rate.
  • maxRequestRetries controls transient-failure retries.
  • requestHandlerTimeoutSecs bounds per-page handling time.
  • proxyConfiguration supports Apify or custom proxies.
  • The Actor only requests the URLs supplied in the input and accepts at most 200 per run.

Respect the target site's terms, robots policy, and applicable law. This Actor is designed for public, non-PII product information and does not bypass authentication.

API example

curl -X POST "https://api.apify.com/v2/acts/YOUR_ACTOR_ID/runs?token=YOUR_TOKEN&waitForFinish=120" \
-H "Content-Type: application/json" \
-d '{"startUrls":[{"url":"https://books.toscrape.com/catalogue/a-light-in-the-attic_1000/index.html"}]}'

Read product rows from the run's default dataset and the summary from the default key-value store record named OUTPUT.

Billing behavior

The recommended Store configuration is pay per event with one charge for each successfully written dataset item. Failed URLs are reported in OUTPUT and do not create a billable product result. A small synthetic Actor-start charge can cover the fixed cost of short runs while keeping buyer cost predictable.

Limitations

This MVP fetches server-rendered HTML. JavaScript-only pricing may require a future browser-based crawler. Scheduled monitoring is configured through Apify schedules; direct Telegram, Slack, and email adapters remain roadmap items, while the generic webhook is available now.