Shopify Products Scraper - Prices, Variants, Stock & Monitoring avatar

Shopify Products Scraper - Prices, Variants, Stock & Monitoring

Pricing

from $0.70 / 1,000 products

Go to Apify Store
Shopify Products Scraper - Prices, Variants, Stock & Monitoring

Shopify Products Scraper - Prices, Variants, Stock & Monitoring

Export all products from any Shopify store: prices, variants, SKUs, stock, images and discounts. Works on headless stores, monitors new products and price changes. Pay per product.

Pricing

from $0.70 / 1,000 products

Rating

0.0

(0)

Developer

TinyRex

TinyRex

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

Shopify Products Scraper: prices, variants, stock and monitoring

Export every product from any Shopify store: prices, discounts, variants (size, color), SKUs, stock status, images, tags and descriptions. Add store domains, collection URLs or product URLs and get clean, structured data in seconds. You pay only for the products you get.

Why this one: $0.70 per 1,000 products, cheaper than popular Shopify scrapers on the Store (about $1–10 per 1,000). Non-Shopify, blocked or password-protected stores and filtered-out products are free.

Why this scraper

  • Fast and light. It reads the public product feed that every Shopify store provides. No browser, so runs are quick and cheap.
  • Works on headless stores too. Many big brands run a custom front end on top of Shopify. The scraper finds the store's *.myshopify.com domain and reads the feed from there, and switches to it automatically if the storefront starts blocking.
  • Large stores. Shopify lists at most 25,000 products per listing. For bigger stores the scraper continues through the store's collections.
  • Monitoring built in. Get only new products, or new products plus price and stock changes with the previous values, on every scheduled run.
  • Pay only for results. Inputs that are not Shopify stores, password-protected or blocked stores, and products removed by your filters are free.
  • Stock quantity and barcode (optional): added per variant when the store exposes them.

What you get

FieldExample
Store name, URL, currency, countryAllbirds, https://www.allbirds.com, USD, US
Product ID, handle, URL, title7205191974992, mens-dasher-nz, …/products/mens-dasher-nz, Men's Dasher NZ
Vendor, product type, tagsAllbirds, Shoes, [mens, running]
Price, max price, compare-at price, discount %140, 160, 180, 22
In stock, in-stock variants, variant counttrue, 3, 13
OptionsSize: 8, 9, 10 …
Variantsid, title, SKU, price, compare-at price, available, options, weight
Imagesmain image + all image URLs
Datescreated, published, updated
Descriptionplain text or HTML
With the stock optioninventory quantity, inventory policy, barcode per variant, total inventory
In monitoring modechange type, previous price, previous availability

How to use

  1. Add stores to Shopify stores, collections or products:
    • a domain: allbirds.com
    • a collection: https://www.allbirds.com/collections/mens
    • a single product: https://colourpop.com/products/lip-locked
  2. Optional filters: keywords, exclude keywords, vendors, product types, price range, only in stock, only on sale, published in the last N days.
  3. Choose one row per product (variants nested) or one row per variant (flat, best for spreadsheets and price tracking).
  4. Run, then download the results as JSON, CSV, Excel or HTML, or use them through the API, webhooks or integrations (Google Sheets, Make, Zapier, n8n, Slack).

Example input

{
"stores": ["deathwishcoffee.com", "https://www.allbirds.com/collections/mens"],
"outputMode": "products",
"onlyAvailable": true,
"maxProductsPerStore": 500
}

Example output (shortened)

{
"storeName": "Allbirds",
"currency": "USD",
"productId": 7205191974992,
"url": "https://www.allbirds.com/products/mens-dasher-nz-anthracite",
"title": "Men's Dasher NZ - Anthracite (Dark Anthracite Sole)",
"vendor": "Allbirds",
"productType": "Shoes",
"price": 140,
"compareAtPrice": null,
"onSale": false,
"available": true,
"availableVariants": 3,
"variantsCount": 13,
"options": [{ "name": "Size", "values": ["8", "8.5", "9"] }],
"featuredImage": "https://cdn.shopify.com/s/files/1/1104/4168/files/...png",
"variants": [{ "id": 41271176757328, "title": "8", "sku": "A12417M080", "price": 140, "available": false }],
"publishedAt": "2026-08-24T09:53:01-07:00"
}

Monitoring new products and price changes

Set Monitoring mode and schedule the Actor (for example daily):

  • Only new products: each run returns products that were not seen before.
  • New products and price/stock changes: also returns products whose price, compare-at price or availability changed, with changeType, previousPrice and previousAvailable.

The first monitoring run returns all matching products as the baseline. Use a different State key for each schedule or filter set. The state is stored in your account in the key-value store shopify-products-state.

Run report

Besides the dataset, each run saves:

  • STORES: one record per input with the status (ok, not_shopify, blocked, password_protected, unreachable, not_found), the method used (direct or myshopify-fallback), store name, currency and product counts.
  • SUMMARY: totals for the run.

Pricing

Pay per event:

  • Product (product): one charge per row saved to your dataset (per product, or per variant in variant mode).
  • Stock details (inventory-details): only with the stock option, and only for products where stock data was actually found.
  • Free: stores that are not Shopify, blocked or password-protected stores, unreachable sites and filtered-out products.

See the Pricing tab for current prices. Set a maximum cost per run and the Actor stops gracefully when it is reached.

Tips

  • Use variant mode with only on sale to build a discount feed.
  • Use a collection URL to scrape just one category of a big store.
  • If a store returns blocked, or a run is slowed down by rate limiting (HTTP 429), try again with Apify Proxy (Advanced section).

Limitations

  • Only data the store publishes in its public storefront is available. Reviews, sales numbers and cost prices are not.
  • Stock quantity is only available when the store exposes it. Many stores do not.
  • Some headless stores hide their Shopify domain. These are reported as not_shopify or blocked and are not charged.
  • For stores with more than 25,000 products, products that are not in any public collection can be missing.

Use with AI agents (MCP)

This Actor works as a tool for AI agents through the Apify MCP server at https://mcp.apify.com. Connect Claude, Cursor, VS Code, n8n or any other MCP client to https://mcp.apify.com?tools=tinyrex/shopify-products-scraper and the agent can run it from a plain-language request, for example: "Export all products under $50 from allbirds.com". Results come back as clean, structured JSON at the same pay-per-result price, and failed inputs stay free.

📘 Step-by-step guide with Python, JavaScript, curl and MCP examples: How to export all products from any Shopify store to CSV or JSON

FAQ

Is it legal? The Actor reads public product data that Shopify stores publish for browsers, apps and search engines. It does not log in, does not access customer or order data, and does not bypass passwords. Use the data in line with the store's terms and your local law.

How fast is it? In our test, 30 stores with about 66,000 products took under 2 minutes. Speed depends on store size and response times.

My store isn't recognized. Pass the store's xxx.myshopify.com domain directly, or open an issue with the URL and we will take a look.