Shopify Store Scraper – Products, Prices & Variants avatar

Shopify Store Scraper – Products, Prices & Variants

Pricing

from $0.50 / 1,000 results

Go to Apify Store
Shopify Store Scraper – Products, Prices & Variants

Shopify Store Scraper – Products, Prices & Variants

Scrape any Shopify store's catalog: products, prices, compare-at prices, variants, SKUs, availability, images and tags. For price monitoring, competitor and dropshipping research.

Pricing

from $0.50 / 1,000 results

Rating

0.0

(0)

Developer

ninhothedev

ninhothedev

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

17 days ago

Last modified

Categories

Share

Shopify Store Scraper extracts the full product catalog from any Shopify store: product titles, prices (min/max), compare-at (sale) prices, variants, SKUs, availability, images, vendor, product type, tags, options (size, color...), descriptions and publish/update dates. Paste one or many store domains such as allbirds.com or gymshark.com, optionally limit the run to one collection, and export the products to JSON, CSV, Excel or Google Sheets. It reads each store's public products.json feed, so you don't need an API key, a Shopify login or proxies, and you pay only per product.

It's built for e-commerce teams, dropshippers, brands monitoring competitors, pricing analysts, marketplaces and agencies that need clean Shopify product data at scale.

What data can you extract?

Each product becomes one dataset row:

FieldExampleDescription
storeallbirds.comStore domain
id7340901859408Shopify product ID
titleWomen's Allbirds Flip Flop - Dusty PinkProduct name
handlewomens-allbirds-flip-flop-dusty-pinkURL handle (slug)
urlhttps://allbirds.com/products/womens-allbirds-flip-flop-dusty-pinkProduct page URL
vendorAllbirdsBrand / vendor
product_typeShoesShopify product type
tags["allbirds::gender => womens", ...]Product tags
price_min / price_max25.0 / 25.0Lowest and highest variant price
availabletruetrue if at least one variant can be bought
variants[{"id": "42146889039952", "title": "5", "price": "25.00", "sku": "A12513W050", "available": false, "compare_at_price": "50.00"}]Every variant with price, SKU, availability and compare-at price
images["https://cdn.shopify.com/s/files/..."]All product image URLs
options[{"name": "Size", "values": ["5", "6", "7"]}]Option names and values (size, color, material...)
descriptionSun on your feet. Comfort underneath...Description as plain text (HTML removed, max 5,000 characters)
created_at / updated_at / published_at2026-03-27T14:03:50-07:00Product timestamps from Shopify
scraped_at2026-10-15T18:04:55+00:00UTC time of the scrape

How to use Shopify Store Scraper

  1. Add one or more Shopify stores under Store URLs. Bare domains (allbirds.com), full URLs (https://www.gymshark.com) and product or collection page URLs all work, because only the domain is used.
  2. Optionally enter a Collection handle (for example mens from /collections/mens) to scrape just that collection, and set Max products per store.
  3. Click Start and download the products as JSON, CSV or Excel, or connect the dataset to Google Sheets, Make, Zapier or n8n. Use Schedules for daily or weekly price monitoring.

Example input:

{
"storeUrls": ["allbirds.com", "https://www.gymshark.com"],
"collectionHandle": "",
"maxItemsPerStore": 1000
}

The actor pages through the catalog 250 products at a time until the store runs out of products or your limit is reached. If one store fails (not a Shopify store, or products.json is blocked), it's skipped and logged, and the other stores still deliver results.

Output example

Real output from a local test run with the default input (allbirds.com). Variants, images and tags are shortened:

{
"store": "allbirds.com",
"id": "7340901859408",
"title": "Women's Allbirds Flip Flop - Dusty Pink",
"handle": "womens-allbirds-flip-flop-dusty-pink",
"url": "https://allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
"vendor": "Allbirds",
"product_type": "Shoes",
"tags": ["allbirds::edition => limited", "allbirds::gender => womens", "allbirds::hue => pink"],
"created_at": "2026-03-27T14:03:50-07:00",
"updated_at": "2026-10-15T11:04:55-07:00",
"published_at": "2026-09-25T16:58:13-07:00",
"price_min": 25.0,
"price_max": 25.0,
"available": true,
"variants": [
{
"id": "42146889039952",
"title": "5",
"price": "25.00",
"sku": "A12513W050",
"available": false,
"compare_at_price": "50.00"
}
],
"images": [
"https://cdn.shopify.com/s/files/1/1104/4168/files/A12513_26Q2_Allbirds-Flip-Flop-Dusty-Pink_PDP_LEFT.png?v=1774646345"
],
"options": [{ "name": "Size", "values": ["5", "6", "7", "8", "9", "10", "11"] }],
"description": "Sun on your feet. Comfort underneath. Light, easy, and made for warm weather, these flip flops bring everyday comfort to sunny days, beach walks, and everything in between. Just slip them on and go.",
"scraped_at": "2026-10-15T18:04:55.891868+00:00"
}

Pricing

This actor uses pay-per-event pricing. You pay per product, and variants and images are included at no extra cost:

  • $0.0005 per product (= $0.50 per 1,000 products)
  • $0.00005 per actor start

Examples:

ScenarioProductsCost
One store, default limit250≈ $0.13
Full catalog of a mid-size store2,000≈ $1.00
20 competitor stores × 500 products10,000≈ $5.00
10 stores × 500 products, scraped weekly (4 runs/month)20,000≈ $10.00

There are no proxy or third-party API costs. To cap spend, use Max products per store, a Collection handle, or Apify's maximum cost per run.

Use cases

  • Competitor price monitoring: scrape rival stores daily and track price_min, compare_at_price and availability to spot discounts and stock-outs.
  • Dropshipping and product research: find bestselling product types, vendors and price points in any niche.
  • Assortment and catalog analysis: compare product counts, product types, options and launch dates (published_at) across brands.
  • Product feeds and catalog migration: export a store's products, variants, SKUs and images for marketplaces, PIM systems or a store migration.
  • Brand protection and MAP compliance: check how retailers price and describe your products.
  • Lead generation for agencies and apps: qualify Shopify merchants by catalog size, vendors and categories.

Integrations and API

You can run the Shopify scraper from the Apify API, the Apify CLI, or integrations like Make, Zapier, n8n, Google Sheets, Slack, Airbyte and webhooks. A typical setup is a daily schedule that writes products to Google Sheets or a database, plus a webhook or Make/Zapier filter that alerts you when a competitor's price changes.

Python example with the official apify-client:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("ninhothedev/shopify-store-scraper").call(
run_input={"storeUrls": ["allbirds.com", "gymshark.com"], "maxItemsPerStore": 500}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["store"], item["title"], item["price_min"], item["available"], len(item["variants"]))

FAQ

Is it legal to scrape Shopify stores? The actor reads only public product data that each Shopify store publishes through its products.json endpoint, the same data shown on its product pages. It does not access customer data, orders or admin areas. You're responsible for complying with each store's terms and the laws that apply to you.

Which stores work? Any store running on Shopify that exposes products.json, which most stores do. Non-Shopify sites, and stores that block the endpoint, are skipped and reported in the log.

How many products can I get? Up to 10,000 products per store per run (set with Max products per store). There's no limit on the number of stores.

Which currency are prices in? The store's default currency, as published in products.json. The output has no separate currency field, so check the store if it sells in several currencies.

Does it return inventory quantities or sales numbers? No. Shopify doesn't publish those. You get availability per variant (available: true/false), not exact stock levels.

Do I need proxies? No. The actor uses plain HTTPS requests with no proxy costs.

Can I scrape a single collection? Yes. Enter the collection handle (the part after /collections/ in the URL), and the actor scrapes only that collection in every store you listed.

Something doesn't work? Open an issue on the actor's Issues tab with your run ID and the store URL. We usually respond within a day.