WooCommerce Scraper: Products, Prices, Stock
Pricing
from $0.40 / 1,000 products
WooCommerce Scraper: Products, Prices, Stock
Scrape products from any WooCommerce store: prices, regular and sale prices, discounts, stock status and low stock, SKUs, categories, tags, brands, attributes, ratings and images, with every variation on request. Price and stock alerts between runs. JSON, CSV, Excel, API.
Pricing
from $0.40 / 1,000 products
Rating
0.0
(0)
Developer
deriverge s.r.o.
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 days ago
Last modified
Categories
Features
Share
WooCommerce Scraper
WooCommerce Scraper reads the product catalog of a WooCommerce store through the Store API that WooCommerce serves to every visitor, one row per product: title, SKU, price, regular and sale price with the discount, stock status, categories, tags, attributes, rating and images, and on request each variation with its own price and stock. Enter a store domain such as nalgene.com in Stores and click Start. A store that has switched its Store API off cannot be read and returns no rows. It costs $0.80 per 1,000 products on the Free plan ($0.40 on Business), and the $5 of monthly credit in Apify's Free plan covers about 6,200 products.
What data does it return?
| Field | Description |
|---|---|
store, storeName | The store's domain and its site name, such as nalgene.com and Nalgene. |
productId, slug, url, title | WooCommerce's product ID, the URL slug, the product page and the product name. |
type, sku | simple, variable, grouped or external, and the store's SKU, such as Z0124. |
categories, tags, brands | Category and tag names, such as Today's Sales, and brand names in stores that use WooCommerce brands. |
currency, price, regularPrice, salePrice | The currency code and the current, regular and sale price as numbers, converted from the minor units the Store API sends. For a variable product, price is its lowest price. |
minPrice, maxPrice | Lowest and highest price across the variations; the same as price for a simple product. |
onSale, discountPercent | true when a sale price applies, and the discount in whole percent: 33 for 9.99 instead of 14.99. |
inStock, stockStatus, onBackorder | Whether the product can be bought, the store's stock text such as Out of stock or In stock (can be backordered), and whether it takes backorders. |
lowStockRemaining | Units left, filled only when the store shows a low stock warning. |
averageRating, reviewCount | Average customer rating from 1 to 5, null without reviews, and the number of reviews. |
attributes | Every attribute with its values, such as Bottle Color with Blue, Clear and Gray. |
variationCount, variations | How many variations the product has, and with Include variations each one with its attributes, SKU, price, regular price, stock and low stock count. |
image, images | The main image and all product images. |
shortDescription, description | The short description as plain text, always, and the full description with Include full descriptions. |
change, previousPrice | With a watch name: new, price_drop, price_increase, back_in_stock or sold_out, and the price at the previous run. |
checkedAt | When the product was read, as an ISO 8601 UTC timestamp. |
How to scrape a WooCommerce store
- Enter one or more stores in Stores, one per line, as a domain (
nalgene.com) or a URL. The actor asks each store for/wp-json/wc/store/v1/products, which WooCommerce serves without a key unless the owner turned it off. - Set Maximum products per store (1,000 by default) and Maximum rows for the whole run.
- Turn on Include variations for sizes and colors with their own price, SKU and stock. It costs one extra request per variable product. Include full descriptions adds the long product text.
- Keep only what you need with Keywords (any of), which looks at the title, categories, tags and brands, Only products in stock and Only products on sale.
- Click Start. Products appear in the Output tab, ready to export as CSV, Excel or JSON. The
SUMMARYrecord in the key-value store gives each store's status (ok,failed,blocked,robots_disallowedorinvalid_input) with the reason.
A daily price watch over the API, with variations, for products on sale:
{"stores": ["nalgene.com"],"includeVariations": true,"onlyOnSale": true,"watchName": "nalgene-sale"}
Example output
A product from a run on 11 October 2026 with full descriptions on and variations off, so variations is empty while variationCount shows 6.
{"store": "nalgene.com","storeName": "Nalgene","productId": 744171,"slug": "744171","url": "https://nalgene.com/product/744171/","title": "20oz Multi-Drink Bottle","type": "variable","sku": "Z0124","categories": ["By Shape","By Size","Today's Sales"],"tags": [],"brands": [],"currency": "USD","price": 9.99,"regularPrice": 14.99,"salePrice": 9.99,"minPrice": 9.99,"maxPrice": 9.99,"discountPercent": 33,"onSale": true,"inStock": false,"stockStatus": "Out of stock","lowStockRemaining": null,"onBackorder": false,"averageRating": 5,"reviewCount": 1,"attributes": [{"name": "Cap Diameter","values": ["2.5 inches (63mm)"]},{"name": "Cap Material","values": ["Silicone"]},{"name": "Country of Origin","values": ["China","USA"]},{"name": "Bottle Color","values": ["Blue","Clear","Gray","Green","Purple","Red"]},{"name": "Filter Color","values": ["Blue","Clear","Gray","Green","Purple","Red"]},{"name": "Lid Type","values": ["Straw"]},{"name": "Material","values": ["Tritan Renew"]},{"name": "Bottle Volume","values": ["20oz"]}],"variationCount": 6,"variations": [],"image": "https://nalgene.com/wp-content/uploads/2020/04/1790-1020.jpg","images": ["https://nalgene.com/wp-content/uploads/2020/04/1790-1020.jpg"],"shortDescription": "A 20oz bottle with a diverse lid. Drink 3 ways: wide mouth, narrow mouth or from the straw.","description": "The perfect bottle for people who prefer straws. This 20oz bottle comes with the only Nalgene cap with a straw. This do-it-all lid allows you to drink 3 ways: wide mouth, narrow mouth or from the straw. Plus the cap can be used on any Nalgene Wide Mouth bottle (20oz or larger).","change": null,"previousPrice": null,"checkedAt": "2026-10-11T17:22:44.500Z"}
How much does it cost to scrape WooCommerce products?
| Free plan | Starter | Scale | Business | |
|---|---|---|---|---|
| 1,000 products | $0.80 | $0.64 | $0.52 | $0.40 |
You pay only for the events in the table. There is no start fee, and compute time and proxies are included.
The first 100 products of nalgene.com with full descriptions cost $0.08 on the Free plan and $0.04 on Business on 11 October 2026; the run took 9 seconds and two requests to the store. A catalog of 1,000 products costs $0.80 on the Free plan. Stores that cannot be read and products your filters remove are not charged.
Limits
- Products are read 100 per request. Maximum products per store counts products read before your filters, so with filters a store can return fewer rows than that number.
- A site without the Store API answers with an error, and
SUMMARYnotes that it has no public WooCommerce product feed. Such a store costs nothing. - Before any request, the actor checks the store's
robots.txt. A store that disallows the Store API is skipped with the statusrobots_disallowed, and nothing is read or charged. - When a store answers HTTP 429, the actor waits as long as the store asks and slows down. After four such answers in a row, or at once on HTTP 403 or a bot protection page, it stops reading that store for the rest of the run, keeps the products already read and gives the reason in
SUMMARY. It does not switch to other IP addresses. - With Include variations on, the actor reads one extra page per variable product, 6 at a time. Of the first 100 products at nalgene.com, 52 were variable, with 354 variations in all.
- Exact stock counts are not public in WooCommerce.
lowStockRemainingappears only where the store shows a low stock warning; none of the 100 Nalgene products had one. - Prices are those a visitor without an account sees. Prices for logged-in customers, wholesale tiers and cart discounts are not part of the Store API.
Price and stock monitoring
Give the run a Watch name (price and stock alerts), such as nalgene-sale, or save it as a task, and schedule it. The first run stores each product's price and stock. From the second run on, each product carries change and previousPrice, and the CHANGES record counts new products, price drops and increases, restocks and sell-outs and lists the products that left the store. With Return only changes since the last run on, only changed products are returned and charged. A store that was read only in part keeps its earlier snapshot for the products not reached, so they are not reported as removed.
FAQ
Is it legal to scrape WooCommerce stores?
The actor reads the product data that WooCommerce's Store API gives every visitor, the same data the shop pages display, after checking the store's robots.txt. It never touches customer accounts, orders or reviewers' details. Product photos and texts belong to the store, and you are responsible for how you use them and the rest of the data.
How do I know whether a site runs WooCommerce?
Enter it and look at SUMMARY: a site without a public WooCommerce product feed is named there at no cost. To check many sites first, our Tech Stack Detector recognizes WooCommerce among other platforms.
Related scrapers
Support
This actor is built and maintained by deriverge s.r.o., a software company based in the Czech Republic. If a run fails or a field you need is missing, please open an issue in the Issues tab or write to us at info@deriverge.com. We respond in English and Czech. Runs can be scheduled in Apify Console or started from the API tab, which has examples for Python, JavaScript and cURL and works with Make, Zapier, n8n and the Apify MCP server. If the actor saves you time, a short review helps other people find it.