Shopify Products Scraper
Pricing
from $1.00 / 1,000 products
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
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
storefield - 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?
| Field | Description |
|---|---|
store | Source store domain (e.g. deathwishcoffee.com) |
title | Product title |
vendor | Brand or manufacturer name |
url | Full product page URL |
featuredImage | URL of the first product image |
imageCount | Total number of product images |
imageAltTexts | Alt text from all product images (array) |
currency | Store currency code (ISO 4217, e.g. USD, GBP, EUR) |
priceMin | Lowest variant price |
priceMax | Highest variant price |
compareAtPrice | Original price before discount (null if not on sale) |
onSale | true if compareAtPrice is set |
available | true if at least one variant is in stock |
fullyOutOfStock | true if every variant is out of stock |
requiresShipping | true if the product requires physical shipping |
weightAndUnit | Product weight in grams (from first variant) |
variantCount | Number of variants (sizes, colours, etc.) |
options | Variant option names (e.g. Size, Color, Material) |
productType | Product type category set by the merchant |
tags | Array of product tags |
description | Plain-text product description (HTML stripped) |
publishedAt | ISO 8601 date the product was published |
updatedAt | ISO 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?
| Feature | Collection-based scrapers | Browser-based scrapers | Shopify Products Scraper |
|---|---|---|---|
| Input required | One URL per collection | Product page URLs | Store domain only |
| Full catalogue | Requires all collection URLs | Slow, page by page | Automatic via /products.json |
| Multi-store support | Separate run per store | Separate run per store | One run, multiple domains |
| Speed | Moderate | Slow (browser rendering) | Fast (direct API calls) |
| Compare-at price | Often missing | Unreliable | Native Shopify field |
| API key required | Sometimes | Never | Never |
How to scrape a Shopify store
- Add one or more store domains, e.g.
gymshark.comordeathwishcoffee.com - Set Max Products per store; leave at
0to scrape the full catalogue - Configure proxy (optional); enable Apify Proxy (Residential) only if a store blocks datacenter IPs with HTTP 403
- 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?
- For each domain, the actor probes
{domain}/products.json?limit=1to verify the store is accessible - On HTTP 404, the actor attempts to discover the store's
.myshopify.comsubdomain from the homepage HTML, then falls back to guessing{brand}.myshopify.com - Products are fetched in pages of 250, the maximum Shopify allows per request, with automatic pagination
- Store currency is fetched once from
/cart.js(always public on Shopify) - All fields are extracted, HTML is stripped from descriptions, and results are pushed to the dataset
- Errors per store are caught and logged without failing the entire run; remaining stores continue processing
Input
| Field | Type | Default | Description |
|---|---|---|---|
domains | Array | required | One or more Shopify store domains (e.g. gymshark.com). Accepts bare hostnames, https:// URLs, and .myshopify.com subdomains |
maxProducts | Number | 0 | Max products per store; 0 = no limit. Pages of 250 are fetched until the limit is reached |
proxyConfiguration | Object | disabled | Proxy settings; enable Apify Proxy (Residential) only if a store returns HTTP 403 |
datasetId | String | optional | Apify dataset ID to append results to, in addition to the default run dataset |
runId | String | optional | Apify 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 case | Key fields |
|---|---|
| Price monitoring | priceMin, priceMax, compareAtPrice, onSale |
| Inventory tracking | available, fullyOutOfStock, variantCount |
| SEO analysis | title, description, tags, imageAltTexts |
| Catalogue mapping | vendor, 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.
Related actors
- WooCommerce Products Scraper: same approach for WooCommerce stores, including customer ratings and review counts
- E-Commerce Tech Stack Detector: detect whether a store runs Shopify, WooCommerce, Magento, or 14 other platforms before scraping
- Product Listing SEO Auditor: audit Shopify product listings for SEO quality, meta descriptions, structured data, and image alt text
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.