WooCommerce Scraper avatar

WooCommerce Scraper

Pricing

Pay per event

Go to Apify Store
WooCommerce Scraper

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

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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:

FieldTypeDescription
idnumberWooCommerce internal product ID
namestringFull product name
slugstringURL-safe product identifier
typestringProduct type: simple, variable, grouped, etc.
urlstringDirect URL to the product page
skustringStock Keeping Unit code
descriptionstringFull HTML product description
shortDescriptionstringShort summary shown in listings
pricestringCurrent selling price
regularPricestringOriginal price before any discount
salePricestringDiscounted sale price (if active)
currencystringISO currency code (e.g. USD, EUR)
onSalebooleanWhether the product is currently on sale
inStockbooleanWhether the product is available to purchase
isPurchasablebooleanWhether the product can be added to cart
averageRatingstringAverage customer star rating
reviewCountnumberTotal number of customer reviews
imageUrlstringURL of the primary product image
imagesarrayAll product images with id, src, and alt
categoriesarrayCategory tree with id, name, and slug
tagsarrayProduct tags with id, name, and slug
storeUrlstringThe source store URL for this product
scrapedAtstringISO 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:

EventCost
Actor start$0.001 (one-time per run)
Per product scraped$0.001

Cost examples:

Products scrapedTotal 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):

ProductsThis actorCompetitorYou 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:

  1. 🔗 Open the actor at https://apify.com/automation-lab/woocommerce-scraper
  2. 🖱️ Click Try for free (you get $5 free credit on sign-up — no credit card required)
  3. 📋 Paste one or more WooCommerce store URLs into the Store URLs field
  4. 🔢 Set Max products per store (default: 100)
  5. ▶️ Click Start and wait for the run to complete (usually under a minute)
  6. 📥 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

ParameterTypeRequiredDefaultDescription
storeUrlsarray of stringsYesList of WooCommerce store base URLs to scrape
maxProductsPerStorenumberNo100Maximum 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 maxProductsPerStore to 0 or 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-content paths or a woocommerce body class. The API is only available on WooCommerce stores with the Blocks plugin.
  • 📏 Start small — run with maxProductsPerStore: 50 first 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 ApifyClient
client = 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."

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.