Shopify Scraper – Products, Prices, Stock & Price Monitor avatar

Shopify Scraper – Products, Prices, Stock & Price Monitor

Pricing

from $0.90 / 1,000 products

Go to Apify Store
Shopify Scraper – Products, Prices, Stock & Price Monitor

Shopify Scraper – Products, Prices, Stock & Price Monitor

Scrape any Shopify store: every product with price, sale price, discount %, stock per variant, SKUs and images, plus store analytics. Monitoring mode returns price drops, sold-out and back-in-stock products. Pay per product.

Pricing

from $0.90 / 1,000 products

Rating

0.0

(0)

Developer

Hiếu Trần Quang

Hiếu Trần Quang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Get every product from any Shopify store in one run: prices, sale prices, discounts, stock, variants, SKUs and images, plus a store summary (country, currency, catalogue size, top vendors, price range). Schedule it to monitor competitor prices and stock and pay only for products that changed.

Try it free: a test with 100 products from one store costs about $0.13 – covered by the $5 monthly credit of the free Apify plan. After that, $1.20 per 1,000 products, no subscription.

Why this one

  • Any Shopify store, no login. Paste store domains or collection URLs – nothing to configure.
  • Price intelligence built in. Lowest and highest price, compare-at price, discount %, on-sale flag, USD conversion – no spreadsheet work.
  • Stock per variant. Every size and colour with SKU, price and availability.
  • Store analysis. One row per store: country, currency, products and collections count, top vendors and product types, median price, share on sale, products added in the last 30 days.
  • Real price monitoring. In "only new or changed" mode each changed product comes with previousPrice, priceChange, priceChangePercent and stockChange (sold_out / back_in_stock) – price drops and restocks without any spreadsheet diffing. Unchanged products are free.
  • Fast and polite. Uses the stores' public product feed, respects robots.txt and rate limits.

Compared with alternatives

This ActorTypical alternatives
Price change since last runpreviousPrice, priceChange %, stockChangeNo – you diff it yourself
Store analytics rowCountry, currency, catalogue size, vendors, price rangeSeparate paid tool
Discount %, on sale, USD priceComputed for youRaw prices only
CollectionsPaste a collection URLWhole store only
Price$1.20 per 1,000 products$1–2.50 per 1,000

What you get

Product rows (recordType: "product"): title, handle, URL, vendor, product type, tags, description (plain text), main image and gallery, price and max price, compare-at price, discount %, on sale, available, variants count and available variants, variants (id, title, SKU, options, price, compare-at price, availability, weight), currency, price in USD, created / published / updated dates.

Store rows (recordType: "store"): store name, URL, country, region, city, currency, myshopify domain, description, ships-to countries, published products and collections count, products scanned, vendors count, top vendors, top product types, min / median / max price, median price in USD, share on sale, share available, products added in the last 30 days, newest product date.

Sample output

{
"recordType": "product",
"store": "allbirds.com",
"title": "Women's Allbirds Flip Flop - Dusty Pink",
"url": "https://allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
"vendor": "Allbirds",
"productType": "Shoes",
"price": 25,
"compareAtPrice": 50,
"discountPercent": 50,
"onSale": true,
"available": false,
"variantsCount": 8,
"variantsAvailable": 0,
"currency": "USD",
"priceUsd": 25,
"publishedAt": "2026-09-25T23:58:13.000Z"
}

Price-monitoring output

With "Only new or changed products" on, a changed product looks like this:

{
"title": "Tree Runner - Natural White",
"price": 89,
"previousPrice": 110,
"priceChange": -21,
"priceChangePercent": -19.09,
"available": true,
"previousAvailable": false,
"stockChange": "back_in_stock",
"changeType": "updated"
}

How to use

  1. Paste Shopify store domains (e.g. allbirds.com) or collection URLs (e.g. …/collections/sale), one per line.
  2. Choose Products (every product + a store summary) or Store summaries only.
  3. Click Start. Export to JSON, CSV or Excel, or call it from your app or AI agent.

For price monitoring, turn on "Only new or changed products" and add a daily schedule.

Use cases

  • Competitor price monitoring: daily price, discount and stock changes across competitor stores.
  • Product research & dropshipping: find best sellers' catalogues, price ranges and new products.
  • Market and brand analysis: compare catalogues, vendors, price points and discount strategies.
  • Catalogue export & migration: export a full product catalogue with images and SKUs.
  • Lead qualification: size and analyse Shopify stores before outreach.

Pricing

Pay per result, platform usage included:

Apify planPer 1,000 productsPer store summaryPer run
Free$1.20$0.006$0.005
Starter$1.10$0.006$0.005
Scale$1.00$0.006$0.005
Business$0.90$0.006$0.005

Unchanged products in "only new or changed" mode are free. Non-Shopify sites and stores that cannot be read cost nothing.

Cost examples

  • Full catalogue of a 700-product store: ≈ $0.85
  • Daily price monitor of 3 competitors (only changes): typically $0.05–0.30 per day

Use it from code, n8n or AI agents

Run it from the Apify API, the Python or JavaScript client, n8n, Make or Zapier – or let an AI agent call it through the Apify MCP server (Claude, ChatGPT, Cursor).

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("ram1eal/shopify-store-products").call(run_input={"stores":["allbirds.com"],"maxItems":50})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item)
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client
.actor('ram1eal/shopify-store-products')
.call({ stores: ['allbirds.com'], maxItems: 50 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

MCP: add ram1eal/shopify-store-products to the Apify MCP server and ask in plain English – the agent fills the input and pays per result.

Data sourcing & compliance

  • Reads the public product feed every Shopify storefront publishes (/products.json, /meta.json) – the same data shown to every visitor. No login, no checkout, no customer data.
  • robots.txt is respected: a store that disallows its product feed is skipped and reported.
  • Polite by design: about one request per second per store, Retry-After honoured. Stores that block access are reported, never forced.
  • Product descriptions are scrubbed of e-mail addresses and phone numbers.

FAQ

  • Does it work on every Shopify store? On stores that publish the standard storefront feed – the vast majority. Password-protected stores, stores that block access or disallow the feed in robots.txt are listed in the run's STORE_PROBLEMS record and not charged.
  • Is stock quantity available? Shopify's public feed exposes availability (in stock / sold out) per variant, not exact quantities.
  • How many products per store? Up to 25,000 (Shopify's own limit for the public feed).
  • What if something breaks? Open an issue – typical response under 12 hours.

More tools from this author

Input reference

FieldTypeDefaultDescription
storesarray–Store domains, store URLs or collection URLs
modestringproductsproducts or stores (summaries only)
maxItemsinteger10000Maximum products in total
onlyNewbooleanfalseOnly new or changed products (price, stock, details)
maxProductsPerStoreinteger25000Limit per store
includeVariantsbooleantrueVariant list with SKU, price and availability
includeStoreSummarybooleantrueOne summary row per store
stateKeystring–History name for only-changed mode

Changelog

  • 0.1 – Products, variants, prices, discounts, stock, USD conversion, store summaries, only-changed monitoring.