Shopify Store Scraper & Price Monitor avatar

Shopify Store Scraper & Price Monitor

Pricing

from $1.00 / 1,000 product scrapeds

Go to Apify Store
Shopify Store Scraper & Price Monitor

Shopify Store Scraper & Price Monitor

Scrape any Shopify store's products, variants, prices, discounts and stock, and get price drops, restocks, sell-outs, new and removed products on every scheduled run. No API key, no login.

Pricing

from $1.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

AIMindTeams

AIMindTeams

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Scrape any Shopify store's full catalog, then watch it for changes. Add store domains and get every product with:

  • Prices and price ranges, compare-at ("was") prices, discount % and on-sale flags
  • Stock status per variant (size, color ...), SKUs, weights and options
  • Vendor, product type, tags, images, handles and links, plus optional descriptions
  • Store details: name, currency and country

Turn on change tracking for scheduled monitoring and each run returns only what changed since the last one:

price drops · price increases · back in stock · sold out · new products · removed products

No API key, no login, no browser. Press Start to scrape three sample stores (Allbirds, Death Wish Coffee and Tentree) in seconds.


Why this Actor exists

Every Shopify store publishes its catalog through a public storefront feed. Most Shopify scrapers dump that feed once. This Actor turns it into a price and stock monitor: it remembers each store's catalog between runs and tells you exactly what moved.

Typical Shopify scraperShopify Store Scraper & Price Monitor
Products, variants, pricesYesYes
Discount % and on-sale flagsRarelyYes
Stock per variantSometimesYes
Collections, vendor, type, keyword and price filtersFewAll
Product-level or variant-level rowsOne fixed shapeYour choice
Price drops, restocks, sell-outs, new and removed productsNoYes, between runs
Store catalog summaryNoYes

How it works

  1. Check each store's public product feed and read its name, currency and country.
  2. Page through the catalog (or only the collections you list), 250 products per request, politely.
  3. Normalize prices to numbers, compute discounts and stock, and apply your filters.
  4. Compare with the previous run's snapshot when change tracking is on.
  5. Deliver one row per product (or per variant) and a catalog summary per store.

Quick start

One-off catalog export

{
"stores": ["allbirds.com", "example-store.com"],
"maxProductsPerStore": 5000
}

Daily price-drop and restock monitor (run on a schedule)

{
"stores": ["competitor-one.com", "competitor-two.com"],
"trackChanges": true,
"onlyChanges": true,
"maxProductsPerStore": 25000
}

The first monitored run saves a baseline and returns the catalog. Every later run returns only changed products.

Deals finder

{
"stores": ["allbirds.com"],
"onSaleOnly": true,
"onlyAvailable": true,
"outputLevel": "variant"
}

Input

FieldTypeDefaultWhat it does
storesarray3 samplesStore domains or URLs (custom domains or .myshopify.com).
collectionsarraynoneOnly these collections (handles or collection URLs).
keywordsarraynoneMatch title, tags, vendor or product type.
vendorsarraynoneMatch vendor (brand).
productTypesarraynoneMatch product type.
onlyAvailablebooleanfalseIn-stock products or variants only.
onSaleOnlybooleanfalseDiscounted products or variants only.
minPrice / maxPriceintegernonePrice range in the store's currency.
maxProductsPerStoreinteger1000Cap per store after filters (Shopify serves up to 25,000).
outputLevelproduct or variantproductOne row per product or per variant.
includeDescriptionbooleanfalseAdd the description as clean text.
trackChangesbooleanfalseCompare with the previous run and label changes.
onlyChangesbooleantrueWith tracking on, deliver only changed products after the baseline.
maxConcurrencyinteger3Stores processed in parallel.

Output

Product row (shortened):

{
"store": "www.allbirds.com",
"store_name": "Allbirds",
"currency": "USD",
"product_id": "7340901859408",
"title": "Women's Allbirds Flip Flop - Dusty Pink",
"handle": "womens-allbirds-flip-flop-dusty-pink",
"url": "https://www.allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
"vendor": "Allbirds",
"product_type": "Shoes",
"tags": ["womens"],
"price_min": 25.0,
"price_max": 25.0,
"compare_at_price_max": 50.0,
"on_sale": true,
"max_discount_pct": 50.0,
"available": true,
"variants_count": 7,
"available_variants_count": 3,
"options": [{ "name": "Size", "values": ["5", "6", "7", "8", "9", "10", "11"] }],
"variants": [
{ "variant_id": "42146889039952", "title": "5", "sku": "A12513W050", "options": ["5"], "price": 25.0, "compare_at_price": 50.0, "on_sale": true, "discount_pct": 50.0, "available": false, "grams": 455 }
],
"image": "https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_Flip-Flop.png",
"change_type": "price_drop",
"changes": [
{ "type": "price_drop", "variant_id": "42146889039952", "variant_title": "5", "old_price": 30.0, "new_price": 25.0, "change_pct": -16.7 }
],
"scraped_at": "2026-10-17T19:00:00Z"
}

Change types: baseline (first monitored run), new_product, price_drop, back_in_stock, price_increase, sold_out, new_variant, removed, unchanged, or untracked when tracking is off.

Catalog summary (OUTPUT record), one row per store: name, currency, country, products scanned, whether the whole catalog was read, in-stock and on-sale shares, price min, median and max, top vendors, top product types and change counts.


Pricing (Pay-Per-Event)

EventWhenPrice
product-scrapedOne product row (or one variant row) is deliveredSee the Pricing tab
  • You only pay for delivered rows. Store checks, pages and comparisons are included.
  • With change tracking and Deliver only changed products, unchanged products are free after the baseline run.
  • Your run's maximum charge is respected: the Actor checks the remaining budget before each row.

Use cases

  • Competitor price monitoring: get a daily list of price drops and promotions at competing stores.
  • Restock alerts: know when sold-out products come back.
  • Catalog and assortment research: vendors, product types, price bands and discount depth for any brand.
  • Dropshipping and arbitrage: find discounted, in-stock items across many stores.
  • Market research: track how often brands launch new products or retire old ones.

Connect the dataset to Slack, email, Google Sheets or Zapier with Apify integrations to turn changes into alerts.


Use it from AI agents (MCP)

Hosted Apify MCP server (Claude, ChatGPT, Cursor, VS Code and any client that supports remote MCP):

https://mcp.apify.com?tools=AIMindTeams/shopify-catalog-price-monitor

Local stdio server (for example, Claude Desktop claude_desktop_config.json):

{
"mcpServers": {
"shopify-monitor": {
"command": "npx",
"args": ["-y", "@apify/actors-mcp-server", "--tools", "AIMindTeams/shopify-catalog-price-monitor"],
"env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
}
}
}

Example prompts:

  • "Which products on allbirds.com are discounted more than 30% and in stock in size 10?"
  • "Compare the price range and top product types of these three coffee brands' stores."
  • "Set up a daily check and tell me what dropped in price at my competitors' stores."

Use it from code

Python (pip install apify-client):

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("AIMindTeams/shopify-catalog-price-monitor").call(
run_input={"stores": ["allbirds.com"], "trackChanges": True}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["change_type"], item["title"], item["price_min"], item["url"])

cURL (run and get the items in one call):

curl -X POST "https://api.apify.com/v2/acts/AIMindTeams~shopify-catalog-price-monitor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"stores": ["deathwishcoffee.com"], "onSaleOnly": true}'

FAQ

Does it work with every Shopify store? It works with stores that keep Shopify's public product feed enabled, which is the default and covers the vast majority. Stores that disable it or are password protected are listed in the summary as unavailable and are not charged.

What currency are prices in? The store's base currency, shown in the currency field.

How does change tracking work? Each store's catalog (product IDs, variant prices and stock) is saved after every monitored run in a Key-Value Store named SHOPIFY-CATALOG-SNAPSHOTS. The next run compares against it. Each combination of store and collection filter keeps its own snapshot.

Are removed products detected reliably? Yes, but only when the whole catalog (or collection) was read in that run. If a run stops early, nothing is reported as removed.

Is this legal? The Actor reads the public catalog feed that Shopify stores publish for their storefronts. Use the data in line with the laws and terms that apply to you.


More from AIMindTeams


Changelog

  • 1.0: First release. Product- and variant-level output, collections and filters, discounts and stock, store summaries, and change tracking for price drops, price increases, restocks, sell-outs, new and removed products.