WooCommerce Products Scraper: Prices, Stock, Images & SKUs
Pricing
from $0.35 / 1,000 product scrapeds
WooCommerce Products Scraper: Prices, Stock, Images & SKUs
Export every product from any WooCommerce store: name, price, sale price, stock, categories, images, SKU, attributes and URL. Uses the store's public Store API: no login, no browser. Filter by category or keyword.
Pricing
from $0.35 / 1,000 product scrapeds
Rating
0.0
(0)
Developer
dheeraj kumar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Share
Who it's for: competitor researchers, dropshippers, and market analysts who need a clean, structured export of any WooCommerce store's full product catalog.
Export the full product catalog of any WooCommerce store as clean JSON, CSV or Excel: name, price, regular and sale price, discount, stock, categories, tags, images, attributes, SKU and product URL.
It reads the store's public catalog data directly, with no login, no API keys and no browser, and it doesn't break when the store changes its theme. Maintained against WooCommerce changes.
What you can use it for
- Competitor price research: export a rival store's whole catalog with current and sale prices.
- Catalog migration and backups: pull products, images, categories and attributes out of a WooCommerce shop.
- Product feeds and market research: build datasets of products, brands and price points across many stores.
- Sale tracking: export only on-sale items, with the discount percent already calculated.
Need to track changes over time instead (new products, price changes, stock flips)? Use WooCommerce Catalog Monitor.
Input
- Store URLs: one or more WooCommerce stores, e.g.
https://example-store.com. - Max products per store (default 1,000): caps reads and cost.
- Categories (optional): category slugs, names or numeric IDs, e.g.
sale,t-shirts. - Search keyword (optional): the store's own product search.
- In-stock only / On-sale only (optional).
- Maximum charge per run (default $5): hard cap; the run stops cleanly before exceeding it.
Example input
{"storeUrls": ["https://offermanwoodshop.com", "https://jococups.com"],"maxProductsPerStore": 1000,"categories": ["sale"],"onSaleOnly": false,"maxChargeUsd": 5}
Output
One row per product (recordType: product), plus one store-summary row per store. Prices are decimals in the store's currency.
Example output
{"recordType": "product","store": "https://offermanwoodshop.com","productId": 43116,"name": "Sale OWS T-Shirts","slug": "ows-t-shirt-2","url": "https://offermanwoodshop.com/store/shop-fashion/ows-t-shirt-2","sku": "AP-OWSTSHIRT-SALE","type": "variable","price": 18.0,"regularPrice": 32.0,"salePrice": 18.0,"onSale": true,"discountPercent": 43.8,"priceRange": null,"currency": "USD","inStock": true,"onBackorder": false,"lowStockRemaining": null,"categories": [{"id": 474, "name": "Sale", "slug": "sale"},{"id": 91, "name": "Shop Fashion", "slug": "shop-fashion"}],"tags": [],"images": ["https://offermanwoodshop.com/wp-content/uploads/2018/08/cropped-redshirt2-scaled-1.jpg"],"attributes": [{"name": "Sizes", "values": ["S", "M", "L", "XL"]},{"name": "Colors", "values": ["Navy", "Royal Blue"]}],"variationCount": 8,"averageRating": 0.0,"reviewCount": 0,"shortDescription": "100% cotton.","description": "Special cut-price on select colors and sizes.","scrapedAt": "2026-10-17T02:12:40+00:00"}
Run it with empty input to see demo rows.
Monitor mode
Schedule this actor and set Output mode to changesOnly to get a diff instead of a full
re-export: the first run records a baseline, and every run after that reports only products that
are new, changed (with a changedFields list), or removed since last time. Removed rows
carry just the product's key fields. Use Monitor name if you run more than one monitor and want
to keep their baselines separate, and Report removed products / Fields to ignore to tune
what counts as a change. Default mode (all) is unaffected — it always exports everything, every run.
In changesOnly, every new/changed row is billed as a changed row in addition to the normal
per-product charge — see Pricing below; a removed row is billed as a changed row only (there's no
per-product charge for a product that wasn't actually fetched this run); unchanged rows are free
and aren't pushed.
Pricing: pay per event
| Event | Price |
|---|---|
| Run started | $0.001 per run |
| Product scraped | $0.0005 per product ($0.50 per 1,000) |
A 1,000-product store costs about $0.50. Stores that can't be read (unsupported, private/B2B shops, network errors) return an error row and aren't charged per product.
Use it from code
from apify_client import ApifyClientclient = ApifyClient("YOUR_API_TOKEN")run = client.actor("dheerajitbhu/woocommerce-products-scraper").call(run_input={"storeUrls": ["https://jococups.com"],"maxProductsPerStore": 500,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():if row.get("recordType") == "product":print(row["name"], row["price"], row["currency"], row["url"])
Limits
- Works with the large majority of public WooCommerce stores. Stores behind bot challenges, password protection or B2B logins return an error row.
- Light, paced reads, to be polite to stores.
Integrations
This actor runs on the Apify platform, so it connects to the tools you already use without custom code:
- Make, Zapier, n8n — trigger a run on a schedule or webhook, and feed exported product rows straight into your workflow using Apify's integrations for each tool.
- Google Sheets — push exported products to a spreadsheet with the Apify Google Sheets integration, no code required.
- Slack / email — get notified when a scheduled export finishes (or fails) via Apify's built-in Slack and email integrations.
- API, Python, and JavaScript clients — call it programmatically with the Apify API or the
apify-client/apify-client-jslibraries (see "Use it from code" above). - MCP / AI agents — expose this actor as a callable tool to Claude, Cursor, or any MCP-compatible agent through the Apify MCP server, so an agent can pull catalog data on its own.
Run it on a schedule
Suggested frequency: weekly for price research snapshots. To track changes, turn on monitor mode and run it daily, and you only get the products that changed.
To set it up: save your input as a Task in Apify Console, then add a Schedule. Send results where you work with Apify integrations: Google Sheets, Slack or email notifications, webhooks, Make / Zapier / n8n, or straight into an AI agent through the Apify MCP server. A run that can't get data is marked failed, so your alerts fire.
FAQ
Is this legal? Is the data public? Yes. It reads only the public catalog data the store shows any visitor — no private or password-protected pages are accessed. You're responsible for using the exported data in line with each store's terms.
Do I need a login or API keys? No. No account, login, or API key is required for the store you're scraping. You only need your own Apify account to run the actor.
How often should I schedule it? This actor is built for one-shot exports (a full catalog pull), not change tracking. Run it whenever you need a fresh snapshot — e.g. weekly for ongoing price research. For scheduled change detection instead, use WooCommerce Catalog Monitor.
What does a run cost? Pay per event: $0.001 per run, $0.0005 per product scraped ($0.50 per 1,000). A 1,000-product store costs about $0.50 per run. Set Maximum charge per run to cap spend.
Does it need a proxy? No. It reads public catalog data efficiently, so no proxy is needed.
What happens if a store blocks it or can't be read? The store is reported as unsupported/failed in an error row and is not charged per product. This includes stores behind bot challenges, password protection, or B2B-only logins.
How do I get support or report a bug? Open an issue on this actor's Issues tab on Apify (apify.com/dheerajitbhu/woocommerce-products-scraper/issues) and we'll follow up there.
Related actors
- WooCommerce Catalog Monitor — track a WooCommerce store's catalog over time and get alerted on new/removed products, price changes, and stock flips, instead of a one-shot export.
- DriftGuard — on Shopify instead of WooCommerce? Catch feed-vs-storefront price and availability drift before Google/Meta/TikTok disapprove your products.
- AliExpress Scraper — compare store prices with AliExpress supplier prices.
- Shopify Scraper — competitors on Shopify? Export their products and prices too.
Built and maintained by Integration Yard (dheerajitbhu).
Independent tool. Not affiliated with or endorsed by WooCommerce / Automattic. Use exported data in line with each store's terms.