E-commerce Price & Stock Monitor
Pricing
from $3.50 / 1,000 product extracteds
E-commerce Price & Stock Monitor
Extract prices and stock status from public product URLs, CSV/JSON, or sitemaps. Export title, SKU, GTIN, currency, availability, and confidence. Reuse a monitor ID in scheduled runs to detect price and stock changes.
Pricing
from $3.50 / 1,000 product extracteds
Rating
0.0
(0)
Developer
AFK Digital
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a month ago
Last modified
Categories
Security
Limited permissionsShare
Apify Actor for extracting product fields from publicly accessible product pages. Extraction is deterministic and local to the Actor: JSON-LD/schema.org first, embedded JSON second, platform hints third, then standard product metadata and basic page title fallback. It does not use an LLM.
Features
- Single URL, URL list, inline CSV, JSON, or sitemap URL input, including sitemap indexes.
- Sitemap discovery prioritizes product-named child sitemaps, filters Shopify product paths, and omits sitemap pages without product fields. A sitemap with no recognizable products can return an empty dataset; use direct product URLs for unusual catalogs.
- Product title, SKU, GTIN, price, compare price where exposed, currency, stock state/text, brand, image, timestamp, source/platform and confidence.
- Optional cross-run monitoring using
monitorId; re-use the same value in scheduled task runs to receive previous/current price and availability changes. - Per-domain delay, bounded concurrency, retries, Apify Proxy opt-in, and
robots.txthonoring. - Shopify, WooCommerce, Magento, BigCommerce hints plus generic structured-data and metadata parsing.
- Dataset rows are JSON; request failures also produce rows with
errorand timestamp.
Run locally
Requires Node.js 20+ and npm. Install dependencies with npm install, then place input JSON in the Apify local INPUT store or run on Apify. npm test executes offline parser tests. npm run benchmark parses a fixed JSON-LD fixture and excludes network time.
{"csv": "url\nhttps://public-shop.example/products/item-a","maxPages": 50,"concurrency": 3,"delayPerDomainSecs": 2,"useProxy": false,"normalizeCurrency": true,"monitorId": "weekly-price-watch"}
Other accepted shapes:
{ "url": "https://public-shop.example/products/item-a" }
{ "urls": ["https://one.example/p/1", "https://two.example/p/2"] }
{ "json": "[{\"url\":\"https://public-shop.example/p/1\"}]" }
{ "sitemapUrl": "https://public-shop.example/sitemap.xml", "maxPages": 100 }
The inline CSV parser expects a header row with a url column, or URLs in the first column. JSON accepts an array of objects with url or productUrl fields. Sitemap mode reads sitemap indexes and product URL sets, caps product URLs at maxPages, and limits sitemap documents to 50.
Dataset fields
Core fields are defined in .actor/dataset_schema.json; .actor/output_schema.json links the dataset and run summary. A monitoring run adds previous_price, current_price, change_percent, previous_availability, current_availability, availability_changed, and change_timestamp. Missing fields are omitted or null; in_stock: null means the page did not expose a clear availability signal. extraction_confidence is a heuristic and is not a calibrated probability.
Monitoring isolation
Monitoring history is written to an Apify Key-Value Store scoped by the initiating Apify user and a SHA-256-derived monitorId; this avoids one customer sharing state with another. Set monitorId to the same value on each recurring run. If the runtime does not expose an initiating user ID, the run still succeeds and emits ordinary extraction rows, but it will not persist monitoring history. The first check initializes history and has no previous-value fields.
Safety and limitations
- Input must be public HTTP(S); localhost, private/reserved IP ranges, and domains resolving to private addresses are blocked before requests are queued. Redirect following is disabled; submit the final public product URL directly.
- The Actor honors robots.txt, uses a configurable per-domain pause, and does not bypass login, CAPTCHA, paywalls, or access controls.
- Use only URLs and data you are authorized to access; comply with each site's terms and applicable law. Stop or reduce runs when a site signals blocking or requests less traffic.
- Browser-rendered pages, anti-bot pages, unusual encodings and heavily customized themes may return incomplete data. This release deliberately does not launch a browser or bypass access restrictions.
- The currency toggle infers an ISO code from common currency symbols only when structured data omits currency. It does not perform foreign-exchange conversion.
- This MVP takes URL input or inline CSV/JSON text; it does not accept arbitrary uploaded files as input.
- Adapters are deterministic hints, not guarantees. Store theme changes can affect extraction. Review confidence and error fields.
Pricing
This Actor is published on Apify Store with pay-per-event pricing. A successful product page normally triggers one product-extracted event ($0.0035) and one page-processed event ($0.0010). When monitoring is enabled, a successful recurring comparison also triggers monitoring-check ($0.0005). Actor Start is $0.00005 per event, with event count based on memory. Platform usage is included. The Store Pricing tab shows the current rates and details.
Failed requests do not incur product-extracted charges. Review the event cost cap before running large lists; optional proxy usage can affect results and resource consumption.
Support and data retention
Open an issue on this Actor's Apify page with a public example URL, expected field and redacted output. Do not include credentials or private data. Input URLs, results and errors are stored in Apify run storage; monitoring history is stored in a named Apify key-value store keyed by initiating user and monitoring ID. These records persist until deleted or expired under the applicable Apify storage settings.