Daily competitor price tracker for ecommerce SKUs

Scrape competitor prices every morning, log a price history in Google Sheets, and get a Slack alert the moment a tracked SKU jumps, drops, or goes out of stock.

Deterministic Code
ApifyGoogle SheetsSlackOperationsMarketingResearch & MonitoringNotifications & Alerts

Build me a code-based workflow that tracks competitor ecommerce prices every morning and alerts my team in Slack when something material changes. The workflow should run on a daily cron, default 7am in the org timezone, and the schedule should be easy to edit.

Top-level config the workflow should expose as inputs: the Google Sheets spreadsheet ID, the name of the SKU config tab (default "SKUs"), the name of the price history tab (default "History"), the Apify Actor ID to use for scraping (for example apify~amazon-product-scraper or forward_workstation~competitor-price-tracker), the percent change threshold for alerts (default 5), and the Slack channel ID where alerts should post. Surface these as named inputs so the same workflow can be cloned per merchandising team without code edits.

Step 1: Read the SKU list from Google Sheets using the Get Values operation against the config tab. Each row should have at minimum a SKU name and a product URL, plus optional columns like brand or category. Parse this into the working list for the run.

Step 2: Run the Apify Actor using the Run Actor Synchronously and Get Dataset Items operation, passing the SKU URLs as the Actor's input (the exact input shape depends on the Actor, so build the input object based on the configured Actor ID). For each item in the returned dataset, capture today's price, currency, stock status (in stock vs out of stock), and Buy Box owner or seller name where the Actor provides it. Tolerate Actors that return partial fields by defaulting missing values to null.

Step 3: Read the previous snapshot from the price history tab using Get Values. For each SKU, find the most recent prior row and compute the delta: absolute price change, percent change, and whether stock status flipped. If there is no prior row for a SKU, treat it as a new SKU with no delta.

Step 4: Append today's snapshot to the history tab using the Append Values operation. One row per SKU with columns: run date, SKU name, product URL, price, currency, stock status, Buy Box owner, percent change vs previous run. This builds the long-running price history.

Step 5: For each SKU whose absolute percent change exceeds the configured threshold OR whose stock status flipped between in stock and out of stock, send a Slack alert using the Send a Message operation to the configured channel. The message should include the SKU name, old price and new price with currency, the percent change with an up or down arrow, the new stock status, and a link to the product listing. Group multiple alerts into a single message with one line per SKU rather than spamming the channel with one message per change.

If no SKUs cross the threshold and no stock flips happen, do not post anything to Slack. The history sheet should still be updated so the price-over-time chart keeps accumulating.

Error handling: if the Apify run fails or returns zero items, post a short failure message to the Slack channel so the team knows the tracker did not run cleanly, and skip the sheet append for that run.

Additional information

What does this prompt do?
  • Pulls today's price, stock status, and Buy Box owner for every competitor SKU your team is monitoring across Amazon, Shopify, and eBay.
  • Keeps a running price history in a Google Sheet so you can see how each listing has moved over time.
  • Pings a Slack channel the moment a price moves more than your threshold or a SKU flips between in stock and out of stock.
  • Reads the SKU list from a config tab in the same spreadsheet so merchandising can add or remove products without touching the workflow.
What do I need to use this?
  • An Apify account with an API token (free plan works to start, paid recommended for larger SKU lists).
  • A Google account with access to a spreadsheet that has a SKU list tab and a price history tab.
  • A Slack workspace and the channel where you want price alerts posted.
  • The product URLs you want to track (Amazon, Shopify storefronts, or eBay listings).
How can I customize it?
  • Change the alert threshold (default is a 5 percent price move) to be more or less sensitive to small changes.
  • Pick which Slack channel gets the alerts, or route different product lines to different channels.
  • Adjust the run time, for example 6am local time before the merchandising standup, or twice a day during peak season.
  • Add columns to the history sheet for extra fields like seller rating, shipping cost, or coupon presence.

Frequently asked questions

Which stores can this monitor?
Anything Apify has an Actor for. Amazon, Shopify storefronts, and eBay are the most common, but the same workflow pattern works for Walmart, Target, Etsy, AliExpress, and most other major retailers.
Do I need to be a developer to set this up?
No. You connect Apify, Google Sheets, and Slack once, paste in the URLs you want tracked, and the workflow runs every morning on its own.
How is the price history stored?
Every run appends one row per SKU to a Google Sheet you own, so you get a clean dated history you can chart, pivot, or export at any time.
What counts as an alert worthy change?
By default, any price move larger than 5 percent up or down, plus any change in stock status. You can raise or lower the threshold to match how noisy your category is.
Will this work for hundreds of SKUs?
Yes. The list is read fresh from the config tab on every run, so you can scale up by adding URLs. Apify costs scale with the number of pages scraped, so very large lists may need a paid Apify plan.

Stop refreshing competitor listings by hand.

Connect Apify, Google Sheets, and Slack once, and Geni will track every SKU you care about and ping your team the second prices move.