Shopify Store Scraper avatar

Shopify Store Scraper

Pricing

from $0.80 / 1,000 results

Go to Apify Store
Shopify Store Scraper

Shopify Store Scraper

Extract products, variants, prices, inventory, images, and collections from any Shopify store via the public /products.json and /collections.json endpoints. No API key, no login, no browser.

Pricing

from $0.80 / 1,000 results

Rating

0.0

(0)

Developer

Aurenic

Aurenic

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Extract products, variants, prices, inventory, images, and collections from any Shopify store via the public /products.json and /collections.json endpoints. No API key, no login, no browser.

What does Shopify Store Scraper do?

Scrape any of the 4.2 million+ Shopify stores in one actor:

  • Products — full catalog with title, handle, vendor, product type, tags, price range, compare-at price, calculated discount, availability, and every variant with SKU, barcode, price, weight, and options.
  • Variants — full variant array per product (sizes, colors, materials).
  • Collections — all collections with handle, title, description, image, and product count.
  • Store metadata — store name, description, country, currency, myshopify domain.
  • Optional per-collection filtering — restrict product scraping to specific collections (e.g. sale, best-sellers).

Every Shopify store exposes its catalog at the public canonical endpoint /products.json — the same endpoint that powers Shopify's own product pickers, search APIs, and feed-export integrations. No anti-bot, no browser, no proxy needed.

Output fields

Product

FieldDescription
storeHost / storeOriginStore domain
productIdShopify product ID
titleProduct title
handleURL-safe slug
urlDirect product page URL
vendorBrand / vendor
productTypeShopify product type
tagsComma-separated tags
bodyHtmlHTML-stripped description (when includeProductDetails: true)
publishedAt / createdAt / updatedAtTimestamps
priceMin / priceMaxVariant price range
compareAtPriceMinLowest compare-at price
discountPercentCalculated discount percentage
availableTrue if any variant is in stock
variantCountNumber of variants
variantsFull variant array with SKU, barcode, price, weight, options
imageCount / featuredImage / imagesImage metadata and URLs
optionsProduct options (Size, Color, Material)

Collection

FieldDescription
collectionIdShopify collection ID
title / handle / urlCollection identity
descriptionHTML-stripped description
productsCountNumber of products in the collection
imageUrlCollection image
sortOrderManual / best-selling / price-asc / price-desc

Store metadata

FieldDescription
shopIdShopify shop ID
name / descriptionStore name and description
primaryDomain / myshopifyDomainStore domains
country / currencyLocale
moneyFormatCurrency display format

Diagnostic

Emitted once per store when a domain is not a Shopify store or has /products.json disabled. Not charged.

Who is it for?

  • Dropshippers and product researchers scanning winning products across thousands of stores
  • Price intelligence teams monitoring competitor catalogs and discount rates
  • E-commerce aggregators building multi-store product feeds
  • Brand and MAP monitoring teams enforcing minimum advertised price
  • D2C analytics teams detecting Shopify stores in a sales pipeline
  • Recommendation engine builders training on structured ecommerce data

Pricing

$0.90 per 1,000 results. No subscription.

ResultsCost
100$0.09
1,000$0.90
10,000$9.00

How to use it

  1. Paste one or more Shopify Store URLs (bare domains or full URLs).
  2. Optionally restrict to specific Collection Handles.
  3. Toggle Store Metadata, Collections, and Product Descriptions.
  4. Set Max Products per Store (default 1000) and Max Requests per Second (default 2).
  5. Click Start.

Output example

{
"recordType": "product",
"storeOrigin": "https://www.allbirds.com",
"storeHost": "www.allbirds.com",
"productId": 4521803710580,
"title": "Men's Wool Runner Go",
"handle": "mens-wool-runner-go",
"url": "https://www.allbirds.com/products/mens-wool-runner-go",
"vendor": "Allbirds",
"productType": "Shoes",
"tags": ["men", "sneakers", "wool"],
"bodyHtml": "Our lightest everyday sneaker, made with ZQ Merino wool...",
"publishedAt": "2024-08-12T14:23:00-07:00",
"priceMin": 100.0,
"priceMax": 100.0,
"compareAtPriceMin": 120.0,
"discountPercent": 16.7,
"available": true,
"variantCount": 9,
"variants": [
{
"id": 41234567890123,
"title": "8 / Natural Black",
"sku": "A10543-080",
"price": 100.0,
"compareAtPrice": 120.0,
"available": true,
"grams": 320,
"weight": 0.32,
"weightUnit": "kg",
"barcode": "810010000000",
"option1": "8",
"option2": "Natural Black",
"option3": null,
"position": 1
}
],
"imageCount": 6,
"featuredImage": "https://cdn.shopify.com/s/files/1/0044/4360/7925/products/...",
"images": ["https://cdn.shopify.com/..."],
"options": [
{ "name": "Size", "position": 1, "values": ["8", "9", "10", "11"] },
{ "name": "Color", "position": 2, "values": ["Natural Black", "Natural White"] }
],
"scrapedAt": "2026-09-21T12:00:00.000Z"
}

Technical details

  • No API key, no login, no browser. Uses Shopify's canonical public endpoints.
  • Endpoints used: /products.json, /collections.json, /meta.json, and /collections/{handle}/products.json.
  • Pagination: 250 products per page, up to 200 pages per store.
  • Per-host rate limit: 2 requests/second by default (Shopify throttles aggressive crawlers above ~40 req/min per IP).
  • Multi-store: pass up to dozens of stores in one run.
  • Graceful diagnostics: non-Shopify domains or stores with /products.json disabled emit a single diagnostic record and are not charged.
  • No proxy required. Datacenter IPs work on 99% of stores.

Known limits

  • Only published products appear in /products.json. Draft and unpublished products are not exposed.
  • Inventory quantity is not in the public feed. Per-variant stock is reported as the boolean available.
  • Some stores disable /products.json. Those return a diagnostic record with errorCode: NOT_SHOPIFY_OR_DISABLED.
  • Price is a string in Shopify's feed. The actor parses it to a number (priceMin, priceMax, per-variant price).
  • body_html is truncated at 5,000 characters after HTML stripping.

FAQ

Do I need a Shopify API key? No. The /products.json endpoint is public by design — it's the same endpoint Shopify uses for product pickers and feed exports.

Do I need a proxy? No. Datacenter IPs work on almost every store. Enable proxy only if a specific store blocks you.

Why did my store return a diagnostic record? Either the domain isn't Shopify, or the store disabled /products.json. The errorCode field tells you which.

How many products can I get per store? Up to 50,000 (200 pages × 250 per page). For larger catalogs, run multiple times with maxProductsPerStore and dedupe by productId.

Can I scrape reviews too? Not in this version. Review platforms (Judge.me, Yotpo, Okendo) each require their own endpoint — planned for a follow-up.

How do I export data? After a run, go to Storage → Export as JSON, CSV, Excel.

Support

Open an issue on the Actor's page for bugs or feature requests.