WooCommerce Price Tracker avatar

WooCommerce Price Tracker

Pricing

from $3.00 / 1,000 price records

Go to Apify Store
WooCommerce Price Tracker

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

Harsh

Maintained by Community

Actor 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/products with automatic pagination
  • Historical snapshots — every record includes scrapedAt, regularPrice, salePrice, and onSale
  • 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

FieldTypeRequiredDefaultDescription
storeUrlsstring[]YesWooCommerce store base URLs
maxProductsPerStoreintegerNo100Max price snapshots per store
perPageintegerNo100Products per API page (max 100)
maxRequestRetriesintegerNo3HTTP retry count
requestDelayMsintegerNo500Delay between same-domain requests (ms)
maxRequestsPerCrawlintegerNo10000Safety 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:

FieldDescription
productIdWooCommerce product ID
titleProduct name
skuStock keeping unit
priceCurrent price
regularPriceRegular price
salePriceSale price
onSaleWhether the product is on sale
currencyCurrency code (e.g. USD)
permalinkProduct page URL
storeUrlSource store URL
scrapedAtISO timestamp of when the price was captured
errorError 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

  1. For each store URL, the Actor normalizes the base URL.
  2. It requests page 1 from the WooCommerce Store API (per_page configurable).
  3. Products are converted into price snapshot records and pushed to the dataset.
  4. If more products are available, the next page is enqueued until maxProductsPerStore is reached.
  5. 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 install
npm test
npm run lint
npm run build
apify run

Create storage/key_value_stores/default/INPUT.json with your test input, or use the prefill values in the input schema.

Deploy

apify login
apify 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.