Shopify Store Product Scraper
Pricing
Pay per usage
Shopify Store Product Scraper
Extract every product from any Shopify store — title, price, variants, SKUs, availability, images — via the public products.json. No personal data.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
ScrapeForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 minutes ago
Last modified
Categories
Share
Shopify Product Scraper — Full Store Catalogs as Clean JSON
Launch pricing: this actor currently adds no fee — run it on your Apify free-plan credits. Try it, bookmark it, wire it into your stack.
A Shopify product scraper and Shopify store scraper in one: scrape Shopify products — full catalogs with variants, SKUs, prices, compare-at prices and availability — from any store. It's a Shopify products.json scraper, so it reads the store's own public JSON instead of fragile HTML, which makes it ideal for reliable Shopify price monitoring at daily-schedule quality.
One run, whole catalog: every product, every variant, every price — and multi-store runs skip dead stores instead of failing.
Who uses this
- Merchants & competitor watchers — diff a rival's prices and stock daily;
compareAtPricevspriceexposes live discounts. - Dropshipping & product researchers — analyze catalogs, price points and assortment depth across niches.
- Agencies & consultants — audit a client's (or prospect's) catalog structure, tags and image coverage in minutes.
- Data & AI teams — stable JSON for pipelines, LLM agents and enrichment jobs.
Watching big-box furniture prices too? The IKEA Product Scraper does the same for any IKEA country store.
How it works
For each store, the actor pages through the public /products.json endpoint (250 products per page) that Shopify exposes on virtually every storefront. No HTML parsing, no selectors to break. In multi-store runs, a store that fails or hides products.json is skipped with a warning — the run only fails if no store at all yields products.
Output
One record per product (variants array included):
{"store": "https://www.allbirds.com","productId": 7292464955472,"title": "Men's Cruiser - Shadow Blue (Natural White Sole)","handle": "mens-cruiser-shadow-blue-natural-white-sole","url": "https://www.allbirds.com/products/mens-cruiser-shadow-blue-natural-white-sole","vendor": "Allbirds","productType": "Shoes","tags": ["DNAM BRANDS", "EC STOCK"],"priceMin": 105,"priceMax": 105,"variantsCount": 13,"variants": [{ "variantId": 41990816759888, "title": "8", "sku": "A12856M080", "price": 105, "compareAtPrice": null, "available": true }],"image": "https://cdn.shopify.com/s/files/1/1104/4168/products/...","imagesCount": 6,"createdAt": "2023-01-11T10:20:11-05:00","updatedAt": "2026-07-14T22:03:41-04:00","scrapedAt": "2026-07-15T09:34:24.539Z"}
(variants truncated here for brevity — the dataset contains all 13, each with SKU, price, compare-at price and availability)
Input
| Field | Default | Description |
|---|---|---|
storeUrl | https://www.allbirds.com | A Shopify store homepage |
storeUrls | — | Additional stores — scrape many in one run |
maxProducts | 1000 | Stop after this many products across all stores |
The default run needs no configuration — an empty input scrapes the demo store.
Reliability & limits
- Depends on the store's public
products.json: the vast majority of Shopify stores expose it, but a store can disable it or sit behind a password page. Such stores are skipped (logged), and the run fails only when zero products came from all stores together. - Prices are per-variant;
priceMin/priceMaxsummarize the spread. Currency is the store's own currency (not converted). - Very large catalogs paginate at 250 products/page; raise
maxProductsaccordingly.
Paste this output into…
- Google Sheets —
=IMPORTDATA("https://api.apify.com/v2/acts/exuberant_volley~shopify-store-scraper/runs/last/dataset/items?format=csv&clean=1&token=YOUR_TOKEN&fields=store,title,vendor,productType,priceMin,priceMax,url,updatedAt")for a live catalog sheet. - Make / n8n — schedule daily, pull
.../runs/last/dataset/items, and route price changes to Slack or email. - Discount detector (merchants) — filter records where any variant has
compareAtPrice > price; that's the store's live sale list — pipe it to a Slack channel every morning.
ScrapeForge free data suite
One publisher, ten plug-and-play datasets — all currently free to run:
| Actor | What it delivers | |
|---|---|---|
| Executive Changes Tracker | New CEO/CFO/board moves from SEC 8-Ks + official newswires — source-cited B2B trigger leads | run it next → |
| IKEA Product Scraper | Names, prices, ratings and images from any IKEA search or category page | run it next → |
| Shopify Store Scraper | Any Shopify store's full catalog — variants, SKUs, prices — via products.json | run it next → |
| App Store Apps Scraper | App rankings, ratings, prices and metadata by keyword, any country | run it next → |
| Remote Jobs Scraper | Live remote listings from RemoteOK + Remotive, keyword-filtered | run it next → |
| CoinGecko Market Scraper | Top-coin prices, market caps and 24h moves — keyless | run it next → |
| GitHub Repositories Scraper | Repo search with stars, forks, topics and licenses | run it next → |
| Hacker News Scraper | Top/New/Best HN stories with scores and comment counts | run it next → |
| Wikipedia Scraper | Article summaries, images and URLs in any language — RAG-ready | run it next → |
| SEC EDGAR Filings Scraper | Any US public company's filing history by ticker | run it next → |
Compliance
- No personal data — product catalog only (titles, prices, variants, images), GDPR-safe.
- Reads only the store's own public
products.jsonendpoint — no logins, no cookies, no customer data. - Records live only in your run's dataset; the actor keeps nothing beyond it.