Shopify Store Product Scraper avatar

Shopify Store Product Scraper

Pricing

Pay per usage

Go to Apify Store
Shopify Store Product Scraper

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

ScrapeForge

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 minutes ago

Last modified

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; compareAtPrice vs price exposes 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

FieldDefaultDescription
storeUrlhttps://www.allbirds.comA Shopify store homepage
storeUrlsAdditional stores — scrape many in one run
maxProducts1000Stop 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/priceMax summarize the spread. Currency is the store's own currency (not converted).
  • Very large catalogs paginate at 250 products/page; raise maxProducts accordingly.

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:

ActorWhat it delivers
Executive Changes TrackerNew CEO/CFO/board moves from SEC 8-Ks + official newswires — source-cited B2B trigger leadsrun it next →
IKEA Product ScraperNames, prices, ratings and images from any IKEA search or category pagerun it next →
Shopify Store ScraperAny Shopify store's full catalog — variants, SKUs, prices — via products.jsonrun it next →
App Store Apps ScraperApp rankings, ratings, prices and metadata by keyword, any countryrun it next →
Remote Jobs ScraperLive remote listings from RemoteOK + Remotive, keyword-filteredrun it next →
CoinGecko Market ScraperTop-coin prices, market caps and 24h moves — keylessrun it next →
GitHub Repositories ScraperRepo search with stars, forks, topics and licensesrun it next →
Hacker News ScraperTop/New/Best HN stories with scores and comment countsrun it next →
Wikipedia ScraperArticle summaries, images and URLs in any language — RAG-readyrun it next →
SEC EDGAR Filings ScraperAny US public company's filing history by tickerrun it next →

Compliance

  • No personal data — product catalog only (titles, prices, variants, images), GDPR-safe.
  • Reads only the store's own public products.json endpoint — no logins, no cookies, no customer data.
  • Records live only in your run's dataset; the actor keeps nothing beyond it.