Shopify Store Products Scraper – Prices, Stock & Variants avatar

Shopify Store Products Scraper – Prices, Stock & Variants

Pricing

from $0.83 / 1,000 products

Go to Apify Store
Shopify Store Products Scraper – Prices, Stock & Variants

Shopify Store Products Scraper – Prices, Stock & Variants

Every product from any Shopify storefront's public feed. Input: store domains or collection URLs. Output: products with variants, prices, stock status, images and description. $0.83/1k products.

Pricing

from $0.83 / 1,000 products

Rating

0.0

(0)

Developer

Glidepath

Glidepath

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 hours ago

Last modified

Share

Get every product from any Shopify storefront in one clean, consistent format: title, vendor, type, all variants with price and stock status, images and description.

It reads the store's own public products.json feed — the same JSON every Shopify storefront publishes for its own storefront and app integrations (no login, no cookies, no browser), so runs are fast, cheap and stable.

Who uses it

  • Market and competitor research — track a competitor's catalog, prices and stock over time.
  • Price monitoring and repricing — watch a set of stores for price or stock changes.
  • Product aggregators and dropshippers — pull a clean product feed from any Shopify store or collection.
  • Buyers and deal hunters — filter a store's catalog by price range or in-stock only.
  • AI agents — a single, predictable tool for "what does store X sell, and at what price?".

How to use it

  1. Add stores to Store domains or collection URLs — a bare domain (allbirds.com), a full store URL, or a collection URL to scrape only that collection.
  2. Optionally filter by price range or in-stock only, and cap how many products per store.
  3. Run it and download the products as JSON, CSV or Excel — or call it via API, schedule it, or connect it to Make, Zapier, n8n, Google Sheets or your AI agent (Apify MCP).

Input example

{
"stores": ["allbirds.com", "https://gymshark.com/collections/leggings"],
"onlyAvailable": true,
"maxProductsPerStore": 200
}

Output example

{
"store": "allbirds.com",
"collection": null,
"id": 7289263685712,
"handle": "mens-wool-runner-natural-black",
"title": "Men's Wool Runner - Natural Black",
"vendor": "Allbirds",
"productType": "Shoes",
"tags": ["mens", "shoes", "wool"],
"priceMin": 89.0,
"priceMax": 98.0,
"available": true,
"variantsCount": 3,
"variants": [
{"id": 1001, "title": "8", "sku": "WR-8-BLK", "price": 98.0, "compareAtPrice": null, "available": true,
"option1": "8", "option2": null, "option3": null}
],
"options": [{"name": "Size", "position": 1, "values": ["8", "9", "10"]}],
"images": [{"src": "https://cdn.shopify.com/.../wool-runner-1.jpg", "width": 1200, "height": 1200}],
"url": "https://allbirds.com/products/mens-wool-runner-natural-black",
"createdAt": "2025-08-29T18:36:38Z",
"updatedAt": "2026-09-25T22:50:41Z",
"publishedAt": "2026-09-25T22:24:49Z",
"descriptionText": "Our original sneaker. Soft, breathable and machine washable.",
"descriptionHtml": null,
"scrapedAt": "2026-09-26T09:00:00Z"
}
FieldDescription
store, collectionStore domain and collection handle (when the input was a collection URL)
id, handleShopify product id and URL slug (use id to de-duplicate)
title, vendor, productType, tagsAs published by the store
priceMin, priceMax, availableLowest/highest variant price and whether any variant is purchasable
variantsCount, variantsEvery variant with its own price, stock status and option values
optionsOption names and their possible values (e.g. Size, Color)
imagesProduct images (URL, width, height); capped by Max images per product
urlPublic product page
createdAt, updatedAt, publishedAtISO 8601 UTC
descriptionText, descriptionHtmlPlain text by default; HTML on request

A per-store summary (products found, matched, saved, errors) is stored in the run's key-value store as SUMMARY.

Pricing

Pay per result: $0.83 per 1,000 products, the same price on every Apify plan. A store or collection that can't be read (not a Shopify store, no products) is never charged, and the same store/collection is never charged twice in one run.

  • Watch 30 stores with 100 products each, weekly: 3,000 products/week → about $9.96/month.
  • Full export of a 5,000-product catalog → about $4.15.

Set a maximum cost per run in the run options and the Actor stops cleanly when it is reached.

Limits and notes

  • Only public storefronts on the Shopify platform are supported. An entry that isn't a live Shopify store is reported in SUMMARY as an error, not silently skipped.
  • A collection URL (/collections/<handle>) scrapes only that collection; a bare domain scrapes the whole catalog.
  • Prices are in the store's own currency as published (the feed does not include a currency code); compare prices only between stores that price in the same currency.
  • Descriptions are cleaned to plain text. E-mail addresses and phone numbers a merchant left in a description are removed by default.
  • No customer, order or checkout data is collected — product data only.
  • Each store's robots.txt is respected: if a store disallows automated access to its product feed, that store is skipped, reported in SUMMARY and not charged.

FAQ

Is it legal to scrape Shopify product listings? This Actor only reads the products.json feed every Shopify store publishes on purpose for its own storefront and third-party integrations. It checks each store's robots.txt first, doesn't log in, doesn't bypass any protection and doesn't collect personal or customer data. You are responsible for how you use the data; respect the store's terms if you republish listings.

Why did a store return 0 products? It may not be on Shopify, the domain may be wrong, the collection handle may not exist, or the store's robots.txt may disallow its product feed. Check SUMMARY for the exact error, or try the bare domain instead of a collection URL.

Can I limit the price range or only get in-stock items? Yes — set Minimum/maximum price and Only in-stock products in the input.

Can I use it from an AI agent? Yes, via the Apify MCP server or API. Pass stores as a list; results are the dataset items above.

Support

Open an issue on the Actor's Issues tab with the input you used and the run link — we reply within a few days.

Made by Glidepath. See the changelog for updates.