Shopify Product Scraper avatar

Shopify Product Scraper

Pricing

from $1.50 / 1,000 products

Go to Apify Store
Shopify Product Scraper

Shopify Product Scraper

Shopify Product Scraper extracts product data from any Shopify store, capturing titles, prices, descriptions, images, variants, availability, ratings, and SKUs — ideal for market research, competitor analysis, and e-commerce monitoring.

Pricing

from $1.50 / 1,000 products

Rating

0.0

(0)

Developer

FalconScrape

FalconScrape

Maintained by Community

Actor stats

1

Bookmarked

9

Total users

2

Monthly active users

12 hours ago

Last modified

Share

🚀 Shopify Product Scraper: Spy on Any Shopify Store's Products and Prices

Export the full product catalog of any Shopify store as clean JSON, CSV or Excel: titles, prices and compare-at prices, every variant with SKU and stock, images, options, tags, product type and dates. The Shopify Product Scraper works as a Shopify spy tool for competitor research and as a simple Shopify scraper API: paste a store URL and get its products. No store login, no Shopify API key.

🎯 Use Cases

  • Shopify spy and competitor research: see what a competing store sells, at what price, which items are discounted and when products were added.
  • Price monitoring: schedule a daily run on rival stores and track price and compare-at price changes per variant.
  • Product research for dropshipping: find best-selling niches and product types across Shopify brands.
  • Catalog migration and feeds: export a store's products, variants and images to build a feed or move a catalog.
  • Barcode and SKU matching: optionally collect variant barcodes (GTIN/EAN/UPC) to match products across stores and marketplaces.

✨ Features

  • Full catalog: title, description, brand, product type, tags, price, compare-at price and currency.
  • Every variant: SKU, price, compare-at price, stock flag and option values (size, color...).
  • Images and options: image URLs with sizes, and the option names and values.
  • Dates: when each product was created and last updated, good for spotting new launches.
  • Works on stores that hide their catalog feed: falls back to the product pages and reads ratings, color and material there when the store publishes them.
  • Barcodes on request: includeBarcodes adds each variant's published barcode with a checksum check.
  • No duplicates and fair billing: each product is saved once, you pay per saved product, and the run stops at your maximum cost per run.

🛠️ How It Works

  1. Paste a Shopify store URL, e.g. https://www.allbirds.com (empty = an example store).
  2. Set Max products (default 100) and, if you need them, turn on barcodes.
  3. Run the scraper and download the products, or read them through the Apify API.

⚙️ Input

FieldWhat it doesDefault
Store URL (storeUrl)The Shopify store's home page or any URL on it.example store
Max products (maxProducts)How many products to save. Set a high number (e.g. 10000) for the whole catalog.100
Include barcodes (includeBarcodes)Adds variant barcodes from each product's public page data. One extra request per product.false
Proxy (proxyConfiguration)Optional proxies for rate-limited or geo-restricted stores.none
{
"storeUrl": "https://www.gymshark.com",
"maxProducts": 5000,
"includeBarcodes": false
}

💰 Pricing

Pay only for the products you get. No monthly rental.

EventPriceWhat you get
Product$0.0015 per product ($1.50 per 1,000)One product with all its variants
Actor start$0.00005 per runCharged once when the run starts.

Examples: 100 products = $0.15 · a 2,000-product store = $3.00 · a daily price check of 300 products for a month = $13.50.

📊 Sample Output Data

One product, shortened to its first image and variant:

{
"url": "https://www.allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
"handle": "womens-allbirds-flip-flop-dusty-pink",
"shopifyId": 7340901859408,
"title": "Women's Allbirds Flip Flop - Dusty Pink",
"description": "Sun on your feet. Comfort underneath. Light, easy, and made for warm weather, these flip flops bring everyday comfort to sunny days, beach walks, and everything in between.",
"brand": "Allbirds",
"productType": "Shoes",
"tags": ["allbirds::gender => womens", "allbirds::material => sugar", "loop::returnable => true"],
"price": 50,
"compareAtPrice": null,
"currency": "USD",
"currencySource": "cart.js",
"images": [
{
"url": "https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_26Q2_Allbirds-Flip-Flop-Dusty-Pink_PDP_LEFT.png?v=1774646345",
"width": 4000,
"height": 4000,
"position": 1
}
],
"variants": [
{
"id": 42146889039952,
"url": "https://www.allbirds.com/products/womens-allbirds-flip-flop-dusty-pink?variant=42146889039952",
"title": "5",
"sku": "A12513W050",
"barcode": null,
"barcodeCheck": null,
"price": 50,
"compareAtPrice": null,
"available": false,
"availability": null,
"option1": "5",
"option2": null,
"option3": null
}
],
"options": [{ "name": "Size", "values": ["5", "6", "7", "8", "9", "10", "11"] }],
"availableForSale": true,
"rating": null,
"reviewCount": null,
"color": null,
"material": null,
"sku": "A12513W050",
"createdAt": "2026-03-27T14:03:50-07:00",
"updatedAt": "2026-10-28T05:48:18-07:00",
"source": "products.json",
"barcodeLookup": null,
"variantsCapped": null
}

source says where the row came from: the store's public catalog feed (products.json) or its product pages (json-ld, used when a store hides the feed). rating, reviewCount, color and material are only filled from product pages, so they are usually null on feed rows. compareAtPrice is the crossed-out "was" price and is null when an item is not discounted. currencySource tells whether the currency came from the store's cart or from the product page.

Barcodes, stock and missing data:

  • barcode is exactly what the store publishes (leading zeroes kept). barcodeCheck is valid-checksum, invalid-checksum or not-gtin. Barcodes are never guessed from SKUs.
  • barcodeLookup is ok, not-found, failed or skipped (the store does not serve barcodes, so the scraper stopped asking). variantsCapped: true means the product has 250+ variants and the barcode list may be incomplete.
  • available and availableForSale are true, false or null when the store does not say.
  • A price of 0 is a real zero price (e.g. free add-ons), not missing data.

🔁 Schedule and Integrate

For competitor price monitoring, schedule a daily run per store with Apify Schedules and compare price, compareAtPrice and available per variant id between runs. Send the results to Google Sheets, Zapier, Make, n8n or your own webhook through Apify integrations.

🤖 Use with AI Agents (MCP)

The Shopify Product Scraper works as a tool in Claude, ChatGPT, Cursor and other MCP clients through the Apify MCP server (https://mcp.apify.com). An agent can call it with:

{ "storeUrl": "https://www.allbirds.com", "maxProducts": 50 }

❓ FAQ

Does Shopify have an official API for other stores' products? Shopify's Admin and Storefront APIs need the store owner's access token, so you can't use them on a competitor's store. Many stores also publish a public products.json feed, but it is paginated, varies per store and is switched off on some. This scraper reads whatever the store makes public, falls back to product pages when the feed is closed, and returns one clean format.

Is this a Shopify spy tool? Yes, for catalog data: products, prices, discounts, variants, stock flags and launch dates of any public Shopify store. It does not show a store's sales or traffic numbers, because Shopify doesn't publish them.

How do I know if a site is a Shopify store? Paste its URL and run. A store that is not on Shopify (or blocks all public data) ends with "Saved 0 products" and a note.

How many products can I get? The whole catalog: set Max products high. Large stores with several thousand products finish in a few minutes.

Do I need the store's permission or a login? No login. The scraper only reads public storefront data.

Why are rating, color or material empty? Those come from product pages, and only some stores publish them. On rows from the catalog feed they are null.