Competitor Price, Stock, and Changelog Monitor
Last updated October 21, 2026
Watch competitor stores and SaaS sites and get only what changed since your last run: price, sale price, and stock changes per product, new and removed products, plan price changes on a pricing page, and new changelog entries. Shopify, WooCommerce, and any pricing page. Clay ready.
Features
- Watch competitor stores and SaaS sites and get only what changed since your last run: price, sale price, and stock changes per product, new and removed products, plan price changes on a pricing page, and new changelog entries.
- Shopify, WooCommerce, and any pricing page.
- Clay ready.
- Pay per event: Change row at $0.0025.
- Pay per event: Site check at $0.003.
- Pay per event: Snapshot row at $0.001.
Input
sitesarrayrequiredSites. Competitor sites to watch, one per line: a domain (deathwishcoffee.com, linear.app) or a URL. A URL with a path is read as that page: a pricing page, a changelog page, or a product page. Up to 200 sites per run.
site_typestringoptionalSite type. auto (default) reads the public Shopify product feed or the WooCommerce Store API when the site has one, and otherwise reads the pricing and changelog pages it links to.
watcharrayoptionalWhat to watch. Any of: prices, stock, products, plans, changelog. prices covers price and compare at price per variant; stock covers in stock and out of stock; products covers new and removed products; plans covers plan names and prices on a pricing page; changelog covers new changelog entries. Empty means all five.
product_urlsarrayoptionalProduct page URLs (optional). Product pages on a store that is not Shopify or WooCommerce. Each page is read for its schema.org Product price and availability.
pricing_urlsarrayoptionalPricing page URLs (optional). Pricing pages to read, when the site does not link to its pricing page from the homepage.
changelog_urlsarrayoptionalChangelog page URLs (optional). Changelog or release notes pages to read, when the site does not link to one from the homepage. An RSS or Atom feed the page declares is read first.
max_productsstringoptionalMax products per store. Products read from a store catalog per run, up to 5000. A store with more products than this is compared on the products read, and removed products are not reported for it.
min_price_change_pctstringoptionalMinimum price change (percent). Report a price change only when it is at least this many percent. 0 reports every change.
max_changes_per_sitestringoptionalMax change rows per site. Change rows returned per site per run, up to 1000. The rest are counted in changes_found.
include_snapshotstringoptionalInclude snapshot rows. true to also return one snapshot row per product variant, plan, and changelog entry on the first check of a site. Each snapshot row is billed as a snapshot row.
state_keystringoptionalState key. Names the saved state, so separate schedules keep separate baselines. Runs with the same state key and site compare against each other.
reset_statestringoptionalReset state. true to ignore the saved state and record a new baseline for every site.
max_charge_usdstringoptionalMaximum charge (USD). Optional. The run stops before it would charge more than this.
proxy_modestringoptionalProxy mode. auto (default) sends requests directly and moves a host to the Apify proxy default pool only when that host refuses. A reliability setting: proxy use adds nothing to your price.
Output schema
{
"row_type": "string",
"input_key": "string",
"site": "string",
"site_type": "string",
"change_type": "null",
"page_url": "null",
"item_id": "null",
"product_title": "null",
"variant_title": "null",
"sku": "null",
"plan_name": "null",
"changelog_title": "null",
"changelog_date": "null",
"field_changed": "null",
"old_value": "null",
"new_value": "null",
"old_price": "null",
"new_price": "null",
"price_change_pct": "null",
"currency": "null",
"in_stock": "null",
"products_tracked": "integer",
"variants_tracked": "integer",
"plans_tracked": "null",
"changelog_entries_tracked": "null",
"changes_found": "integer",
"previous_check_at": "string",
"pricing_url": "null",
"changelog_url": "null",
"row_status": "string",
"error_reason": "null",
"billable_events_json": "string",
"checked_at": "string"
}Pricing
Pay-per-event billing on the Apify platform. You are charged only when the actor returns a result. No subscription, no seat license.
Free-tier Apify accounts include monthly free compute. Upgrade for higher concurrency and volume.