TL;DR
- You can export a WooCommerce store's product catalog to CSV, Excel or JSON without installing a plugin and without admin access, including stores you don't own. Paste the store URL, press Start, download the file.
- In one live run on Nov 2, 2026 we exported 762 products from 4 public WooCommerce stores (claudiapearson.com, nutribullet.com, nopong.com.au, jococups.com). Every row had a name, current price, regular price, stock status and product URL, and 760 of 762 had images.
- Prices tell you how a store is built. Median prices ran from AUD 16.50 (Joco Cups) to AUD 69 (No Pong). Claudia Pearson's catalog had a USD 22 median with a thin long tail: blankets at USD 190 and a single USD 1,500 listing.
- 93 products (12.2%) were on sale. Discount depth varied a lot by store: Claudia Pearson's sale items had a median 55.9% off, No Pong's 27.4%, and nutribullet had only 2 items on sale.
- 124 products (16.3%) were out of stock. That ranged from 5.5% of nutribullet's catalog to 35.9% of Joco Cups'.
- Cost at our listed price: $0.50 per 1,000 products plus $0.001 per run on the Apify Free plan (a little less on paid plans). This whole 762-product run would cost a Free-plan customer $0.38.
Want to try it on a store you care about? Open the WooCommerce Products Scraper. The form opens with a real store (Joco Cups) prefilled, so you can press Start and have its whole catalog back in under a minute before reading the rest of this guide.
A lot of online stores run on WooCommerce, from one-person craft shops to brands like nutribullet. If you sell in the same niche, those stores are your price list, your assortment benchmark and your early warning system. And if one of them is your own store, getting a clean spreadsheet out of it is harder than it should be.
There are two common situations:
- It's your store. WooCommerce has a built-in product CSV exporter in the admin. It works, but you need admin access, the file uses WooCommerce's own column layout, and you can't schedule it or send it anywhere without extra plugins.
- It's someone else's store. There's no export button at all. Copying prices by hand stops working past a few dozen products, and a scraper built around one store's page layout usually needs fixing when the store changes its theme.
A WooCommerce products scraper handles both. It reads the same public catalog any visitor sees and hands you one structured row per product. This guide shows what that looks like with real data: what fields you get, what four real catalogs look like once they're in a spreadsheet, and what it costs. Every number below comes from one live run we made on Nov 2, 2026.
Disclosure: we build and maintain the WooCommerce Products Scraper used in this guide.
Contents
- What you get in a WooCommerce product export
- The test: 4 real stores, 762 products
- What these catalogs cost
- How deep the discounts go
- What's out of stock, and where
- Which fields stores actually fill in
- What it costs and how long it takes
- Built-in export, plugins or a scraper?
- Five things people use this data for
- From one export to ongoing monitoring
- Limits and good practice
- FAQ
What you get in a WooCommerce product export
Each product comes back as one row with the fields you'd otherwise copy by hand:
- Identity: product name, slug, product ID, SKU, product type (simple, variable, subscription) and the product page URL.
- Pricing: current price, regular price, sale price, an on-sale flag, the discount percent already calculated, a price range for variable products, and the store's currency.
- Stock: in stock or not, backorder status, and the store's own stock text (for example "30 in stock") when it shows one.
- Catalog structure: categories, tags, brands and attributes such as size or colour, plus how many variations a product has.
- Content: all product image URLs, the short description and the full description.
- Social proof: average rating and review count, when the store shows reviews.
Each store also gets a summary row with how many products were read and what the run cost so far. A store that can't be read gets an error row instead of silently missing from your file. You can download everything as CSV, Excel, JSON or XML, or send it to Google Sheets and other tools through Apify integrations.
No login, no API key from the store owner and no browser are needed. You only need your own Apify account to run it.
The test: 4 real stores, 762 products
We picked five well-known public WooCommerce stores from different niches and countries and ran one export over all of them with default settings:
| Store | What it sells | Currency | Products exported |
|---|---|---|---|
| claudiapearson.com | Illustrated homeware, totes, prints | USD | 417 |
| nutribullet.com | Blenders, juicers, accessories | USD | 182 |
| nopong.com.au | Natural deodorant, retail and wholesale | AUD | 124 |
| jococups.com | Reusable glass cups and accessories | AUD | 39 |
| landyachtz.com | Skateboards | — | error row (store was rate-limiting) |
Four stores came back complete, 762 products in total. The fifth, landyachtz.com, was answering with server errors at the time. The actor retried for 90 seconds, then wrote a clear error row for that store and moved on. No product charge applied to it.
Even this first chart shows how different the four businesses are. Claudia Pearson runs a broad catalog with a big sale section. nutribullet has a tight catalog with almost nothing discounted. Joco Cups has only 39 products but more than a third of them are out of stock.
The product types were different too: 674 simple products, 74 variable products and 14 subscriptions. Joco Cups' 26 variable products carried 244 variations between them (cup sizes and colours), which is why the variation count is a separate field. A store with 39 "products" can have hundreds of things you can buy.
What these catalogs cost
Price architecture is the first thing most competitor research wants: where a store's prices cluster, where its premium tier starts, and what its entry-level price is.
What the export shows (3 zero-price items were left out of the medians):
- Claudia Pearson (USD): median $22.00 across 416 priced products. Most of the catalog is totes, accessories and tea towels. The right tail is thin: Ebb + Flow blankets at $190 and a single uncategorised listing at $1,500.
- nutribullet (USD): median $23.99, from $5.99 accessories up to a $224.99 bundle. Accessories and warranty plans make up most of the catalog by count, so the median is far below the price of a blender.
- No Pong (AUD): median AUD 69, the highest of the four. Its wholesale section (69 of 124 products) sells shelf-ready trays and bulk packs, which pulls the median up.
- Joco Cups (AUD): median AUD 16.50, from AUD 6.05 to AUD 76.95. Accessories are the largest category, with 18 of the 39 products.
The point isn't these four stores. It's that a single export turns "I think they're cheaper than us" into a distribution you can compare category by category. Because every row carries its category, you can filter the spreadsheet to "Blenders" or "Totes" and compare like with like.
How deep the discounts go
The export marks every product that is currently on sale and calculates the discount from the regular and sale price, so you don't have to.
Across the four stores, 93 of 762 products (12.2%) were on sale on Nov 2, but the stores use discounts in completely different ways:
- Claudia Pearson: 70 products on sale, a median 55.9% off and a maximum of 65.4%. All 70 sit in the store's "Sale" category, mostly totes and accessories. This is a clearance section, not a promotion.
- No Pong: 15 products on sale, a median 27.4% off. Fourteen of them fall in the 20–30% band, which looks like a consistent promotional rule.
- Joco Cups: 6 products on sale, 40% off for five of them.
- nutribullet: only 2 products on sale, both bundles, with 25% off the largest bundle ($224.99 instead of $299.98).
If you track a competitor, this is the difference between "they're running a sale" and knowing whether it's a site-wide 25% promotion or a deep clearance on a few lines. That changes how you should respond.
What's out of stock, and where
Stock status is the most time-sensitive field in the export. It shows which products a competitor can't currently deliver, which is a gap you can fill.
In total, 124 of 762 products (16.3%) were out of stock:
- Joco Cups: 14 of 39 (35.9%). For a small catalog, that's a big share of the range you can't buy.
- Claudia Pearson: 86 of 417 (20.6%).
- No Pong: 14 of 124 (11.3%). Its Wholesale category had the highest out-of-stock rate of any large category in the test, 11 of 69 products (15.9%).
- nutribullet: 10 of 182 (5.5%).
Category-level stock tells you more than a store-wide number. A wholesale section running short points to a supply constraint. Out-of-stock items in a sale section usually mean the clearance is working. Several stores also show their own stock text (for example "30 in stock"), which the export keeps as a separate field: Joco Cups shows it on 54% of products, Claudia Pearson on 44%.
Which fields stores actually fill in
A catalog export is only as complete as the store's own data. This was the most useful chart for planning what you can analyse.
What's always there: price and the product URL were present on every product in all four stores, and images, categories and short descriptions on nearly all of them (Claudia Pearson had 2 products without images). That covers price research, catalog migration and product feeds.
What depends on the store:
- SKU: 100% at nutribullet, No Pong and Joco Cups, but 78% at Claudia Pearson. If you match products across stores by SKU, plan for a fallback on name.
- Full description: 100% at nutribullet but only 3% at Claudia Pearson, which puts its copy in the short description instead.
- Tags: 100% at nutribullet and 95% at Joco Cups, almost none elsewhere.
- Attributes and variations: common at Joco Cups (74% have attributes), rare elsewhere.
- Reviews: only one product across all 762 had a review count above zero. These four stores don't show on-site reviews in their public catalogs, so you'd get ratings from elsewhere if you need them.
The takeaway: don't design your spreadsheet around fields a store doesn't fill in. Run a small sample first (the prefilled run returns 10 products) and check which columns are populated.
What it costs and how long it takes
The actor uses pay-per-event pricing: $0.001 per run plus $0.0005 per product ($0.50 per 1,000 products) on the Apify Free plan, with a lower per-product price on paid Apify plans. There's no monthly rental, and you can set a maximum charge per run so a huge store can't surprise you.
For this test, at the Free-plan price:
| Store | Products | Cost |
|---|---|---|
| claudiapearson.com | 417 | $0.21 |
| nutribullet.com | 182 | $0.09 |
| nopong.com.au | 124 | $0.06 |
| jococups.com | 39 | $0.02 |
| landyachtz.com | error row | $0.00 |
| Total (incl. $0.001 run start) | 762 | $0.38 |
The four stores that answered were exported in about 80 seconds. The whole run took 2 minutes 22 seconds, because the actor spent 90 seconds retrying the rate-limited store before giving up on it cleanly. If you only need a quick check, filter the run to one category, a search term, in-stock only or on-sale only, and you pay only for the rows you keep.
Built-in export, plugins or a scraper?
There are three realistic ways to get WooCommerce products into a spreadsheet:
| WooCommerce built-in CSV export | Export plugin | WooCommerce products scraper | |
|---|---|---|---|
| Works on stores you don't own | No | No | Yes |
| Needs admin access | Yes | Yes | No |
| Installs anything on the store | No | Yes | No |
| Discount % and stock calculated for you | No | Depends | Yes |
| Schedule and send to Sheets/Slack/webhooks | No | Some, paid tiers | Yes |
| Many stores in one run | No | No | Yes |
| Cost | Free | Free or paid licence | $0.50 per 1,000 products |
If you only ever need a one-off backup of your own store, the built-in exporter is fine. A scraper makes sense once you need other stores, several stores side by side, or a repeatable feed that lands in a spreadsheet or tool on a schedule.
Five things people use this data for
- Competitor price research. Export a rival's whole catalog with current and regular prices, then compare medians and price bands by category, as in the chart above.
- Promotion tracking. Pull only on-sale items to see how many products a competitor discounts and how deep, without checking product pages by hand.
- Assortment gaps. Compare category sizes and out-of-stock rates to find ranges a competitor can't currently supply.
- Catalog migration and backups. Move products, images, categories and attributes out of a WooCommerce store, for example into a new platform or a data warehouse.
- Market datasets. Build a dataset of products and price points across many stores in a niche for market sizing or a buyer's guide.
From one export to ongoing monitoring
A single export is a snapshot. Prices and stock move every week, and that's usually what you want to know about. Two ways to keep up:
- Monitor mode in the same actor. Set the output mode to changes only and schedule a daily run. After the first run, you only get new products, removed products and the ones whose price or stock changed, and you pay only for those rows.
- WooCommerce Catalog Monitor. A dedicated change tracker for when you watch a few competitors and want alerts. Our WooCommerce competitor price alerts guide walks through that setup with Slack and Google Sheets.
Limits and good practice
- Public data only. The export reads what any visitor can see. Password-protected stores, B2B shops that hide prices behind a login, and stores behind bot challenges come back as error rows and are not charged per product.
- Some stores are temporarily unavailable. As with landyachtz.com in this test, a store that is rate-limiting or down gets a clear error row. Try it again later.
- Fields depend on the store. If a store doesn't fill in SKUs or descriptions, the export can't invent them (see the completeness chart).
- Values come from the store as-is. On one Joco Cups variable product, the store's own data listed a current price (AUD 36.25) above its regular price (AUD 32.95). For variable products, check the price range field (AUD 24.71–32.95 there) as well as the single current price.
- Be a good citizen. Export at a reasonable frequency (weekly for research, daily for monitoring), and use the data in line with each store's terms and the rules where you operate.
FAQ
How do I export WooCommerce products to CSV without a plugin?
Paste the store URL into the WooCommerce Products Scraper, press Start, and download the dataset as CSV when the run finishes. Nothing is installed on the store and no admin login is needed.
Can I export products from a WooCommerce store I don't own?
Yes. The export reads the public catalog that any visitor can browse, so it works on competitor stores. Use the data in line with the store's terms.
What fields does the export include?
Name, SKU, product URL, current, regular and sale price, discount percent, currency, stock status, categories, tags, attributes, variation count, images, short and full description, and rating and review count when the store shows them.
How much does it cost to export a WooCommerce store?
$0.50 per 1,000 products plus $0.001 per run on the Apify Free plan, and a little less on paid plans. The 762-product run in this guide would cost $0.38 on the Free plan. You can set a maximum charge per run.
How long does an export take?
In our test, 762 products from four stores took about 80 seconds. Larger catalogs take longer, and you can filter by category, keyword, in-stock or on-sale to export less.
Can I export only products that are on sale or in stock?
Yes. Turn on the on-sale-only or in-stock-only filters, or limit the run to specific categories or a search term. You only pay for the products you get.
Can I track price and stock changes over time?
Yes. Use monitor mode with a daily schedule to get only new, removed and changed products, or use WooCommerce Catalog Monitor for alerts.
Is it OK to scrape a WooCommerce store?
The scraper reads only the public catalog that the store shows every visitor, at a modest pace. You are responsible for using the data in line with the store's terms and the law where you operate, and for not republishing images or descriptions you don't have rights to.
What happens if a store can't be read?
You get an error row that names the store and the reason. That store isn't charged per product, and the other stores in the run still finish.
Can I send the export to Google Sheets or use it from code?
Yes. Every run can go to Google Sheets, webhooks, Make, Zapier or n8n through Apify integrations, or be called from the Apify API, the Python and JavaScript clients, or Apify's MCP server for AI agents.
Try the WooCommerce products scraper
- WooCommerce Products Scraper on Apify Store: the form opens with jococups.com prefilled and a 10-product limit. Press Start for a sample that costs about $0.006, then add your own store URLs.
- Want change alerts instead? WooCommerce Catalog Monitor and the competitor price alerts guide.
- On Shopify too? See our Merchant Center feed drift guide for keeping prices and stock in sync with your ads.








