Price Drop Tracker - Monitor Any E-commerce Product
Pricing
from $0.01 / 1,000 results
Price Drop Tracker - Monitor Any E-commerce Product
Actor for scraping data from a single web page. The URL of the web page is passed in via input, defined by the input schema. It uses the Axios client to get the HTML of the page & the Cheerio library to parse the data from it. The data are then stored in a dataset where you can easily access them.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
The Howlers
Maintained by CommunityActor stats
1
Bookmarked
8
Total users
3
Monthly active users
8 days ago
Last modified
Categories
Features
Share
Track prices on Amazon, Shopify, eBay, Walmart, Target, Etsy, WooCommerce, BigCommerce and other stores. Get alerts when a price drops or rises past your threshold or when stock status changes. Schedule daily runs to keep a price history.
How prices are read
- Shopify stores: the store's own product JSON (exact price, compare-at price and availability).
- Other pages: an HTTP fetch of the product page, read from the page's structured data (JSON-LD Product offers, product price meta tags, microdata) and platform markup (Amazon, eBay, WooCommerce, BigCommerce). Amazon pages are fetched through Apify residential proxies because Amazon shows a robot check to datacenter IPs.
- JavaScript-only pages: a browser opens the page and the same reader runs on the rendered page.
Every record has a status:
| Status | Meaning |
|---|---|
ok | A real price was read |
price_not_found | The page loaded but showed no price (for example "Currently unavailable") |
blocked | The site served a bot check instead of the product page |
not_found | The page returned HTTP 404 or 410 |
error | The page could not be fetched |
When no price could be read, currentPrice is null (never 0), a _notice explains why, the check is not saved to the price history, and it is not charged.
Quick start
{"productUrls": ["https://www.allbirds.com/products/mens-tree-runners","https://www.amazon.com/dp/0735211299"]}
Run it on a schedule with the same historyDatasetName to get previousPrice, priceChangePercent, priceHistory (last 90 checks) and alerts.
Demo Mode is off by default, so runs check real prices. Set demoMode to true to get labeled sample records (demo: true) that show the output format and charge nothing.
Input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
productUrls | array | - | Product page URLs to monitor |
historyDatasetName | string | "price-history" | Dataset this actor creates to keep price history between runs |
alertOnPriceChange | boolean | true | Alert when a price change passes the thresholds |
priceDropThreshold | integer | 5 | Alert on drops of at least this percent |
priceIncreaseThreshold | integer | 10 | Alert on increases of at least this percent |
alertOnStockChange | boolean | true | Alert when a product goes in or out of stock |
webhookUrl | string | - | POST alerts to this URL |
maxConcurrency | integer | 5 | Pages checked at the same time |
demoMode | boolean | false | Return labeled sample records instead of real prices |
Pricing
| Event | When it is charged | Price |
|---|---|---|
| Actor start | Once when the run starts, one event per GB of memory (minimum one). At the default 4 GB of memory a run starts at $0.0002 | $0.00005 per GB |
| Product Tracked | Per product URL whose real price was read (status: "ok"). Blocked, not-found and no-price pages are free | $0.02 |
| Price Alert Triggered | Per alert from a real price or stock change against the previous real price | $0.01 |
| Result | Each item written to the default dataset | $0.00001 |
Demo Mode charges none of the events above.
Troubleshooting
status: "blocked"
The store showed a bot check. Try again later; checks that were blocked are free.
status: "price_not_found"
The page has no visible price (out of stock with no offer, or a page that is not a single product). Use the product's own page URL.
No previousPrice
The first check of a URL has nothing to compare with. Keep the same historyDatasetName across runs.
Built by John Rippy | Actor Arsenal


