Product Price & Stock Monitor — Restock + Drop Alerts
Pricing
from $2.50 / 1,000 product checkeds
Product Price & Stock Monitor — Restock + Drop Alerts
Never miss a price drop or a restock again. It reads each store's own JSON-LD, Shopify or WooCommerce data instead of fragile HTML selectors, and fires Slack or Discord alerts the moment something moves. Returns price, sale price, currency, stock status and % change per check. Schedule and forget.
Pricing
from $2.50 / 1,000 product checkeds
Rating
5.0
(2)
Developer
Dami's Studio
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
0
Monthly active users
a day ago
Last modified
Categories
Share
Structured Product Price & Stock Monitor (JSON-LD / Shopify)
Track product price and stock by reading each store's own JSON-LD / Shopify / WooCommerce structured data — then get price-drop and restock alerts on Slack or Discord. No API key, no brittle HTML selectors.
What it does
This actor monitors product price and stock availability across online stores. Instead of guessing at the page layout with HTML selectors that break on every redesign, it reads the structured data the store already publishes: JSON-LD Product/Offer markup, Shopify product JSON, and WooCommerce/Schema.org data.
On each run it:
- Checks every product URL you give it and pulls the current price, sale price, stock status, and title from the page's own structured data.
- Compares against the previous run and emits discrete events:
change-detected(price or stock changed),restock-detected, andsale-started. - Sends Slack or Discord webhook alerts when a product comes back in stock or drops in price past a threshold you set (
priceDropThresholdPct). - Writes a clean, machine-readable price/stock record to the dataset for every product checked.
Because the data comes from the store's own published markup, the price and stock values are the ones the store itself reports — not a number scraped out of arbitrary HTML that shifts when the theme changes.
Honest limitation: this works only on stores that publish structured data (JSON-LD, Shopify, or WooCommerce). Most major ecommerce platforms do, but it is not a universal any-site scraper. If a page has no structured data, the actor records a no-structured-data result for it instead of inventing a price.
Who it's for
- Ecommerce sellers and dropshippers watching competitor and supplier pages for price and stock moves.
- Repricing and arbitrage sourcers who need accurate price + availability to make sourcing and repricing decisions.
- Developers building price-comparison tools or AI shopping agents who want a stable, structured price/stock feed instead of maintaining their own scraper.
Quick start
Run it as a monitor
Paste a list of product URLs, pick what to track, and (optionally) add a webhook. Minimal input:
{"products": [{ "url": "https://example-store.com/products/wireless-headphones" }],"trackPrice": true,"trackStock": true,"notifyOnPriceDrop": true,"notifyOnRestock": true,"priceDropThresholdPct": 5,"webhookUrl": "https://hooks.slack.com/services/XXX/YYY/ZZZ"}
Run it once to seed a baseline, then schedule it (Apify Schedules) to run on whatever cadence you need. With onlyNewSinceLastRun enabled, each run reports only what changed since the last one.
Connect it to an AI agent (MCP)
The actor is exposed over the Apify MCP server using streamable HTTP, so Claude, Cursor, VS Code, and any MCP-compatible client can call it as a tool.
Endpoint:
https://mcp.apify.com/?actors=dami_studio/structured-product-price-stock-monitor
Authenticate with OAuth (your client opens a browser the first time) or with a Bearer <APIFY_TOKEN> header.
Claude Desktop / Cursor config (claude_desktop_config.json or .cursor/mcp.json):
{"mcpServers": {"price-stock-monitor": {"url": "https://mcp.apify.com/?actors=dami_studio/structured-product-price-stock-monitor","headers": {"Authorization": "Bearer <APIFY_TOKEN>"}}}}
Replace <APIFY_TOKEN> with your Apify API token (Apify Console → Settings → Integrations). Once connected, the agent can ask for the current price and stock of any product URL and get back structured JSON.
Input
- products — list of products to monitor, each with a product
url. - trackPrice — track the listed price.
- trackSalePrice — track the sale/discount price separately.
- trackStock — track in-stock / out-of-stock availability.
- trackTitle — track the product title (catches renames and relisting).
- priceDropThresholdPct — minimum percent drop before a price-drop alert fires (
notifyOnPriceDrop). - notifyOnPriceDrop — send a webhook alert on a qualifying price drop.
- notifyOnRestock — send a webhook alert when a product is back in stock.
- onlyNewSinceLastRun — only report products that changed since the previous run.
- webhookUrl — Slack or Discord incoming-webhook URL for alerts.
- proxyConfiguration — Apify proxy settings for the requests.
Output
Every checked product produces one structured record in the dataset, plus an event when something changes. A result looks roughly like:
{"url": "https://example-store.com/products/wireless-headphones","title": "Wireless Headphones","price": 79.99,"salePrice": 59.99,"currency": "USD","inStock": true,"availability": "InStock","dataSource": "json-ld","event": "change-detected","previousPrice": 89.99,"priceChangePct": -11.11,"checkedAt": "2026-06-22T10:00:00Z"}
Events you may see on a record: change-detected (price or stock moved), restock-detected, sale-started, and no-structured-data (when a page publishes no usable markup). A price drop past your priceDropThresholdPct is a change-detected event with a negative priceChangePct; that threshold and notifyOnPriceDrop control whether you also get a webhook alert for it.
Example use cases
- Competitor price monitor with repricing alerts
- Shopify sale started / ended tracker
- Discord restock bot for a sneaker drop
- Structured product price feed for an AI agent
Pricing
$0.0025 per product checked — plus $0.003 per run start, $0.015 per change detected, $0.02 per restock, $0.015 per sale started, $0.05 per report generated and $0.001 when a page exposes no structured data. A 100-product run with no changes costs $0.253.
This actor is pay-per-event. You pay only for what runs:
| Event | Price (USD) | When it fires |
|---|---|---|
| Actor start | $0.003 | Once per run. |
| Product checked | $0.0025 | Per product URL read. |
| Change detected | $0.015 | Price or stock moved since the last run. |
| Restock detected | $0.02 | Out of stock → in stock. |
| Sale started | $0.015 | A sale price appeared. |
| Report generated | $0.05 | Once, when a run report is produced. |
| No structured data found | $0.001 | The page publishes no usable JSON-LD/Shopify/WooCommerce markup. |
Flat rates — no volume tiers and no plan gates. The change, restock and sale events only add cost when something actually moves, so a quiet watchlist stays at the per-product rate: 500 products checked daily with nothing changing is $1.253 per run.
Two details that keep idle runs cheap, both enforced in the engine rather than promised:
- A page with no usable structured data is not billed as a product check. The per-product charge fires only on a successful extraction; pages without markup fall under the separate
no-structured-dataevent above. - The report charge only fires on runs that produced a real product change or sent a webhook. Transient extraction flaps and idle scheduled runs never trigger it, and a change is billed once per product rather than once per change record.
FAQ
Does this work on any website?
No. It works on stores that publish structured data — JSON-LD Product/Offer markup, Shopify product JSON, or WooCommerce/Schema.org data. Most major ecommerce platforms publish this. Pages without it return a no-structured-data result instead of a fabricated price.
Why read structured data instead of scraping the HTML? The price and stock in a store's structured data are the values the store itself publishes (often the same feed it sends to Google Shopping). Reading them avoids selector-based scraping that breaks whenever the site's theme or HTML changes.
Do I need an API key for the stores I monitor? No. The actor reads each product page's public structured data. You only need an Apify account to run it.
Can I get a Slack or Discord alert when something restocks or drops in price?
Yes. Set webhookUrl to a Slack or Discord incoming webhook and enable notifyOnRestock and/or notifyOnPriceDrop. Use priceDropThresholdPct to avoid alerts on tiny changes.
Can an AI agent use this as a price/stock tool?
Yes. Connect it through the Apify MCP server at https://mcp.apify.com/?actors=dami_studio/structured-product-price-stock-monitor and call it from Claude, Cursor, or any MCP client to get structured price and stock data back.