Shopify Products Scraper avatar

Shopify Products Scraper

Pricing

from $1.00 / 1,000 products

Go to Apify Store
Shopify Products Scraper

Shopify Products Scraper

Scrape every product from any Shopify store: title, vendor, price, compare-at price, variants, stock status, and images. Just enter the store domain. No API keys or category URLs needed. Export data, run via API, schedule and monitor runs, or integrate with other tools.

Pricing

from $1.00 / 1,000 products

Rating

5.0

(3)

Developer

Trove Vault

Trove Vault

Maintained by Community

Actor stats

3

Bookmarked

38

Total users

12

Monthly active users

21 hours ago

Last modified

Categories

Share

Shopify Products Scraper: Full Catalogue from Any Store Domain

Scrape all products from any Shopify store: title, vendor, price, compare-at price, variant count, stock availability, featured image, image count, image alt texts, product type, tags, and plain-text description. Just enter the store domain. Fetches 250 products per API call with automatic pagination, supports multi-store runs in one execution, and requires no API keys or login credentials.


Why use Shopify Products Scraper?

Most Shopify scrapers require a separate URL for every collection page. This scraper uses Shopify's native /products.json endpoint, a public API that returns the full product catalogue from just the store domain. No collection URLs, no browser rendering, no authentication.

  • Scrape the entire Shopify catalogue with a single domain input
  • Scrape multiple Shopify stores in one run; every output row includes a store field
  • No browser needed, which makes it faster and cheaper than Playwright-based alternatives
  • Automatic pagination handles stores with 10,000+ products
  • Download results as JSON, CSV, or Excel

What data does Shopify Products Scraper extract?

FieldDescription
storeSource store domain (e.g. deathwishcoffee.com)
titleProduct title
vendorBrand or manufacturer name
urlFull product page URL
featuredImageURL of the first product image
imageCountTotal number of product images
imageAltTextsAlt text from all product images (array)
currencyStore currency code (ISO 4217, e.g. USD, GBP, EUR)
priceMinLowest variant price
priceMaxHighest variant price
compareAtPriceOriginal price before discount (null if not on sale)
onSaletrue if compareAtPrice is set
availabletrue if at least one variant is in stock
fullyOutOfStocktrue if every variant is out of stock
requiresShippingtrue if the product requires physical shipping
weightAndUnitProduct weight in grams (from first variant)
variantCountNumber of variants (sizes, colours, etc.)
optionsVariant option names (e.g. Size, Color, Material)
productTypeProduct type category set by the merchant
tagsArray of product tags
descriptionPlain-text product description (HTML stripped)
publishedAtISO 8601 date the product was published
updatedAtISO 8601 date the product was last modified

What can I do with Shopify product data?

Competitor price monitoring

Scrape a rival Shopify store's full product catalogue and track price changes over time. Schedule the actor to run daily and compare dataset snapshots to detect price increases, new discounts, and product launches. Use the compareAtPrice and onSale fields to identify promotional patterns.

Shopify inventory monitoring

Track stock availability via the available and fullyOutOfStock fields across an entire store. Identify which products go out of stock and use this to time your own promotions, restocks, or buy-before-gone alerts.

Product research and catalogue analysis

Analyse a competitor's full product range: how many SKUs they carry, what product types they focus on, how they structure pricing across variants, and what tags they use for Shopify search and filtering.

Dropshipping and supplier auditing

Audit Shopify-based suppliers for available inventory, pricing structure, and product range before committing to a partnership. The vendor field identifies which brands a store carries.

Multi-store price comparison

Add multiple Shopify store domains in one run. The store field in each output row tells you which domain it came from, making it easy to compare pricing side by side in Excel or Google Sheets.

New product discovery

Run the scraper weekly and diff the output to find newly added products before competitors do. Filter by publishedAt to isolate products added since your last run.


Why use Shopify Products Scraper instead of alternatives?

FeatureCollection-based scrapersBrowser-based scrapersShopify Products Scraper
Input requiredOne URL per collectionProduct page URLsStore domain only
Full catalogueRequires all collection URLsSlow, page by pageAutomatic via /products.json
Multi-store supportSeparate run per storeSeparate run per storeOne run, multiple domains
SpeedModerateSlow (browser rendering)Fast (direct API calls)
Compare-at priceOften missingUnreliableNative Shopify field
API key requiredSometimesNeverNever

How to scrape a Shopify store

  1. Add one or more store domains, e.g. gymshark.com or deathwishcoffee.com
  2. Set Max Products per store; leave at 0 to scrape the full catalogue
  3. Configure proxy (optional); enable Apify Proxy (Residential) only if a store blocks datacenter IPs with HTTP 403
  4. Click Start and download results as JSON, CSV, or Excel when the run completes

Example input for a two-store run with a 500-product cap:

{
"domains": ["gymshark.com", "deathwishcoffee.com"],
"maxProducts": 500,
"proxyConfiguration": { "useApifyProxy": false }
}

How does Shopify Products Scraper work?

  1. For each domain, the actor probes {domain}/products.json?limit=1 to verify the store is accessible
  2. On HTTP 404, the actor attempts to discover the store's .myshopify.com subdomain from the homepage HTML, then falls back to guessing {brand}.myshopify.com
  3. Products are fetched in pages of 250, the maximum Shopify allows per request, with automatic pagination
  4. Store currency is fetched once from /cart.js (always public on Shopify)
  5. All fields are extracted, HTML is stripped from descriptions, and results are pushed to the dataset
  6. Errors per store are caught and logged without failing the entire run; remaining stores continue processing

Input

FieldTypeDefaultDescription
domainsArrayrequiredOne or more Shopify store domains (e.g. gymshark.com). Accepts bare hostnames, https:// URLs, and .myshopify.com subdomains
maxProductsNumber0Max products per store; 0 = no limit. Pages of 250 are fetched until the limit is reached
proxyConfigurationObjectdisabledProxy settings; enable Apify Proxy (Residential) only if a store returns HTTP 403
datasetIdStringoptionalApify dataset ID to append results to, in addition to the default run dataset
runIdStringoptionalApify run ID to associate results with for pipeline chaining

Output

Each scraped product is one row in the dataset. Key fields for common use cases:

Use caseKey fields
Price monitoringpriceMin, priceMax, compareAtPrice, onSale
Inventory trackingavailable, fullyOutOfStock, variantCount
SEO analysistitle, description, tags, imageAltTexts
Catalogue mappingvendor, productType, tags, publishedAt

Example output row:

{
"store": "gymshark.com",
"title": "Vital Seamless 2.0 Shorts",
"vendor": "Gymshark",
"url": "https://gymshark.com/products/vital-seamless-2-0-shorts",
"currency": "GBP",
"priceMin": "45.00",
"priceMax": "45.00",
"compareAtPrice": null,
"onSale": false,
"available": true,
"fullyOutOfStock": false,
"variantCount": 8,
"options": ["Size"],
"productType": "Shorts",
"tags": ["bottoms", "seamless", "training"],
"publishedAt": "2023-06-14T09:00:00Z"
}

Frequently asked questions

Does it work on all Shopify stores? It works on any Shopify store using the standard storefront. Stores built on Shopify Hydrogen or other custom headless frontends may not expose /products.json on their custom domain; the actor attempts to discover and use the store's .myshopify.com subdomain automatically in that case.

Can I scrape multiple stores at once? Yes. Add as many domains as needed. The actor processes them sequentially and includes a store field in every output row.

How do I export the data? Once the run finishes, click Export in the dataset view and choose JSON, CSV, or Excel.

Will it scrape all product variants? The output includes variantCount plus priceMin/priceMax across all variants. The options field lists variant dimensions (Size, Color, etc.).

How do I monitor for new products? Schedule the actor to run weekly. Filter by publishedAt to find products added since your last run, or compare full dataset snapshots to detect additions and removals.

What if the store returns a 403 error? Enable Apify Proxy (Residential group) in the Proxy Configuration input. Large Shopify stores like Gymshark and Allbirds sometimes block datacenter IP ranges but work reliably with residential proxies.

Can I use this via the Apify API? Yes. Use the Run Actor endpoint with your actor ID and input JSON. Combine with webhooks to trigger downstream pipelines when a run completes.

Can I use this through an MCP Server? Yes. Via the Apify MCP server, you can call this actor from any MCP-compatible AI assistant, including Claude and ChatGPT, to scrape Shopify stores directly from a conversation.

Is scraping Shopify product data legal? This actor accesses only Shopify's public /products.json endpoint, the same data any browser fetches when loading a storefront. Scraping publicly available data is generally permitted under major jurisdictions. Always review the store's terms of service for large-scale commercial use.



Changelog

v0.1

  • Initial release

Feedback

Found a bug or have a feature request? Open an issue or contact us through the Apify platform. Your feedback helps improve this actor for everyone.