Shopify Store & Product Scraper: Variants, Prices, Store Leads
Pricing
Pay per event
Shopify Store & Product Scraper: Variants, Prices, Store Leads
Scrape Shopify product catalogs (/products.json), variants, discounts, stock status, and B2B store lead profiles (installed apps, theme, socials) with zero login.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Almandine Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Scrape Shopify product catalogs (/products.json), variants, discounts, stock status, and B2B store lead profiles (installed apps, theme, socials) with zero login.
What it does
Extracts complete Shopify product catalogs, variant SKUs/pricing, and enriched B2B store lead intelligence via public storefront JSON feeds and headers. Export clean, deduplicated data as JSON, CSV, Excel, XML, or RSS, or connect directly via the Apify REST API, Python/JavaScript SDKs, CLI, MCP Server, n8n, Make, or Zapier — with no login, cookies, or browser overhead.
Use cases
- Competitor Price, Discount & SKU Monitoring: Track
priceMin,priceMax,compareAtPriceMax,discountPct, and variant-level stock availability (inStock) across any competitor Shopify store. - B2B Shopify Merchant Lead Generation: Use
mode: "both"or"store_profile"to extract merchantcurrency,storeThemeName, detected Shopify apps (Klaviyo,Yotpo,Judge.me,Recharge,Gorgias,Attentive), and social links. - Dropshipping, Wholesale & Catalog Aggregation: Pull clean product titles, descriptions, high-resolution images (
imageUrl), tags, and option matrices directly into Google Sheets, BigQuery, or Shopify CSV imports. - Automated New-Product Alerts: Schedule daily runs with
onlyNew: trueto receive Slack/email alerts the moment a brand launches a new product or collection.
Why use this scraper?
| Feature | This Actor | Generic Browser / HTML Scrapers |
|---|---|---|
| Architecture | Direct structured API / JSON / feed requests (curl_cffi) | Heavy headless browser automation |
| Speed & reliability | 2–25 seconds for 50–200 items | Minutes of high compute burn |
| Pricing model | Pay per result ($0.00 actor-start fee) | Monthly rental or high CU overhead |
| Error handling | Failed inputs logged in ERRORS key-value record and never charged | Bills compute time even on failures |
Input parameters
- Shopify store URLs or domains (
stores,array): Shopify store URLs or bare domains (e.g. 'https://www.allbirds.com', 'ridge.com'). - Extraction mode (
mode,string): Emit normalized product catalog rows ('products'), enriched store lead profile rows ('store_profile'), or both ('both'). - Keyword filter (optional) (
search,string): Optional case-insensitive keyword filter across product title, product type, vendor, and tags. - Collection handle (optional) (
collectionHandle,string): Optional Shopify collection slug (e.g. 'mens', 'best-sellers') to query /collections/{handle}/products.json. - In-stock products only (
inStockOnly,boolean): Emit only products where at least one variant has available=true. - Discounted / on-sale products only (
onSaleOnly,boolean): Emit only products where compareAtPriceMax > priceMin. - Only new products (
onlyNew,boolean): Remember seen product IDs across runs in Key-Value Store and emit only newly added products. - Max products per store (
maxProductsPerStore,integer): Maximum number of products to extract per Shopify store. - Delay between requests (
delaySeconds,number): Polite pause between requests (default0.4).
Example input
{"stores": ["https://www.allbirds.com","https://www.brooklinen.com","https://ridge.com"],"mode": "both","maxProductsPerStore": 30}
Output & example output
One dataset row per result. Default table view columns: recordType, storeDomain, title, vendor, productType, priceMin, compareAtPriceMax, discountPct, inStock, variantsCount, publishedAt, url. Full structured JSON is stored in the run's default dataset.
Example output item
{"recordType": "product","storeDomain": "www.allbirds.com","storeName": "Allbirds","currency": "USD","productId": "7340901859408","title": "Women's Allbirds Flip Flop - Dusty Pink","handle": "womens-allbirds-flip-flop-dusty-pink","url": "https://www.allbirds.com/products/womens-allbirds-flip-flop-dusty-pink","vendor": "Allbirds","productType": "Shoes","priceMin": 25.0,"priceMax": 25.0,"compareAtPriceMax": 50.0,"discountPct": 50.0,"inStock": true,"variantsCount": 7,"variants": [{"id": 42146889039952,"title": "5","sku": "A12513W050","price": 25.0,"compareAtPrice": 50.0,"available": false,"option1": "5","option2": null},{"id": 42146889072720,"title": "6","sku": "A12513W060","price": 25.0,"compareAtPrice": 50.0,"available": false,"option1": "6","option2": null},{"id": 42146889105488,"title": "7","sku": "A12513W070","price": 25.0,"compareAtPrice": 50.0,"available": false,"option1": "7","option2": null}],"tags": ["allbirds::carbon-score => undefined","allbirds::cfId => color-a4d5d0f6620dc304306f503bf67bc5f9","allbirds::complete => true"],"imageUrl": "https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_26Q2_Allbirds-Flip-Flop-Dusty-Pink_PDP_LEFT.png?v=1774646345","imagesCount": 5,"publishedAt": "2026-09-25T16:58:13-07:00","updatedAt": "2026-10-25T04:44:28-07:00","storeThemeName": "[DNAM Theme July 2026]","installedApps": ["Attentive","Elevar","Google Tag Manager"],"socialLinks": {"instagram": "https://www.instagram.com/allbirds","tiktok": "https://www.tiktok.com/@weareallbirds","facebook": "https://www.facebook.com/weareallbirds","twitter": "https://twitter.com/allbirds","youtube": "https://www.youtube.com/channel/UCnGErLCau5qNJ0Xwe6uEyTw","pinterest": "http://pinterest.com/weareallbirds"},"scrapedAt": "2026-10-25T11:44:27+00:00"}
Pricing (Pay-Per-Result)
This Actor uses transparent Pay-Per-Event pricing with a $0.00 actor-start fee:
| Event | What is charged | Price |
|---|---|---|
product-result | Shopify product scraped (One normalized Shopify product record with variants, prices & availability) | $0.0015 / result ($1.50 / 1,000 results) |
store-result | Shopify store profile scraped (One enriched B2B Shopify store lead profile with installed apps, theme & socials) | $0.005 / result ($5.00 / 1,000 results) |
apify-actor-start | Actor start fee | $0.00 |
Concrete pricing math
product-result(Shopify product scraped):1,000 results = $1.50(50 results = $0.07,10,000 results = $15.00). Apify's $5.00/month Free Tier covers up to 3,333 results/month at $0.00 out-of-pocket.store-result(Shopify store profile scraped):1,000 results = $5.00(50 results = $0.25,10,000 results = $50.00). Apify's $5.00/month Free Tier covers up to 1,000 results/month at $0.00 out-of-pocket.- Empty runs (
0results) & skipped duplicates (onlyNew/onlyChanged): $0.00.
Data and compliance
Public Shopify storefront catalog feeds (/products.json, /collections.json) and homepage headers only. Respects Shopify robots.txt; zero customer PII. Requests are rate-limited and routed through Apify Proxy. Per-input errors are recorded in the run's ERRORS key-value record and are never charged.
FAQ
Do I need an account, login, or API key?
No. This Actor queries public endpoints directly and requires zero credentials.
What happens if I start a run with empty {} input via API or CLI?
Every required input defines both prefill and default values in .actor/input_schema.json, so an empty {} run automatically returns 50+ live records out of the box.