WooCommerce Products Scraper - Prices, Variations & Stock avatar

WooCommerce Products Scraper - Prices, Variations & Stock

Pricing

from $0.60 / 1,000 products

Go to Apify Store
WooCommerce Products Scraper - Prices, Variations & Stock

WooCommerce Products Scraper - Prices, Variations & Stock

Export all products from any WooCommerce store: prices, sale prices, variations with SKU and stock, categories, brands, images. Monitors new products and price changes. Pay per product.

Pricing

from $0.60 / 1,000 products

Rating

0.0

(0)

Developer

TinyRex

TinyRex

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 hours ago

Last modified

Share

WooCommerce Products Scraper: prices, variations, stock and monitoring

Export every product from any WooCommerce store: prices, sale prices, variations (size, color) with their own SKU, price and stock, categories, tags, brands, ratings, images and descriptions. Add store domains, category URLs or product URLs and get clean, structured data. You pay only for the products you get.

Why this one: $0.60 per 1,000 products, variation details included, while popular WooCommerce scrapers on the Store charge about $0.90–3 per 1,000. Non-WooCommerce or blocked sites and filtered-out products are free.

Why this scraper

  • Fast and light. It reads the public WooCommerce Store API that powers the store's own cart and product blocks. No browser, so runs are quick and cheap.
  • Full variation data. Price, regular price, SKU and stock text for every variation, nested in the product or as flat rows. No extra cost.
  • Clean prices. Decimal prices in the store currency (with currency code and symbol), sale price and discount %.
  • Monitoring built in. Get only new products, or new products plus price and stock changes with the previous values, on every scheduled run.
  • Pay only for results. Sites that are not WooCommerce, blocked sites and products removed by your filters are free.
  • Respectful by design. The scraper follows each store's robots.txt. If a store asks bots not to use its API, it is skipped (and free).

What you get

FieldExample
Store name, URLNalgene, https://nalgene.com
Product ID, SKU, slug, URL, title, type905247, 342021, 32oz-wide-mouth-sustain, …/product/32oz-wide-mouth-sustain/, 32oz Wide Mouth Sustain, variable
Price, max price, regular price, sale price, discount %17.99, 21.99, 24.99, 19.99, 20
CurrencyUSD, $
Stockin stock, on backorder, stock status, stock text ("12 in stock"), low stock remaining
Reviewsaverage rating, review count
Categories, tags, brands[Water Bottles], [bpa-free], [Nalgene]
AttributesColor: Blue, Gray … (marks which ones are variation options)
Variationsid, title, attributes, SKU, price, regular price, sale price, on sale, in stock, stock text, image, URL
Imagesmain image + all image URLs
Weight, dimensionsas set in the store
Descriptionshort and full description, plain text or HTML
In monitoring modechange type, previous price, previous stock status

How to use

  1. Add stores to WooCommerce stores, categories or products:
    • a domain: nalgene.com
    • a category: https://nalgene.com/product-category/accessories/ (custom category URLs work too)
    • a single product: https://nalgene.com/product/four-wheeling-sticker/
  2. Optional: a search query (uses the store's own search, fastest for big stores), keywords, exclude keywords, categories, brands, price range, only in stock, only on sale.
  3. Choose one row per product (variations nested) or one row per variation (flat, best for spreadsheets and price tracking).
  4. Run, then download the results as JSON, CSV, Excel or HTML, or use them through the API, webhooks or integrations (Google Sheets, Make, Zapier, n8n, Slack).

Example input

{
"stores": ["https://nalgene.com", "https://www.mandarinstone.com/collections/all-terrazzo/"],
"outputMode": "products",
"onlyInStock": true,
"maxProductsPerStore": 500
}

Example output (shortened)

{
"storeName": "Mandarin Stone",
"productId": 499641,
"url": "https://www.mandarinstone.com/product/terrazzo-ivory-honed/",
"title": "Terrazzo Ivory Honed",
"type": "variable",
"price": 0.66,
"maxPrice": 13.68,
"currency": "GBP",
"inStock": true,
"categories": ["All Terrazzo", "New arrivals"],
"attributes": [{ "name": "Size", "values": ["200x200x12", "200x50x12", "406x406x18"], "usedForVariations": true }],
"variationsCount": 4,
"variations": [{ "id": 500195, "title": "Size: 200x50x12", "sku": "TCTEIVOSC20X5", "price": 0.66, "inStock": true, "stockText": "4094 in stock" }],
"featuredImage": "https://www.mandarinstone.com/app/uploads/2026/08/Terrazzo-Ivory-Honed-scaled.jpg"
}

Monitoring new products and price changes

Set Monitoring mode and schedule the Actor (for example daily):

  • Only new products: each run returns products that were not seen before.
  • New products and price/stock changes: also returns products whose price or stock status changed, with changeType, previousPrice and previousInStock.

The first monitoring run returns all matching products as the baseline. Use a different State key for each schedule or filter set. The state is stored in your account in the key-value store woocommerce-products-state.

Run report

Besides the dataset, each run saves:

  • STORES: one record per input with the status (ok, not_woocommerce, blocked, disallowed_by_robots, unreachable, not_found, error), store name, currency, API used and product counts.
  • SUMMARY: totals for the run.

Pricing

Pay per event:

  • Product (product): one charge per row saved to your dataset (per product, or per variation in variation mode). Variation details in product mode are included.
  • Free: sites that are not WooCommerce, blocked sites, stores whose robots.txt disallows the API, unreachable sites and filtered-out products.

See the Pricing tab for current prices. Set a maximum cost per run and the Actor stops gracefully when it is reached.

Tips

  • Use variation mode with only on sale to build a discount feed.
  • Paste a category URL to scrape just one category of a big store, or use search query.
  • Find WooCommerce stores first with a technology detector, then pass the domains here.
  • If a store is slow or rate-limits (HTTP 429), lower Stores in parallel or use Apify Proxy (Advanced section).

Limitations

  • Works with WooCommerce stores whose public Store API is available (WooCommerce 6+; most stores). Some stores disable it, protect it with bot checks, or disallow it in robots.txt; these are skipped and not charged.
  • Only data the store shows publicly is available. Sales numbers, cost prices and exact stock quantities (unless the store shows them) are not.
  • The Store API does not expose product dates; use monitoring mode to detect new products.
  • Prices are shown as the store shows them to a guest visitor (tax display and currency follow the store settings).

Use with AI agents (MCP)

This Actor works as a tool for AI agents through the Apify MCP server at https://mcp.apify.com. Connect Claude, Cursor, VS Code, n8n or any other MCP client to https://mcp.apify.com?tools=tinyrex/woocommerce-products-scraper and the agent can run it from a plain-language request, for example: "Get all products and variation prices from nalgene.com". Results come back as clean, structured JSON at the same pay-per-result price, and failed inputs stay free.

📘 Step-by-step guide with Python, JavaScript, curl and MCP examples: How to export products from any WooCommerce store to CSV or JSON

  • Tech Stack Detector: Have a list of domains? Find out which ones run WooCommerce first (use its onlyIfUses lead filter with WooCommerce), then feed them here.
  • Shopify Products Scraper: The same product export for Shopify stores, including headless ones.
  • ATS Jobs Scraper: See which companies are hiring: jobs from Greenhouse, Lever, Ashby, Personio and more.
  • Workday Jobs Scraper: Jobs from enterprise Workday career sites.

FAQ

Is it legal? The Actor reads public product data through the Store API that WooCommerce provides for storefronts. It does not log in, does not access customer or order data, and respects robots.txt. Use the data in line with the store's terms and your local law.

How fast is it? In our test, 24 stores with 2,637 products took about 4 minutes; most of the time is spent waiting for the stores' servers. Speed depends on store size and hosting.

My store isn't recognized. Check the STORES record for the reason. If the status is not_woocommerce but the store runs WooCommerce, open an issue with the URL and we will take a look.