Shopify Products Scraper avatar

Shopify Products Scraper

Pricing

from $0.85 / 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 $0.85 / 1,000 products

Rating

5.0

(7)

Developer

Trove Vault

Trove Vault

Maintained by Community

Actor stats

6

Bookmarked

57

Total users

17

Monthly active users

4 days 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 — 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

Track price changes across a rival store's full catalogue. Use compareAtPrice and onSale to identify discount patterns and promotional timing.

Shopify inventory monitoring

Monitor available and fullyOutOfStock to time your own promotions, restock decisions, or buy-before-gone alerts.

Product research and catalogue analysis

Analyse a competitor's SKU count, product types, pricing across variants, and the tags they use for Shopify search and filtering.

Dropshipping and supplier auditing

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

Multi-store price comparison

Add multiple domains in one run. The store field in every output row makes side-by-side comparison in Excel or Google Sheets straightforward.

New product discovery

Run weekly and filter by publishedAt to isolate products added since your last run, or diff full dataset snapshots to detect additions and removals.


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 }
}

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"
}

How to run Shopify Products Scraper via the API

Trigger runs from any script, pipeline, or scheduled job using your Apify API token.

curl -X POST "https://api.apify.com/v2/acts/trovevault~shopify-products-scraper/runs" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"domains":["gymshark.com"],"maxProducts":500}'

The full API reference and JavaScript/Python client examples are available in the Apify API docs.


Limitations

  • Headless stores: Stores on Shopify Hydrogen may not expose /products.json on their custom domain. The actor falls back to .myshopify.com automatically, which succeeds for most headless stores.
  • Per-variant data: One row per product, not per variant. priceMin, priceMax, and variantCount summarise variants; individual SKU-level data requires a separate enrichment step.

Frequently asked questions

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

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. See the API section above for curl and JavaScript examples. 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.