WooCommerce Website Scraper
Pricing
from $1.00 / 1,000 results
WooCommerce Website Scraper
Scrape WooCommerce Site (Products + Categories + Payment Method)
Pricing
from $1.00 / 1,000 results
Rating
5.0
(1)
Developer
Data Foundry
Maintained by CommunityActor stats
3
Bookmarked
87
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Features
Share
Scrape any WooCommerce store's products, categories and checkout options through the store's own public Store API - with filters, sorting and pagination handled for you. No plugin, no key, no browser.
| What you get | Built for |
|---|---|
|
🛍️ Products with prices, sale prices, stock and images |
🏪 Price and assortment research across stores |
What data do I get?
One dataset record per resource, chosen with resource.
| Resource | What you get |
|---|---|
products | id, name, slug, permalink, sku, prices (price, regular_price, sale_price plus the raw prices object), stock, categories, tags, images, description, ratings |
categories | id, name, slug, parent, count, description, image |
payment_methods | the gateways the store advertises |
How much does it cost?
Pay per event: $1.50 per 1,000 items scraped ($0.0015 each). One item is one product, category or payment method.
| Task | Items | Cost |
|---|---|---|
| One store, full catalogue | 1,000 | $1.50 |
| 100 stores, 100 products each | 10,000 | $15.00 |
| Weekly sweep of 500 stores | 50,000 | $75.00 |
How do I use it?
- Create a free Apify account.
- Open WooCommerce Website Scraper in Apify Console.
- Add one or more store URLs to
url, each as{ "url": "https://example.com" }. - Choose
resource(products by default) and alimitfor the whole run. - Optionally add
filters,sort,orderand a proxy. - Start the run and download JSON, CSV, Excel or XML.
Input
| Field | Type | Description |
|---|---|---|
url | array | Store base URLs, each as { "url": "https://..." }. The actor appends the Store API path. |
proxyConfiguration | object | Optional Apify Proxy or your own proxy. |
limit | integer | Maximum items for the whole run, across every URL. 0 means no limit. |
resource | string | products, categories or payment_methods. |
filters | object | category (ID), min_price / max_price in store currency units (e.g. "20" = $20), on_sale. |
sort | string | Sort field supported by the Store API, e.g. price, date, popularity. |
order | string | asc or desc. |
{"url": [{ "url": "https://example-store.com" }],"resource": "products","limit": 500,"filters": { "category": "12", "min_price": "20", "on_sale": true },"sort": "price","order": "asc"}
Output
{"id": 1234,"name": "Organic Hoodie","slug": "organic-hoodie","permalink": "https://example-store.com/product/organic-hoodie/","type": "simple","status": "publish","sku": "HOOD-01","price": "4500","regular_price": "5500","sale_price": "4500","prices": {"price": "4500","regular_price": "5500","sale_price": "4500","currency_code": "USD","currency_minor_unit": 2},"on_sale": true,"average_rating": "4.5","review_count": 20,"images": ["https://example-store.com/wp-content/uploads/hoodie.jpg"],"categories": ["Hoodies"],"in_stock": true,"stock_quantity": 10,"stock_availability": {"text": "In stock", "class": "in-stock"},"add_to_cart": {"minimum": 1, "maximum": 10},"images_detailed": [{"src": "https://example-store.com/wp-content/uploads/hoodie.jpg", "alt": "Organic Hoodie"}],"categories_detailed": [{"id": 12, "name": "Hoodies", "slug": "hoodies"}],"tags_detailed": [],"brands": []}
Prices are the store's raw Store API strings in minor units: "4500" with currency_minor_unit: 2 means $45.00.
Notes and exceptions
- Public Store API only. The actor uses the store's own public Store API, the same one its front-end calls. No consumer key or secret is needed.
- Stores that disabled the Store API (or block REST access) are reported as failures; a run that pushes no items ends with FAILED status.
- Price filters use the store's own units. The input is in major units (
"20"= $20); the actor converts it with the store'scurrency_minor_unitbefore calling the API. - Multiple stores are supported. Add more entries to
url; duplicates across stores are skipped andlimitapplies once to the whole run. - Transient failures are retried automatically. A URL that still fails is counted in
SUMMARY.urlsFailed. - Hidden and draft products are not public and will not appear.
- Variations are listed by ID in the
variationsfield; full variation records are not fetched. limitis yours to set - without it a large catalogue can produce a very large dataset.
What can I do with the data?
Price monitoring. Pull a competitor's catalogue weekly with sort: price and diff sale prices - the same job a paid repricing tool does, at $1.50 per thousand items.
Feed building. Products with permalink, images and prices map directly onto marketplace feeds.
Assortment research. categories plus counts tells you how a store organises its catalogue and where it is expanding.
Related Actors
- Shopify Website Scraper - the same job for Shopify stores.
- Pricing Page Monitor - competitor price changes, diffed.
- Review Scraper - reviews across 11 sources.
FAQ
Do I need WooCommerce API keys? No. The Store API is public by design.
Does it work on stores with the Store API disabled? No - that is a store setting, and it will be reported as an error.
Can I get product reviews? Use the Review Scraper for that; this actor covers catalogue data.
How do I scrape several stores? Add each store to url. The actor dedupes rows and applies limit to the whole run.
What do the price filters expect? Store currency units: "20" means $20. The actor converts to the store's minor units internally.
Changelog
- 2.4 - major-unit price filters, proxy support, faster and more resilient scraping, honest FAILED status.
- 2.3 - related actors, store copy.
- 2.2 - pagination fix and a global
limit. - 0.1 - First release.