Shopify Products Scraper — Full Store Catalogs
Pricing
from $1.00 / 1,000 product scrapeds
Shopify Products Scraper — Full Store Catalogs
Scrape any Shopify store's complete product catalog without API keys: titles, prices, variants, SKUs, images, tags and availability as clean JSON. Ideal for price monitoring, dropshipping and competitor research.
Pricing
from $1.00 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
Oaida Adrian
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape the complete product catalog of any Shopify store — no API key, no login, no proxy. Just paste store URLs and get clean, structured JSON: titles, prices, variants, SKUs, stock flags, images and tags.
What it does
- Works on any Shopify-powered store (millions of them: fashion, beauty, electronics, supplements, home goods…)
- Extracts titles, descriptions, vendors, product types and tags
- Full variant data: SKU, price, compare-at price, stock availability, weight
- All product images with per-product image counts
- Price range per product (
priceMin/priceMax) and in-stock flag - Handles pagination automatically (up to 100,000 products per store)
- Resilient fetching — browser-grade TLS fingerprinting rides through the bot walls that block plain HTTP scrapers (added Jul 2026)
- Returns product creation/update/publish timestamps for change tracking
Use cases
- Price monitoring — track competitor pricing and discounts over time (run it daily on a Schedule)
- Dropshipping research — find winning products and suppliers
- Competitor analysis — full catalog snapshots of any store in your niche
- Market research — assortment breadth, price positioning, stock levels
- Feed generation — build product feeds for ads or affiliate sites
- Brand protection — spot unauthorized resellers carrying your SKUs
Input
{"storeUrls": ["allbirds.com", "https://colourpop.com"],"maxProductsPerStore": 100}
| Field | Type | Default | Description |
|---|---|---|---|
storeUrls | array | required | Store domains or URLs — bare domain, homepage, or any deep link; the store is resolved automatically |
maxProductsPerStore | integer | 100 | Cap per store, up to 100,000 |
Output
One dataset item per product:
{"storeDomain": "allbirds.com","productId": 7292464955472,"title": "Men's Cruiser - Shadow Blue","handle": "mens-cruiser-shadow-blue","productUrl": "https://allbirds.com/products/mens-cruiser-shadow-blue","description": "Lightweight everyday sneaker made from merino wool.","vendor": "Allbirds","productType": "Shoes","tags": ["mens", "sneakers"],"priceMin": 120.0,"priceMax": 120.0,"available": true,"variantCount": 14,"variants": [{"id": 43220960985376,"title": "US 9 / Shadow Blue","sku": "A11449M080","price": 120.0,"compareAtPrice": null,"available": true,"grams": 340}],"imageUrls": ["https://cdn.shopify.com/s/files/1/1104/4168/products/...jpg"],"imageCount": 6,"createdAt": "2024-08-28T10:00:00-07:00","updatedAt": "2024-09-01T14:12:00-07:00","publishedAt": "2024-08-28T10:00:00-07:00"}
Every run's dataset exports as JSON, CSV, Excel or XML from Apify Console or the API. The variants array carries the full per-option breakdown (title, price, compareAtPrice, available, sku, grams) — ideal for inventory-style analysis without hitting the storefront again.
Real example — a 3-store price watch
Input:
{"storeUrls": ["allbirds.com", "colourpop.com", "gymshark.com"],"maxProductsPerStore": 500}
Output: ~1,400 products across the three stores, each with live prices, availability and SKUs. Schedule this daily and you have a competitor price-tracking table — join on handle or sku to detect price drops, restocks and discontinued lines. At $0.001/product the whole daily snapshot costs about $1.40 in event fees.
Run it on a schedule or from your code
Point a Schedule at your competitor list for daily price snapshots, or call it from anywhere:
curl -X POST "https://api.apify.com/v2/acts/darknezz~shopify-products-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"storeUrls": ["allbirds.com"], "maxProductsPerStore": 200}'
The call returns the products directly as JSON — ideal for piping into a price tracker, spreadsheet, or LLM pipeline. Also available through the Apify SDK (Python/JS), Zapier/Make, and MCP-enabled AI agents.
# Python SDKfrom apify_client import ApifyClientclient = ApifyClient("YOUR_TOKEN")result = client.actor("darknezz~shopify-products-scraper").call(run_input={"storeUrls": ["allbirds.com"], "maxProductsPerStore": 200})items = client.dataset(result["defaultDatasetId"]).list_items().items
Pricing
Pay-per-event: $0.001 per product scraped, plus Apify's standard compute. A full 1,000-product catalog snapshot costs about $1 in event fees. No subscription, no minimum — you only pay for what you actually extract.
FAQ
How do I find out if a store runs on Shopify? Just try it — if the domain isn't a Shopify storefront the Actor logs it and moves on. (Checkout on myshopify.com, cdn.shopify.com assets, or a /products.json endpoint are the usual tells.)
Does it get sales numbers or product costs? No — those are private to the merchant. Everything public in the catalog (prices, variants, stock flags, images) is extracted.
What about collections or a single product? Paste any URL from the store — the Actor resolves the store and scrapes its catalog; use maxProductsPerStore to bound the run.
Which currency are prices in? The store's default storefront currency, exactly as the shop publishes it.
Can a store block scraping? A small minority disable the public catalog endpoint or password-protect the storefront — those stores are logged and skipped, never failing your whole run. Anti-bot walls (Cloudflare and similar) are handled by the browser-fingerprint fetcher, which survived the mid-2026 wave of plain-HTTP blocking.
How fresh is the data? Scraped live at run time. Schedule daily or hourly runs for time-series price tracking.
Does it respect maxProductsPerStore exactly? Yes — it stops pulling new pages for a store once the cap is reached, so you can bound cost tightly on large catalogs.
Can I track stock-outs? Yes. The available flag and per-variant available fields are live at scrape time; run twice daily and diff on productId to build a restock alert feed.
Limits & reliability
- Up to 100,000 products per store per run
- Multiple stores per run supported; failed stores are skipped, not fatal
- Resilient to rate limiting via the TLS-fingerprint fetch layer
- Retries on transient network errors with backoff