Shopify & WooCommerce Products Scraper avatar

Shopify & WooCommerce Products Scraper

Pricing

from $0.70 / 1,000 products

Go to Apify Store
Shopify & WooCommerce Products Scraper

Shopify & WooCommerce Products Scraper

Scrape products, variants, prices, SKUs and stock from any Shopify or WooCommerce store, and page by page from other stores. Paste store, collection, category or product links, get one clean format. Whole catalogs in seconds, no proxy needed. $0.50 per 1,000 products.

Pricing

from $0.70 / 1,000 products

Rating

0.0

(0)

Developer

Brian Gastaldelli

Brian Gastaldelli

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Shopify & WooCommerce Products Scraper — any store, one format

Scrape products, variants, prices and stock from Shopify and WooCommerce stores, and from other online stores page by page, with the same fields for every store. Paste store links (or just domains), collection, category or product links, mixed, and get the whole catalog: SKU, barcode, price, compare-at price, availability, options, images, weight. No login, no browser, no proxy to set up.

Why this Actor

  • Two platforms, one dataset. Shopify and WooCommerce run a large share of the world's online stores. Mix them in one run and get one table for price monitoring, catalog research or a product feed.
  • Fast and complete. Shopify: 250 products per request. WooCommerce: 100 products per request, with every variant's price, SKU and stock. Six whole stores (1,065 products) matched the product count each store declares.
  • Also works where others stop. Headless Shopify stores (Fashion Nova, Gymshark), WooCommerce stores with the product feed turned off, and other platforms are read page by page from the store's product sitemap, using the product data each page publishes for Google.
  • Checked against the real product pages. 30 products from 15 stores compared with their pages: prices, currencies, SKUs and stock identical on all 30.
  • Reliable. Direct connection, polite pace, automatic retries, and Apify Proxy only if a store blocks the run. Broken cookies, invisible characters in answers and moved sitemaps are handled.
  • Fair price: $0.90 per 1,000 products from Shopify and WooCommerce feeds on the Starter plan, less on higher plans. Error rows are free.

Use cases

  • Price monitoring and repricing: follow competitors' prices, discounts and stock every day.
  • E-commerce research: whole catalogs of brands and niches, with vendors, product types, tags and launch dates (Shopify).
  • Dropshipping and marketplaces: product data, images, variants and barcodes for sourcing and listings.
  • Market and trend analysis: new products, price changes, out-of-stock items across hundreds of stores.
  • AI and data teams: clean product data for embeddings, matching and training sets.

Input

FieldDescription
Store, collection or product linksMixed, one per line. Home page or domain (allbirds.com) = the whole catalog; collection (/collections/…) or category (/product-category/…) page = only those products; product page = that product.
Max products per linkDefault 100; 0 = every product.
One row per variantOne row for each size, color… with its own SKU, barcode, price and stock, instead of one row per product with a variants list. You still pay per product.
ProxyNot needed: the Actor switches to Apify Proxy by itself when a store blocks it.

Example:

{
"startUrls": [
{ "url": "https://www.allbirds.com" },
{ "url": "https://www.kelty.com/collections/backpacks" },
{ "url": "https://godinguitars.com" }
],
"maxProductsPerUrl": 0,
"variantRows": false
}

Output

One item per product, same fields for every store (real example, shortened):

{
"platform": "shopify",
"storeUrl": "https://www.allbirds.com",
"storeName": "Allbirds",
"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",
"categories": [],
"tags": ["allbirds::gender => womens", "allbirds::material => sugar"],
"price": 25,
"priceMax": 25,
"compareAtPrice": 50,
"onSale": true,
"currency": "USD",
"available": true,
"sku": "A12513W050",
"description": "Sun on your feet. Comfort underneath. Light, easy, and made for warm weather…",
"image": "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"] }],
"variantCount": 7,
"variants": [
{
"id": "42146889039952",
"title": "5",
"sku": "A12513W050",
"barcode": null,
"price": 25,
"compareAtPrice": 50,
"available": false,
"options": { "Size": "5" },
"weight": 0.455,
"weightUnit": "kg",
"inventoryQuantity": null,
"image": null
}
],
"rating": null,
"reviewCount": null,
"createdAt": "2026-03-27T14:03:50-07:00",
"updatedAt": "2026-09-28T20:07:24-07:00",
"publishedAt": "2026-09-25T16:58:13-07:00",
"source": "https://www.allbirds.com",
"position": 1,
"scrapedAt": "2026-09-29T03:07:24.620Z"
}
FieldMeaning
platformshopify, woocommerce or other (read from the product page).
price, priceMaxLowest and highest variant price, in currency. compareAtPrice: the crossed-out price of the cheapest variant, when on sale.
availableTrue if at least one variant can be bought. Each variant has its own available.
vendorShopify vendor, WooCommerce brand, or the page's brand.
categories, tagsWooCommerce categories and tags; Shopify tags (Shopify has no public categories: use productType or collection links).
options, variantsOptions (size, color…) with their values, and every variant with SKU, barcode, price, stock and weight. Simple products have one variant.
rating, reviewCountWooCommerce reviews, or the page's rating.
createdAt, updatedAt, publishedAtShopify dates.
source, position, scrapedAtThe link you entered, the product's rank for that link, and when it was scraped.

With One row per variant, each row also has variantId, variantTitle, variantOptions, barcode, weight and inventoryQuantity.

Rows with a status are not products and are not charged:

StatusMeaning
not_foundThe website, product, collection or category does not exist.
unsupportedNot a Shopify or WooCommerce store and its pages have no product data, or the page you gave is not a product page.
blockedThe store refused every connection, including Apify Proxy.
unavailableThe store is password-protected.
no_resultsThe collection or category is empty.
invalid_inputNot a web address.
errorThe store kept failing; products saved before the error are kept.

Tested (September 2026, on the Apify platform)

TestResult
Default input (Allbirds + Godin Guitars, 20 each)40 products in about 3 seconds
20 products from 10 Shopify and WooCommerce stores vs their product pagesPrices, currencies, SKUs and stock 20 / 20 identical
10 products read page by page (5 stores without a public feed) vs their pages10 / 10 identical
Whole catalogs of 6 stores (1,065 products)100% of the declared count, all distinct
Collection, category and product linksOnly that collection's or category's products; a variable product with its 54 variants, all priced
33 stores never seen before (21 WooCommerce, 12 Shopify brands)31 with products; 2 clear rows (one store blocks everyone, one has no product data)
Wrong inputs (not a store, unknown domain, missing product or collection)Clear free rows, run succeeds

Honest limits

  • Shopify lists at most 25,000 products per store or collection (100 pages of 250). For bigger stores, add collection links: each collection has its own 25,000.
  • title is the product's name in the store's data. A few stores show a shorter name on the page.
  • A Shopify collection may count more products than it shows: products not published on the online store are not visible to anyone, so they are not scraped.
  • WooCommerce prices are those of the store's own feed, with or without tax as the store is set up (UK stores usually include VAT).
  • Page-by-page reading depends on the store's pages. It needs a product sitemap (for home page links) and product data in the page (schema.org, which most stores publish for Google). Prices are in the currency the page shows to a US visitor.
  • Big retailers with strong bot protection (Amazon, Walmart, Zalando…) are not supported.

Pricing

  • $0.90 per 1,000 products from Shopify and WooCommerce feeds on the Starter plan, down to $0.70 on Business (product event; the Pricing tab shows the price for your plan).
  • $3 per 1,000 products read from their web page (product-page event, $0.003 each): stores without a public feed and product page links from other platforms. Reading full pages costs more than a feed.
  • A small start fee per run ($0.00005). Status rows are free. Set a maximum charge in the run options and the Actor stops there, saving only the products paid for.