WooCommerce Products Scraper: Prices, Stock, Images & SKUs avatar

WooCommerce Products Scraper: Prices, Stock, Images & SKUs

Pricing

from $0.50 / 1,000 product scrapeds

Go to Apify Store
WooCommerce Products Scraper: Prices, Stock, Images & SKUs

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.50 / 1,000 product scrapeds

Rating

0.0

(0)

Developer

dheeraj kumar

dheeraj kumar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

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 WooCommerce Store API (/wp-json/wc/store/v1/products), the same API the store's own cart and checkout use. No login, no API keys, no browser, no HTML parsing that breaks when the theme 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.

Pricing: pay per event

EventPrice
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 (no public Store API, private/B2B shops, network errors) return an error row and aren't charged per product.

Use it from code

from apify_client import ApifyClient
client = 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

  • The store must expose the public WooCommerce Store API. It's on by default; stores behind Cloudflare challenges, password protection or B2B logins return an error row.
  • Requests are sequential with small delays, to be polite to stores.

Independent tool. Not affiliated with or endorsed by WooCommerce / Automattic. Use exported data in line with each store's terms.