Shopify Scraper — Products, Collections, Reviews & Emails avatar

Shopify Scraper — Products, Collections, Reviews & Emails

Pricing

from $3.00 / 1,000 product scrapeds

Go to Apify Store
Shopify Scraper — Products, Collections, Reviews & Emails

Shopify Scraper — Products, Collections, Reviews & Emails

Extract Shopify products, collections, reviews & merchant emails from any store. No login required. CRM-ready JSON. Export scraped data, run via API, schedule and monitor runs, or integrate with other tools.

Pricing

from $3.00 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

1

Monthly active users

a day ago

Last modified

Share

🛍️ Shopify All-in-One Scraper — Products, Collections, Reviews & Emails

Extract products, collections, customer reviews, and merchant contact info from any Shopify store in a single run. No login, no API keys, no cookies required. Uses Shopify's public JSON endpoints for maximum reliability and speed.

The only Shopify scraper that combines all four data types in one actor — and charges you separately for each so you only pay for what you use.


What It Extracts

Products (record_type: "product")

Every product from any Shopify store's public catalog:

  • Pricing: current price, compare-at price, discount percentage calculated automatically
  • Variants: every size/color/option combination with per-variant price, stock status, SKU, barcode, and inventory quantity
  • Images: all product image URLs in order
  • Metadata: title, vendor/brand, product type, tags, full description (HTML stripped to plain text)
  • Stock: real-time availability status per variant
  • Dates: created, updated, and published timestamps

Collections (record_type: "collection")

All product categories/collections from the store:

  • Collection ID, handle, and title
  • Description (HTML stripped)
  • Hero image URL
  • Product count per collection

Customer Reviews (record_type: "review")

Reviews extracted directly from the store's review app. Supports auto-detection of:

  • Judge.me — the most widely used Shopify review app
  • Yotpo — enterprise-grade review platform

Extracted fields: reviewer name, title, body, star rating (1–5), date, verified buyer status, helpful votes.

Merchant Contact Info (record_type: "contact")

Live-scraped contact data from each store's public pages (not a static database):

  • Business email and phone number from the contact page
  • Social media links: Instagram, Facebook, Twitter/X, TikTok, YouTube
  • Store name, currency, and language
  • Physical address (where publicly displayed)

Why Use This Over Alternatives?

FeatureThis Actorwebdatalabs ($0.01/product)xmiso (static DB)
Products + variants
Collections
Customer reviews
Live merchant emailsStatic/stale
Social media links
Price per product$0.003$0.01N/A
No login required
Batch scraping

Input Parameters

ParameterTypeDefaultDescription
storeUrlsstring[]["allbirds.com"]Shopify store URLs or domains to scrape
scrapeProductsbooleantrueExtract all products
scrapeCollectionsbooleanfalseExtract product collections
scrapeReviewsbooleanfalseExtract customer reviews (Judge.me, Yotpo)
scrapeContactInfobooleanfalseExtract merchant email, phone, social links
maxProductsPerStoreinteger100Max products per store (0 = full catalog)
maxReviewsPerProductinteger50Max reviews per product

Example Input

{
"storeUrls": ["gymshark.com", "allbirds.com"],
"scrapeProducts": true,
"scrapeCollections": true,
"scrapeReviews": false,
"scrapeContactInfo": true,
"maxProductsPerStore": 500
}

Output Format

All records share a common schema with a record_type discriminator field. Filter by record_type to get the data you need.

Product Record Example

{
"record_type": "product",
"store_url": "https://www.allbirds.com",
"store_domain": "www.allbirds.com",
"product_id": "7234567890",
"product_handle": "mens-wool-runners",
"product_url": "https://www.allbirds.com/products/mens-wool-runners",
"title": "Men's Wool Runners",
"vendor": "Allbirds",
"product_type": "Shoes",
"tags": ["mens", "running", "wool", "sustainable"],
"description": "The world's most comfortable shoes, made with superfine merino wool.",
"price": 120.0,
"compare_at_price": null,
"discount_percentage": null,
"currency": "USD",
"available": true,
"variants_count": 14,
"variants": [
{
"variant_id": "41234567890",
"title": "8 / Medium Grey",
"sku": "M-WR-8-MGR",
"price": 120.0,
"available": true,
"option1": "8",
"option2": "Medium Grey"
}
],
"image_url": "https://cdn.shopify.com/s/files/1/...",
"sku": "M-WR-8-MGR",
"review_platform": "yotpo",
"review_rating": 4.8,
"review_count": 2341,
"created_at": "2023-06-01T00:00:00Z",
"scraped_at": "2026-04-03T10:30:00.000Z",
"source_url": "https://www.allbirds.com/products.json?limit=250&page=1"
}

Contact Record Example

{
"record_type": "contact",
"store_url": "https://www.gymshark.com",
"store_domain": "www.gymshark.com",
"merchant_name": "Gymshark",
"merchant_email": "hello@gymshark.com",
"merchant_phone": "+44 1234 567890",
"store_currency": "GBP",
"store_language": "en",
"social_instagram": "https://www.instagram.com/gymshark/",
"social_facebook": "https://www.facebook.com/gymshark",
"social_twitter": "https://twitter.com/gymshark",
"social_tiktok": "https://www.tiktok.com/@gymshark",
"social_youtube": "https://www.youtube.com/@Gymshark",
"contact_page_url": "https://www.gymshark.com/pages/contact",
"scraped_at": "2026-04-03T10:30:00.000Z"
}

Pricing

This actor uses Pay-Per-Event pricing — you only pay for what you actually extract.

EventPriceNotes
Product scraped$0.003Per product, all variants included
Collection scraped$0.001Per collection
Review scraped$0.001Per individual review
Contact info scraped$0.005Per store (one charge covers all fields)

Cost Examples

TaskUnitsCost
Scrape 100 products100 products$0.30
Scrape 1,000 products1,000 products$3.00
Full catalog of 5,000 products5,000 products$15.00
Scrape 50 stores for contact info50 stores$0.25
1,000 reviews1,000 reviews$1.00

Apify takes 20% platform fee — you keep 80% of revenue generated.


Use Cases

Competitor Price Monitoring — Track pricing changes across competitor Shopify stores. Run on a schedule and monitor discount patterns, new arrivals, and sold-out products.

Dropshipping Product Research — Identify trending products, winning price points, and inventory levels across Shopify stores in your niche.

B2B Lead Generation — Scrape merchant emails, phones, and social links from Shopify stores in specific categories. Build targeted outreach lists for apps, services, or agencies targeting Shopify merchants.

Market Research — Analyze full product catalogs to understand market pricing, category structures, and brand positioning.

Review Sentiment Analysis — Extract customer reviews for NLP analysis, product improvement insights, or competitive intelligence.

Price Comparison Sites — Aggregate product data from multiple Shopify stores to power a comparison engine.


Using via API

const ApifyClient = require('apify-client');
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('khadinakbar/shopify-all-in-one-scraper').call({
storeUrls: ['gymshark.com', 'allbirds.com'],
scrapeProducts: true,
scrapeContactInfo: true,
maxProductsPerStore: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const products = items.filter(r => r.record_type === 'product');
const contacts = items.filter(r => r.record_type === 'contact');
console.log(`Got ${products.length} products and ${contacts.length} contacts`);
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("khadinakbar/shopify-all-in-one-scraper").call(run_input={
"storeUrls": ["gymshark.com"],
"scrapeProducts": True,
"maxProductsPerStore": 500,
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
products = [r for r in items if r["record_type"] == "product"]

How It Works

This actor uses Shopify's public JSON API endpoints that every Shopify store exposes:

  • /products.json?limit=250&page=N — paginated product catalog
  • /collections.json?limit=250 — all collections
  • /meta.json — store metadata (name, currency, language)
  • /pages/contact and /contact — contact information
  • / — homepage (social links)

For reviews, it detects the installed review app from script tags on the store's homepage, then calls the review platform's public widget API.

No browser automation is used — all requests are plain HTTP, making this actor fast, lightweight, and highly reliable (99%+ success rate on public stores).


Limitations

  • Only works with public Shopify stores (password-protected stores are skipped with a clear log message)
  • Reviews require the store to use Judge.me or Yotpo; other platforms (Stamped, Okendo, Loox) detected but not yet scraped — contact us to request
  • Inventory quantities may show -1 on stores that don't track inventory levels by variant
  • Contact email/phone availability depends on the store displaying it publicly

Frequently Asked Questions

Does this require a Shopify account or API key? No. This actor uses Shopify's public JSON API, which every Shopify store exposes. No login, cookies, or API keys needed.

Can I scrape multiple stores in one run? Yes. Add as many store URLs as you need to storeUrls. Each store is processed sequentially.

How do I scrape a full product catalog? Set maxProductsPerStore to 0 for unlimited scraping.

What if a store is password-protected? The actor detects this automatically and skips the store with a warning in the logs. Only public storefront data is accessible.

Why is my contact email sometimes missing? Not every store displays their contact email publicly. Some stores only show a contact form. The actor will still return all other available data.

Works great with: 🔗 Google Maps Scraper | 📊 LinkedIn Jobs Scraper


Export scraped data, run the scraper via API, schedule and monitor runs, or integrate with other tools using Apify's platform features.