WooCommerce Scraper
Pricing
Pay per event
WooCommerce Scraper
Scrape product data from any WooCommerce store. Extract names, prices, stock status, images, categories, ratings, and more. Export to JSON, CSV, or Excel. No login needed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Extract product data from any WooCommerce store in seconds — prices, stock levels, images, categories, ratings, and more. No browser required, no authentication needed, no coding skills necessary.
67% cheaper than competitors. At $0.001 per product you get enterprise-grade e-commerce data at a fraction of the cost.
What does WooCommerce Scraper do?
WooCommerce Scraper connects directly to the public WooCommerce Store API — the same JSON endpoint that WooCommerce stores expose for their own frontend — and pulls structured product data in bulk.
You give it a list of store URLs (e.g., https://myshop.com) and a product limit per store. The scraper discovers the REST API endpoint automatically, pages through the product catalogue, and delivers clean, structured JSON output ready for analysis, price monitoring, inventory tracking, or competitive research.
Because it uses the native API rather than parsing HTML, the scraper is:
- ⚡ Fast — thousands of products per minute with no rendering overhead
- 🔒 Reliable — structured JSON never breaks due to CSS class changes
- 💸 Economical — HTTP-only, no Playwright browser cost
- 🌍 Broad — works on any WooCommerce store with the WooCommerce Blocks plugin (approximately 40–60% of all WooCommerce stores worldwide)
Who is WooCommerce Scraper for?
WooCommerce powers over 36% of all online stores globally. This scraper is built for anyone who needs product data at scale from that ecosystem:
- 🛒 Dropshippers — monitor supplier catalogues, spot new products, track price changes before updating your own listings
- 📊 E-commerce analysts — benchmark pricing, map product categories, and study catalogue structures across dozens of competitors simultaneously
- 🔍 Market researchers — build product datasets for trend analysis, keyword research, and category mapping
- 💡 Price monitoring teams — run scheduled scrapes to detect repricing events and keep your store competitive
- 🤖 Developers and data engineers — feed product feeds into pipelines, recommendation engines, or AI fine-tuning datasets
- 🏢 Agencies — deliver competitive intelligence reports to e-commerce clients without building custom scrapers
Why use WooCommerce Scraper?
There are several WooCommerce scrapers on the Apify Store. Here is why this one stands out:
- 💰 Lowest price on the platform — $0.001/product vs. the leading competitor at $0.003. That is a 67% saving on every single run.
- 🚀 HTTP-only engine — no Playwright, no headless Chrome. Runs are fast and lightweight, keeping your costs low.
- 📦 Rich output schema — 24 fields per product including sale status, review counts, all image variants, category trees, and tags.
- 🔄 Export anywhere — JSON, CSV, Excel, XML all natively supported via the Apify platform.
- 🧩 Apify ecosystem — schedule runs, trigger via API, connect to Zapier, Make, Google Sheets, or any webhook.
- ✅ No setup required — paste a store URL and click Run. No API keys, no authentication tokens, no proxies needed.
What data can you extract from WooCommerce stores?
Every product record contains the following fields:
| Field | Type | Description |
|---|---|---|
id | number | WooCommerce internal product ID |
name | string | Full product name |
slug | string | URL-safe product identifier |
type | string | Product type: simple, variable, grouped, etc. |
url | string | Direct URL to the product page |
sku | string | Stock Keeping Unit code |
description | string | Full HTML product description |
shortDescription | string | Short summary shown in listings |
price | string | Current selling price |
regularPrice | string | Original price before any discount |
salePrice | string | Discounted sale price (if active) |
currency | string | ISO currency code (e.g. USD, EUR) |
onSale | boolean | Whether the product is currently on sale |
inStock | boolean | Whether the product is available to purchase |
isPurchasable | boolean | Whether the product can be added to cart |
averageRating | string | Average customer star rating |
reviewCount | number | Total number of customer reviews |
imageUrl | string | URL of the primary product image |
images | array | All product images with id, src, and alt |
categories | array | Category tree with id, name, and slug |
tags | array | Product tags with id, name, and slug |
storeUrl | string | The source store URL for this product |
scrapedAt | string | ISO 8601 timestamp of when the record was collected |
How much does it cost to scrape WooCommerce products?
WooCommerce Scraper uses pay-per-event (PPE) pricing with two charge types:
| Event | Cost |
|---|---|
| Actor start | $0.001 (one-time per run) |
| Per product scraped | $0.001 |
Cost examples:
| Products scraped | Total cost |
|---|---|
| 100 products | $0.101 |
| 500 products | $0.501 |
| 1,000 products | $1.001 |
| 5,000 products | $5.001 |
| 10,000 products | $10.001 |
| 50,000 products | $50.001 |
Comparison with leading competitor ($0.003/product):
| Products | This actor | Competitor | You save |
|---|---|---|---|
| 1,000 | $1.001 | $3.001 | $2.00 |
| 10,000 | $10.001 | $30.001 | $20.00 |
| 100,000 | $100.001 | $300.001 | $200.00 |
No subscription, no minimum spend. Pay only for what you scrape.
How to scrape WooCommerce products
Follow these steps to run your first scrape:
- 🔗 Open the actor at https://apify.com/automation-lab/woocommerce-scraper
- 🖱️ Click Try for free (you get $5 free credit on sign-up — no credit card required)
- 📋 Paste one or more WooCommerce store URLs into the Store URLs field
- 🔢 Set Max products per store (default: 100)
- ▶️ Click Start and wait for the run to complete (usually under a minute)
- 📥 Download results as JSON, CSV, Excel, or XML from the Dataset tab
Example input JSON:
{"storeUrls": ["https://example-woocommerce-store.com","https://another-shop.com"],"maxProductsPerStore": 500}
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
storeUrls | array of strings | Yes | — | List of WooCommerce store base URLs to scrape |
maxProductsPerStore | number | No | 100 | Maximum number of products to collect from each store |
Notes:
- 📌 URLs should be the store homepage (e.g.,
https://myshop.com), not a specific product page - 📌 The scraper automatically appends the WooCommerce API path (
/wp-json/wc/store/v1/products) - 📌 Set
maxProductsPerStoreto0or omit it to scrape all available products
Output example
{"id": 42,"name": "Organic Cotton T-Shirt","slug": "organic-cotton-t-shirt","type": "variable","url": "https://myshop.com/product/organic-cotton-t-shirt/","sku": "OCT-001-BLK","description": "<p>Made from 100% certified organic cotton. Available in 6 colors.</p>","shortDescription": "<p>Soft, sustainable, and ethically produced.</p>","price": "29.99","regularPrice": "39.99","salePrice": "29.99","currency": "USD","onSale": true,"inStock": true,"isPurchasable": true,"averageRating": "4.8","reviewCount": 127,"imageUrl": "https://myshop.com/wp-content/uploads/t-shirt-black.jpg","images": [{"id": 101,"src": "https://myshop.com/wp-content/uploads/t-shirt-black.jpg","alt": "Black organic cotton t-shirt front view"},{"id": 102,"src": "https://myshop.com/wp-content/uploads/t-shirt-black-back.jpg","alt": "Black organic cotton t-shirt back view"}],"categories": [{ "id": 15, "name": "Clothing", "slug": "clothing" },{ "id": 23, "name": "T-Shirts", "slug": "t-shirts" }],"tags": [{ "id": 8, "name": "organic", "slug": "organic" },{ "id": 9, "name": "sustainable", "slug": "sustainable" }],"storeUrl": "https://myshop.com","scrapedAt": "2026-03-26T14:22:05.000Z"}
Tips for best results
Get the most out of WooCommerce Scraper with these practical tips:
- 🔍 Verify the store runs WooCommerce — check the page source for
wp-contentpaths or awoocommercebody class. The API is only available on WooCommerce stores with the Blocks plugin. - 📏 Start small — run with
maxProductsPerStore: 50first to confirm the store is compatible before scraping thousands of products. - 🗂️ Scrape multiple stores in one run — pass an array of URLs to process them all in a single actor run and keep costs minimal.
- 📅 Schedule recurring runs — use Apify Schedules (cron expressions supported) to monitor price changes or new product launches automatically.
- 🧹 Filter in post-processing — the full description field includes HTML. Use a simple regex or an HTML-to-text library to strip tags before loading into a spreadsheet.
- 💾 Use the dataset API — for large catalogues, stream results from the Apify Dataset API rather than downloading a single file.
- ⚠️ Respect robots.txt — the WooCommerce Store API is a public endpoint, but always review the store's terms of service before large-scale commercial use.
Integrations
WooCommerce Scraper works natively with the full Apify integration ecosystem:
- 📊 Google Sheets — use the Apify Google Sheets integration to push product data directly into a spreadsheet after each run. Great for price monitoring dashboards.
- 🔔 Slack alerts — connect via Zapier or Make to send a Slack message whenever a run completes or new products are detected.
- ⚡ Zapier — trigger downstream workflows when a run finishes. Push new products to Airtable, Notion, or your CRM automatically.
- 🔧 Make (Integromat) — build advanced multi-step automations: scrape → filter by category → update your inventory database → notify your team.
- 🌐 Webhooks — configure a webhook URL in the actor settings to POST run metadata to any endpoint when the scrape completes.
- 🗄️ Apify API — pull datasets programmatically, trigger runs from your own backend, and integrate product data into any application.
Using the Apify API
Trigger runs and retrieve data programmatically using the Apify REST API.
Node.js (using apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('automation-lab/woocommerce-scraper').call({storeUrls: ['https://myshop.com'],maxProductsPerStore: 200,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Python (using apify-client):
from apify_client import ApifyClientclient = ApifyClient(token='YOUR_APIFY_TOKEN')run = client.actor('automation-lab/woocommerce-scraper').call(run_input={'storeUrls': ['https://myshop.com'],'maxProductsPerStore': 200,})for item in client.dataset(run['defaultDatasetId']).iterate_items():print(item)
cURL:
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~woocommerce-scraper/runs?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"storeUrls": ["https://myshop.com"],"maxProductsPerStore": 200}'
Replace YOUR_APIFY_TOKEN with your token from https://console.apify.com/settings/integrations.
Use with AI agents via MCP
WooCommerce Scraper is available as an MCP (Model Context Protocol) tool, letting you run it directly from AI coding assistants and agents.
MCP server URL: https://mcp.apify.com
Claude Code setup
Add to your ~/.claude/claude_code_config.json:
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote","--transport", "http","https://mcp.apify.com?token=YOUR_APIFY_TOKEN"]}}}
Claude Desktop setup
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote","--transport", "http","https://mcp.apify.com?token=YOUR_APIFY_TOKEN"]}}}
Cursor setup
In Cursor settings → MCP → Add server, set the URL to:
https://mcp.apify.com?token=YOUR_APIFY_TOKEN
with transport type http.
Example prompts for AI agents
Once connected, you can use natural language to drive scrapes:
- 🗣️ "Use the WooCommerce Scraper to pull all products from https://myshop.com and show me the ones currently on sale."
- 🗣️ "Scrape product names and prices from these 5 WooCommerce stores and compare their pricing for wireless headphones."
- 🗣️ "Run the WooCommerce Scraper on https://competitorstore.com with a limit of 1000 products and export the results as CSV."
Is it legal to scrape WooCommerce stores?
The WooCommerce Store API (/wp-json/wc/store/v1/products) is a public endpoint — it requires no authentication, no login, and no API key. It is the same endpoint WooCommerce stores expose to their own website visitors to display product listings.
Scraping publicly accessible data is generally legal in most jurisdictions, supported by court rulings including the US Ninth Circuit's decision in hiQ Labs v. LinkedIn (2022).
That said, you remain responsible for:
- 📜 Terms of Service — some stores prohibit automated access in their ToS. Always review before large-scale commercial use.
- ⚖️ Data use — collection is one thing, redistribution or resale of scraped data may carry additional legal considerations depending on your jurisdiction.
- 🤝 Politeness — avoid hammering a single store with excessive concurrent requests. This scraper is designed to be respectful of server resources.
When in doubt, consult a legal professional familiar with data law in your jurisdiction.
FAQ
Why does the scraper skip some stores?
The WooCommerce Store API (/wp-json/wc/store/v1/products) is only available on stores running the WooCommerce Blocks plugin (bundled with WooCommerce 5.0+). Older stores or those using only classic WooCommerce shortcodes may not expose this endpoint. Approximately 40–60% of WooCommerce stores are compatible. Stores that return a 404 on the API path are automatically skipped.
Can I scrape stores behind Cloudflare?
Cloudflare does not typically block API endpoints — only rendered HTML pages. Since this scraper targets the JSON REST API, most Cloudflare-protected stores work fine. If a store has configured Cloudflare to block all non-browser traffic on the API path, it will be skipped. You can test manually by visiting https://yourstore.com/wp-json/wc/store/v1/products in your browser.
How many products can I scrape per store?
There is no hard limit in the scraper itself. Set maxProductsPerStore to 0 to scrape the full catalogue. Some stores have tens of thousands of products — the scraper pages through them automatically. Keep in mind that cost scales linearly at $0.001 per product.
How fresh is the data?
The data is live at the moment of the run — it reflects exactly what the store's API returns when the scraper runs. For ongoing monitoring, schedule recurring runs using Apify Schedules.
Can I scrape multiple stores at once?
Yes. Pass multiple URLs in the storeUrls array and the scraper processes them sequentially in a single run. There is no extra charge for multiple stores beyond the per-product fee.
What output formats are supported?
Results are stored in an Apify Dataset, which supports export as JSON, CSV, Excel (XLSX), and XML directly from the Apify Console or via API. No additional configuration needed — just click the format you want on the Dataset tab after the run completes.
What if a product has no price or is out of stock?
All fields are included in every record. Fields that have no value on the store (e.g., salePrice when no sale is active, sku when not set) are returned as empty strings or null. The inStock and isPurchasable booleans let you filter available products easily.
Other e-commerce scrapers
Looking for data from other platforms? Check out these actors from the same account:
- 🛍️ Amazon Scraper — extract product listings, prices, reviews, and seller data from Amazon
- 🏆 Amazon Bestsellers Scraper — track bestseller rankings across any Amazon category
- 🏪 Shopify Scraper — scrape product catalogues from any Shopify store via the public products.json endpoint
- 🏬 Walmart Scraper — collect product data, prices, and reviews from Walmart.com
- 🛒 Google Shopping Scraper — monitor prices and listings across Google Shopping results
Built and maintained by automation-lab. Questions or feature requests? Open an issue or contact us via the Apify Store.