Shopify Store Products Scraper avatar

Shopify Store Products Scraper

Pricing

from $0.60 / 1,000 results

Go to Apify Store
Shopify Store Products Scraper

Shopify Store Products Scraper

Shopify products scraper for catalog and variant exports: prices, discounts, SKUs, availability and images. Export CSV or JSON from public store feeds, with one row per product or variant. Review run summaries for failures and budget-limited exports. No Shopify API key required.

Pricing

from $0.60 / 1,000 results

Rating

0.0

(0)

Developer

Murat Uzun

Murat Uzun

Maintained by Community

Actor stats

0

Bookmarked

8

Total users

4

Monthly active users

4 days ago

Last modified

Features

Limited permissions

Share

What is Shopify Store Products Scraper?

Shopify Store Products Scraper exports a public Shopify catalog as CSV, Excel or JSON, with prices, discounts, SKUs, availability, variant options and images. Enter a store URL and choose one row per product or one row per size/color variant. No Shopify API key is required.

Use it to prepare a catalog spreadsheet, compare product prices, or collect SKU-level availability snapshots for your own monitoring workflow. It reads the store's public products.json feed directly; stores that block or disable this feed cannot be collected. Availability is not an exact inventory count, and currency is not inferred.

Start with a small export

  1. Enter one store URL, such as https://www.allbirds.com.
  2. Set maxProductsPerStore to 2. Turn includeVariants off for two product rows, or on to inspect the variants of those products.
  3. Run the Actor, inspect the dataset, and export CSV or JSON.
  4. Read the OUTPUT summary before increasing the limit or replacing an existing catalog. Product limits, filters, failures and budget limits can leave the export incomplete. Never infer that a missing SKU has been deleted from a partial export.

For repeated snapshots, match rows by store plus productId (product mode) or variantId (variant mode). Schedule runs and compare snapshots in your own workflow; this Actor does not itself retain history or send stock-change alerts.

What data does Shopify Store Products Scraper extract?

Shopify Store Products Scraper returns the fields below according to the selected product or variant mode. Fields not exposed by the public feed remain null:

FieldTypeDescription
store, productId, productHandle, productUrlstring, number, stringWhich store the row came from and the product's id, slug and live URL
title, vendor, productType, tagsstring, arrayProduct title, brand, merchant category and tags
createdAt, updatedAt, publishedAtstringProduct lifecycle dates (ISO 8601)
variantId, variantTitle, sku, barcodenumber, stringVariant identity (variant mode)
price, compareAtPrice, currency, discountPercentnumber, stringSelling price, list price and % off; currency remains null
available, inventoryQuantityboolean, numberIn-stock status and units on hand (when the store exposes it)
option1, option2, option3stringVariant option values, e.g. color / size
weightGrams, requiresShippingnumber, booleanShipping weight and whether the variant ships physically
imageUrl, imageCount, bodyTextstring, number, stringPrimary image, image count and the description with HTML stripped
variantCount, minPrice, maxPrice, anyAvailablenumber, booleanAggregates used instead of the variant fields in product mode
error, scrapedAtstringerror is null on result rows; failures use diagnostic records

How to use Shopify Store Products Scraper

  1. Paste one or more store URLs into Store URLs, e.g. https://www.allbirds.com. A bare domain like gymshark.com also works.
  2. Leave One row per variant on for a price/stock feed keyed by SKU, or turn it off for one row per product with minPrice/maxPrice/anyAvailable.
  3. Optionally add Collection handles (e.g. mens-shoes) to scrape only those collections instead of the whole catalog.
  4. Click Start, then export the dataset as JSON, CSV, Excel or HTML.

Example input

{
"stores": ["https://www.allbirds.com"],
"maxProductsPerStore": 100,
"includeVariants": true,
"onlyAvailable": false
}

Example output

{
"store": "https://www.allbirds.com",
"productId": 7218356060240,
"productHandle": "mens-strider-explore",
"productUrl": "https://www.allbirds.com/products/mens-strider-explore",
"title": "Men's Strider Explore - Natural Black (Dark Grey Sole)",
"vendor": "Allbirds",
"productType": "Shoes",
"variantId": 41334293921872,
"variantTitle": "8.5",
"sku": "A11768M085",
"price": 130,
"compareAtPrice": null,
"discountPercent": null,
"available": true,
"option1": "8.5",
"imageUrl": "https://cdn.shopify.com/s/files/1/1104/4168/products/mens-strider-explore.jpg",
"imageCount": 3,
"scrapedAt": "2026-09-12T18:10:00.000Z"
}

Input parameters

ParameterTypeDefaultDescription
storesarray["https://www.allbirds.com"]Store URLs to scrape, one or many
maxProductsPerStoreinteger100Cap on products fetched per store (1-20000)
collectionHandlesarray[]Scope to specific collections instead of the whole catalog
includeVariantsbooleantrueOne row per variant (true) or one aggregated row per product
onlyAvailablebooleanfalseDrop out-of-stock variants/products
maxConcurrencyinteger3Stores scraped in parallel (1-10); pages within a store are sequential

Pricing

Shopify Store Products Scraper uses pay-per-event pricing: $0.001 per result row, i.e. $1 per 1,000 rows, plus a negligible actor-start fee. Check the live Pricing tab for current tiers and start fees. The run reserves its remaining result budget before requesting each store and limits products and output rows accordingly. Variant mode can produce multiple rows per product. Budget-limited exports are not complete catalog snapshots. Errors and invalid product rows are stored as diagnostics, not billable result rows; start fees may still apply.

Shopify Store Products Scraper vs. browser-based scrapers

Most "universal" e-commerce scrapers render every product page in a headless browser to scrape prices off the DOM — slow, and easily broken by a theme update. Shopify Store Products Scraper reads the same structured JSON the store's own theme fetches, so extraction does not depend on the storefront CSS selectors. The feed can still be blocked, disabled or changed by a store. It cannot see private apps, wholesale-only catalogs or draft products that are not on the public storefront, which is by design: it only reads what the merchant already publishes.

Using Shopify Store Products Scraper with AI agents and MCP

Connect your MCP client to the official Apify MCP server, authorize your Apify account, and select webdatatools/shopify-products-scraper. Ask the agent to export two products from a public Shopify store, pass stores and maxProductsPerStore: 2, and inspect both the dataset and the OUTPUT completeness summary. Configure your run spending limit in Apify before expanding the export.

This Actor uses limited permissions. Full-permission Actors are excluded from the official MCP server; pay-per-event pricing is not a universal requirement for account-authorized MCP access. Per-request agentic payments have separate eligibility requirements. The same Actor is callable through Apify's REST API and integrations such as n8n or Make.

Shopify run summary and completeness

Read the OUTPUT key-value record before replacing an existing inventory. It reports resultRows, failedStores, emptyStores, budgetSkippedStores, budgetLimitedStores, truncatedRows and deliveryUnconfirmed. Counters cover this process attempt, not inferred migration totals. A nonzero limit/failure counter means the export must not be treated as a full catalog. The configured product limit and availability filters can also produce a partial catalog. Repeated pages stop with a diagnostic instead of looping. An uncertain dataset upload is not retried automatically to avoid duplicate charges.

FAQ

Does this work on any Shopify store? It requires an accessible public products.json feed. Password protection, access blocks or a disabled feed can prevent collection. These cases create DIAGNOSTIC-* key-value records, with counts and the first diagnostic key in OUTPUT. Source failures with no usable products fail the run. A valid empty feed or no filter matches is reported in emptyStores without a product charge. Mixed runs retain usable rows and report failed stores separately. Error rows are not written to the default dataset.

Why is inventoryQuantity often null? Shopify's public products.json feed does not include live stock counts for most themes — only available (in stock or not). inventoryQuantity is filled in on the rare stores that do expose it publicly.

Why is currency usually null? The public JSON feed does not name its currency, and this Actor leaves currency null. Verify the store currency separately before comparing prices between stores.

What counts as a "row" for pricing? Each variant (or, in product mode, each product) is one row. A store with 250 products and 4 variants each produces about 1,000 rows.

Does this access private Shopify data? No. It uses the storefront's public product feed and does not authenticate to Shopify Admin or bypass a password-protected store. Check the store's terms and your intended use before collecting data.

Can I export to CSV or Excel? Yes, from the Output tab or the API, with a ready-made Overview view.

Part of the webdatatools web-intelligence suite — every Actor is pay-per-event, reads public data without a login, and returns one clean row per entity:

Browse the whole suite at webdatatools, or call ten of these Actors straight from Claude, Cursor or Cline with the webdatatools MCP server.

Website & domain intelligence

Content for AI, LLMs and RAG

Search, video and social

Leads, jobs and company data

Developer, app and research data

Tracking a few competitor products rather than whole catalogs? Page & Price Watch watches a product page's price and availability from its schema.org data and emails you when they change. To see the price a single product page publishes right now, use the free product price checker (no sign-up).

Support and feedback

Found a store the Actor mis-detects as non-Shopify, or a field worth adding? Open an issue on the Issues tab.

⌂ 换网址