Shopify Product Scraper — Prices, Variants & CSV Export avatar

Shopify Product Scraper — Prices, Variants & CSV Export

Pricing

from $7.00 / 1,000 product scrapeds

Go to Apify Store
Shopify Product Scraper — Prices, Variants & CSV Export

Shopify Product Scraper — Prices, Variants & CSV Export

Export Shopify products from any public store: prices, compare-at discounts, variants, SKUs, stock flags, images and ratings. USD 10 per 1,000 products.

Pricing

from $7.00 / 1,000 product scrapeds

Rating

1.0

(1)

Developer

Muhammad Afzal

Muhammad Afzal

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

2

Monthly active users

a day ago

Last modified

Categories

Share

Shopify Product Scraper exports the product catalog of any public Shopify store: one record per product with title, brand, category, tags, description, current and compare-at price, discount, availability, every variant with SKU and price, images, and optional rating and review count. It is built for price monitoring, dropshipping and competitor research, and catalog migration, and it costs USD 10 per 1,000 products on the FREE tier (USD 7 on GOLD).

What does the Shopify product scraper return?

Each dataset row is one product. Results export from Apify as JSON, CSV, Excel or XML.

FieldWhat it contains
store_url, product_urlStore origin and the product page URL
product_id, handle, titleShopify product ID, URL handle and name
brand, category, tagsVendor, product type and tag list
descriptionProduct description as plain text
current_price, original_priceLowest variant price and highest compare-at price
min_price, max_price, discount_percentageVariant price range and discount versus compare-at price
available, fully_out_of_stockWhether at least one variant can be bought, or none
requires_shippingWhether any variant needs shipping
variant_count, options, variantsNumber of variants, option names such as Size, and up to 250 variants with variant_id, title, sku, barcode, price, compare_at_price, available and option1–option3
image_count, main_image, images, image_alt_textsProduct images and their alt texts
rating, review_count, review_sourceAggregate rating when the product page publishes one (json-ld or review-widget), otherwise null
estimated_monthly_sales, sales_estimate_basisA rough estimate derived from review_count (see below)
currencyCurrency read from the product page, when available
published_at, created_at, updated_atShopify timestamps
scraped_at, source_urlCollection time and the catalog page that was read

Public storefront catalogs do not publish stock counts or weights, so the variant fields inventory_quantity, weight and weight_unit are usually null. Use available as the stock signal.

The run summary is saved as SUMMARY in the key-value store: mode, stores requested, products scraped and whether a charge limit stopped the run.

How do I export all products from a Shopify store?

Enter the store's homepage and a product limit. Any page URL from the store works too, because it is reduced to the store origin.

{ "mode": "url", "storeUrls": [{ "url": "https://www.allbirds.com" }], "maxProducts": 500 }

The Actor reads the store's public product catalog 250 products at a time until it reaches maxProducts (1 to 10,000 per store, default 100) or the end of the catalog. It stops early if the store starts repeating the same page, so you never pay for duplicates. A store that is password protected or has its public catalog switched off returns no products and is skipped with a warning.

Can I scrape several Shopify stores or find stores by niche?

Yes. Add several entries to storeUrls; maxProducts applies to each store separately. Duplicate stores are removed.

{ "storeUrls": [{ "url": "https://www.allbirds.com" }, { "url": "https://www.brooklinen.com" }], "maxProducts": 100 }

Discovery mode collects store domains from a public Shopify store directory, then scrapes each one. Set category (for example fashion, skincare, pets), maxStores (default 100) and maxPages (default 10). Discovery depends on that directory's listings, so check the first results before running it at scale.

{ "mode": "discovery", "category": "skincare", "maxStores": 10, "maxPages": 2, "maxProducts": 25 }

How are ratings and estimated sales calculated?

With includeReviews on (the default), the Actor opens each product page and reads the aggregate rating from Product JSON-LD markup or from common review-widget data attributes. Many stores publish neither, and then rating and review_count are null. estimated_monthly_sales is review count ÷ reviewConversionRate (default 0.02) ÷ 12 × 0.6. It is a rough heuristic for comparing products, not real sales data. Turn includeReviews off for faster catalog-only runs; currency is then null too.

When should I use it, and when not?

Use it when you need a clean product and price table from Shopify stores: tracking competitor prices and discounts, spotting sold-out products, sourcing products for dropshipping, or moving a catalog into another system.

Use another Actor when:

  • You also need store contacts (email, phone, social links), collections, individual customer reviews, or installed apps and theme: Shopify Store Scraper.
  • You need marketplace listings instead of a brand's own store: eBay Scraper.
  • The store is not on Shopify: the Actor only reads Shopify's public catalog format.

How do I run it from code?

JavaScript with apify-client:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('muhammadafzal/shopify-product-scraper').call({
storeUrls: [{ url: 'https://www.allbirds.com' }],
maxProducts: 50,
includeReviews: false,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
for (const p of items) console.log(p.title, p.current_price, p.original_price, p.available);

Python with apify-client:

import os
from apify_client import ApifyClient
client = ApifyClient(os.environ["APIFY_TOKEN"])
run = client.actor("muhammadafzal/shopify-product-scraper").call(run_input={
"storeUrls": [{"url": "https://www.allbirds.com"}],
"maxProducts": 50,
})
for p in client.dataset(run.default_dataset_id).iterate_items():
print(p["title"], p["current_price"], p["discount_percentage"], p["variant_count"])

Use it from an AI assistant

Shopify Product Scraper works from Claude, ChatGPT, Cursor or any MCP client through Apify's MCP server. Add the single-tool URL https://mcp.apify.com/?tools=muhammadafzal/shopify-product-scraper to your client and ask, for example: "Export the first 100 products from allbirds.com with prices and discounts, and list the ones currently on sale." Each product is charged at the prices below, so give the assistant a product limit.

What does the output look like?

Two records mapped from Allbirds' public catalog on 2026-10-26 (shortened):

[
{
"store_url": "https://www.allbirds.com",
"product_id": "7340901859408",
"title": "Women's Allbirds Flip Flop - Dusty Pink",
"handle": "womens-allbirds-flip-flop-dusty-pink",
"brand": "Allbirds",
"category": "Shoes",
"product_url": "https://www.allbirds.com/products/womens-allbirds-flip-flop-dusty-pink",
"current_price": 25,
"original_price": 50,
"discount_percentage": 50,
"available": true,
"fully_out_of_stock": false,
"variant_count": 7,
"options": ["Size"],
"variants": [
{ "variant_id": "42146889039952", "title": "5", "sku": "A12513W050", "price": 25, "compare_at_price": 50, "available": false, "inventory_quantity": null }
],
"image_count": 5,
"source_url": "https://www.allbirds.com/products.json?limit=250&page=1"
},
{
"store_url": "https://www.allbirds.com",
"product_id": "7258385809488",
"title": "Men's Canvas Runner NZ - Deep Navy Stripes (Blizzard Sole)",
"brand": "Allbirds",
"category": "Shoes",
"product_url": "https://www.allbirds.com/products/mens-canvas-runner-nz",
"current_price": 100,
"original_price": null,
"discount_percentage": null,
"available": true,
"variant_count": 13,
"options": ["Size"],
"rating": null,
"review_count": null,
"currency": "USD",
"updated_at": "2026-10-26T07:44:37-07:00"
}
]

How much does Shopify product data cost?

The Actor uses pay-per-event pricing, and platform usage is included in the event prices. Each product saved to the dataset is one charged event.

EventFREEBRONZESILVERGOLDPLATINUM / DIAMOND
Product scraped (one dataset row)USD 0.01USD 0.009USD 0.008USD 0.007USD 0.007
Actor start (per started GB of allocated memory)USD 0.005USD 0.005USD 0.005USD 0.005USD 0.005

Runs start at 512 MB of memory by default, which is one start event (USD 0.005). Worked totals on the FREE tier at the default memory:

  • 25 products (the prefilled input): 25 × USD 0.01 + USD 0.005 = USD 0.255
  • 1,000 products: 1,000 × USD 0.01 + USD 0.005 = USD 10.005 (USD 7.005 on GOLD)

The run stops when your maximum total charge is reached, and products already saved stay in the dataset.

FAQ

Do I need a Shopify API key or store access? No. The Actor reads the catalog that public Shopify storefronts publish to every visitor. It does not log in and cannot read private or password-protected stores.

Does it work on any Shopify store? On stores that keep the public catalog enabled, yes, including custom domains. Some large stores block or switch it off: in a plain-request spot check on 2026-10-26, six of nine well-known Shopify brands served it and three answered with an error or a rate limit. Those stores return no products and the run continues with the next store; if every store fails, the run ends as failed and charges no products.

How many products can I export per store? Up to 10,000 per store per run (maxProducts). Large catalogs take longer with review enrichment on, because each product page is fetched.

Can I export to CSV for Shopify import? You can download the dataset as CSV or Excel. Column names follow this Actor's fields, so map them to your import template.

How do I track price changes? Schedule the Actor daily on the same stores and compare current_price, original_price and available by product_id between runs.

Is the sales estimate accurate? No. It is a heuristic based on review counts, useful only for ranking products within a store.

The Actor reads publicly available storefront data. Product descriptions and images can be protected by copyright, so check your rights before republishing them. Follow each store's terms and applicable law. Shopify is a trademark of Shopify Inc.; this Actor is independent and not endorsed by Shopify.

Last verified: 2026-10-27