WooCommerce Price Tracker
Pricing
from $3.00 / 1,000 price records
WooCommerce Price Tracker
Track WooCommerce product prices across multiple stores via the Store API. Returns historical price snapshots with regularPrice, salePrice, onSale, and scrapedAt timestamps.
Pricing
from $3.00 / 1,000 price records
Rating
0.0
(0)
Developer
Harsh
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 days ago
Last modified
Categories
Share
Track product prices across multiple WooCommerce stores and export timestamped price snapshots for historical monitoring, competitor analysis, and alerting workflows.
This Actor uses the public WooCommerce Store API (/wp-json/wc/store/v1/products) with pagination. Each run produces dataset records suitable for comparing prices over time when scheduled regularly.
Features
- Multi-store tracking — monitor prices from several WooCommerce stores in one run
- Store API — uses
/wp-json/wc/store/v1/productswith automatic pagination - Historical snapshots — every record includes
scrapedAt,regularPrice,salePrice, andonSale - Retries & rate limiting — configurable request retries and per-domain delay
- Error handling — failed stores produce error records instead of crashing the run
- Dataset export — results are saved to the default Apify dataset
Input
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
storeUrls | string[] | Yes | — | WooCommerce store base URLs |
maxProductsPerStore | integer | No | 100 | Max price snapshots per store |
perPage | integer | No | 100 | Products per API page (max 100) |
maxRequestRetries | integer | No | 3 | HTTP retry count |
requestDelayMs | integer | No | 500 | Delay between same-domain requests (ms) |
maxRequestsPerCrawl | integer | No | 10000 | Safety cap on total requests |
Example input
{"storeUrls": ["https://woocommerce.com"],"maxProductsPerStore": 25,"perPage": 25,"requestDelayMs": 500}
See also ./examples/input.json.
Output
Each dataset item is a price snapshot:
| Field | Description |
|---|---|
productId | WooCommerce product ID |
title | Product name |
sku | Stock keeping unit |
price | Current price |
regularPrice | Regular price |
salePrice | Sale price |
onSale | Whether the product is on sale |
currency | Currency code (e.g. USD) |
permalink | Product page URL |
storeUrl | Source store URL |
scrapedAt | ISO timestamp of when the price was captured |
error | Error message when tracking failed |
Example output
{"productId": 123,"title": "Sample Product","sku": "SKU-001","price": "29.99","regularPrice": "39.99","salePrice": "29.99","onSale": true,"currency": "USD","permalink": "https://example.com/product/sample-product/","storeUrl": "https://example.com","scrapedAt": "2026-07-05T12:00:00.000Z","error": null}
See also ./examples/output.json.
How it works
- For each store URL, the Actor normalizes the base URL.
- It requests page 1 from the WooCommerce Store API (
per_pageconfigurable). - Products are converted into price snapshot records and pushed to the dataset.
- If more products are available, the next page is enqueued until
maxProductsPerStoreis reached. - Failed stores on the first page produce a single error record with
scrapedAt.
Scheduling for price history
Run this Actor on a schedule (e.g. daily) and append dataset results to your own database or spreadsheet. Compare scrapedAt snapshots by productId + storeUrl to detect price changes.
Local development
npm installnpm testnpm run lintnpm run buildapify run
Create storage/key_value_stores/default/INPUT.json with your test input, or use the prefill values in the input schema.
Deploy
apify loginapify push
Notes
- The Store API must be publicly accessible on the target store.
- Some stores disable or restrict public APIs; those stores will return error records.
- Respect each store's terms of service and robots.txt when scraping.