WooCommerce Product Monitor: Price and Stock Alerts avatar

WooCommerce Product Monitor: Price and Stock Alerts

Pricing

from $0.50 / 1,000 product variant returneds

Go to Apify Store
WooCommerce Product Monitor: Price and Stock Alerts

WooCommerce Product Monitor: Price and Stock Alerts

WooCommerce store scraper and price monitor: export a WooCommerce store catalog to Google Sheets, or watch a supplier store for dropshipping. One row per variant: price, regular/sale price, stock, then only price drops, back in stock alerts, new, removed products. Alerts to Discord, Slack, Telegram.

Pricing

from $0.50 / 1,000 product variant returneds

Rating

0.0

(0)

Developer

Adriana Voss

Adriana Voss

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

WooCommerce's own public Store API (wc/store/v1) — the endpoint every WooCommerce storefront already uses to render its own catalog and cart — read and turned into one row per variant: price, regular/sale price, stock and a direct product link. Turn on monitoring and every later run returns only what changed since the last one: new products, price drops, price rises, back in stock, out of stock, or removed — with alerts to Discord, Slack or Telegram. No key, no login, no proxy by default.

Who it's for

Anyone who needs to watch a WooCommerce competitor's or supplier's catalog without checking it by hand: dropshippers tracking a supplier's prices and stock, brands watching a reseller's pricing, or a sourcing team that wants a Slack ping the moment a product goes back in stock. WooCommerce runs a large share of the web's independent online stores (Shopify's own equivalent, shopify-product-monitor, covers the other half); this actor is the same monitoring pattern applied to WooCommerce's Store API instead of Shopify's /products.json.

Monitoring: price drops, back in stock, new and removed

Turn on "Only return variants that changed since the last run" and this actor becomes a watchlist. The first run reads the whole catalog and remembers every variant's price and stock in a named key-value store; every later run compares against that memory and returns only the variants that are new, cheaper, dearer, back in stock, out of stock, or removed from the store — pick which of those six count with "Alert me on". Unchanged variants are dropped before billing, so a quiet run (nothing changed) costs only the per-run start fee, not a cent per variant. Schedule it hourly or daily as an Apify Task to get a running price-and-stock feed for a store you don't control.

A removed variant is only ever reported once a run reads the whole catalog successfully (no page failed, no "most products per store" cap was hit) — a run that stopped early never claims something still on the shelf was removed. A variant not seen for 30 days is quietly forgotten rather than kept as a permanent tombstone.

Send alerts to Discord, Slack or Telegram

Paste a webhook URL into "Send alerts to" and every changed variant is posted there the moment it's billed: product photo, name, variant, price (with the previous price for a move), stock, and a link, tagged NEW / PRICE DROP -12% / BACK IN STOCK / REMOVED. Discord and Slack take their channel webhook URL directly; Telegram takes https://api.telegram.org/bot<token>/sendMessage?chat_id=<chat id>; any other URL gets the same alert as JSON, for n8n, Make, Zapier or a bot of your own. Messages are always free and a delivery failure never fails the run — the row's notifyErrors field says why, if anything.

Why a store might not respond

Not every WooCommerce store leaves its Store API reachable. Some installs disable it outright; others sit behind a CDN or WAF that blocks requests that don't look like a normal browser tab, while the same store's un-proxied path works fine. Measured live during this build: the same store's www. alias can answer a Cloudflare challenge on the identical path its bare domain serves as clean JSON. When that happens the row comes back as "found": false with a status of STORE_API_DISABLED (a real WordPress site, but WooCommerce's Store API isn't available) or BLOCKED (a firewall or CDN refused the request) — not a bug, and never charged. This actor does not retry a blocked store through a proxy by default; if it matters for your store, open an Apify support ticket or try again later, since these firewalls are often intermittent.

Example runs

Each input below needs no key or login and returns real rows on its own:

  • One live store, default settings — {"domains": ["porterandyork.com"]}. The Console's prefilled "Start" button runs exactly this. Returns every variant currently in the catalog.
  • Watchlist mode — {"domains": ["porterandyork.com"], "deltaMode": true}. The first run banks a baseline for free comparison next time; every run after that returns only variants that are new, cheaper, dearer, back in stock, out of stock or removed.
  • A capped sample — {"domains": ["porterandyork.com"], "maxProductsPerStore": 20}. Reads only the first 20 products (and their variants) for a cheap, quick check of a new store before committing to a full read.

How to use

  1. In the Apify Console. Open the actor page and click Start — the domains field is already pre-filled with a working example. Results land in the run's dataset as soon as each item is found.
  2. Via the API. Call it directly with a POST request — no Console needed once you have an API token:
    curl "https://api.apify.com/v2/acts/accountable_eel~woocommerce-product-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
    -X POST \
    -H "Content-Type: application/json" \
    -d '{"domains":["porterandyork.com"]}'
  3. On a schedule. Save this actor as an Apify Task with the input you want, then add a Schedule (hourly, daily, weekly) so it runs on its own — no server of your own required.

Input

{
"domains": [
"porterandyork.com"
]
}

One store per line: a bare domain such as example.com. Only public WooCommerce stores whose Store API is reachable work; no login and no API key. Accepted formats: porterandyork.com, example-shop.com.

{
"items": ["<identifier-1>", "<identifier-2>"],
"maxConcurrency": 5
}

items is a list of WooCommerce store domains. One dataset row is returned per item; rows with "found": false are never charged.

Output

One row per item, for example:

queryfoundstatusdomainproductCounttotalVariantsvariantCounttruncatedtruncatedBymonitorStatusnewCountpriceDropCountpriceRiseCountbackInStockCountoutOfStockCountremovedCountvariantsproductIdproductNamevariantIdvariantNameskupriceregularPricesalePricecurrencyavailablestockQuantitypermalinkimageUrlscrapedAt
porterandyork.comtrueOK<variants returned (billed)><all variants (grouped mode)><variant (size, colour)>1970-01-01T00:00:00.000Z

A miss comes back as a row with "found": false and is never charged.

Pricing

  • Product variant returned: $1 per 1,000 variants

Plus a $0.0075 start fee per run. Each event above is billed independently, only when it actually returns data — misses (found:false) are never charged.

Use it from Clay, n8n, Make, or an AI agent

This actor runs synchronously over plain HTTP — call it directly from a script, a workflow tool, or an AI agent, no Apify Console needed once you have an API token.

curl "https://api.apify.com/v2/acts/accountable_eel~woocommerce-product-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>" \
-X POST \
-H "Content-Type: application/json" \
-d '{"domains":["porterandyork.com"]}'

n8n. Add an HTTP Request node: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~woocommerce-product-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body Content Type JSON, JSON Body {"domains":["porterandyork.com"]} (swap in an expression from an earlier node for a real value).

Clay. Add an "HTTP API" column: Method POST, URL https://api.apify.com/v2/acts/accountable_eel~woocommerce-product-monitor/run-sync-get-dataset-items?token=<YOUR_TOKEN>, Body {"domains":["{{store}}"]}, mapping the row's store into the domains array.

MCP. In Claude, Cursor, or any MCP client with the Apify MCP server, ask for "woocommerce product monitor: price and stock alerts" — the agent will find and run this actor.