WooCommerce Product Scraper avatar

WooCommerce Product Scraper

Pricing

from $4.00 / 1,000 product returneds

Go to Apify Store
WooCommerce Product Scraper

WooCommerce Product Scraper

Scrape public WooCommerce product catalogs for price, stock, rating, and category monitoring. Use for competitor or supplier research, not private data. Returns normalized product rows with price, availability, reviews, and source provenance. $0.004/product plus a $0.00005 start fee; usage extra.

Pricing

from $4.00 / 1,000 product returneds

Rating

0.0

(0)

Developer

Khadin Akbar

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Extract public, published product catalog data from WooCommerce stores through its Store API. Each dataset row is a normalized product record with price, stock, rating, categories, images, and source-endpoint provenance.

Use it for competitor price tracking, supplier catalog research, and e-commerce assortment analysis. Do not use it for orders, customers, checkout details, unpublished products, or a store whose public Store API is disabled.

Output

One validated dataset item per public product. The output stays compact enough for agent use; store-level diagnostics are written separately to OUTPUT and RUN_SUMMARY.

FieldDescription
productId, title, productUrlStable public product identifiers and canonical URL
price, regularPrice, salePrice, currencyAPI prices normalized from WooCommerce minor units
stockStatus, inStock, onBackorder, lowStockRemainingPublished availability signals
averageRating, reviewCountPublic review signals
categories, tags, attributes, variationsCountProduct taxonomy and option metadata
imageUrl, imageUrlsPrimary image plus up to ten public image URLs
storeUrl, storeDomain, sourceEndpoint, scrapedAtProvenance and freshness fields

Pricing

EventPrice
Valid actor start$0.00005 / run
Validated product returned$0.004 / product

A default 100-product run is capped at $0.40005 in event charges, plus Apify platform usage. Products that fail validation, blocked stores, invalid inputs, and empty stores are never billed as returned products. The deployed actor will use Pay per event + usage, so proxy and compute usage are shown separately by Apify.

Input

storeUrls is the only required input. Provide a store homepage or a WooCommerce installation in a subdirectory.

{
"storeUrls": ["https://porterandyork.com"],
"maxProducts": 100,
"search": "steak",
"stockStatuses": ["instock"],
"onSale": false,
"sortBy": "price",
"sortOrder": "asc"
}
FieldUse it for
storeUrlsOne to 100 public WooCommerce store URLs. This is not a product or admin URL.
maxProductsOne run-wide product cap, from 1 to 10,000.
searchOptional Store API product text search. Leave empty for the full catalog.
categoryIdsOptional public WooCommerce category IDs, for example [12, 27].
stockStatusesOptional instock, outofstock, and/or onbackorder filter.
onSale, featuredSet to true only to filter to those products. false does not add a filter.
sortBy, sortOrderStore API ordering: date, price, popularity, or rating; asc or desc.
proxyConfigurationOptional Apify Proxy fallback for stores that block direct API requests. No cookies or credentials are accepted.

Example output

{
"productId": "42",
"title": "Organic Espresso Blend",
"productUrl": "https://example.com/product/organic-espresso-blend/",
"storeDomain": "example.com",
"sourceEndpoint": "https://example.com/wp-json/wc/store/v1/products?page=1&per_page=100",
"currency": "USD",
"price": 19.99,
"regularPrice": 24.99,
"salePrice": 19.99,
"onSale": true,
"stockStatus": "instock",
"averageRating": 4.75,
"reviewCount": 12,
"categories": ["Coffee"],
"attributes": [{ "name": "Grind", "values": ["Whole bean", "Ground"] }],
"scrapedAt": "2026-07-14T12:00:00.000Z"
}

How it works

For each store, the actor requests the unauthenticated public endpoint:

GET /wp-json/wc/store/v1/products?page=1&per_page=100

It applies supported Store API filters, follows pagination, normalizes the public response, validates the complete product contract, then writes and bills the row together through the Apify SDK. It retries temporary 429 and 5xx responses with bounded backoff; 401, 403, and 404 responses are not retried indefinitely.

The actor never tries the authenticated WooCommerce admin REST API. It therefore cannot return private products, exact inventory records hidden by a store, customer data, orders, or content that the Store API does not expose.

Results and failure semantics

Every terminal path writes two key-value records:

KeyPurpose
OUTPUTCompact outcome, result count, warnings, and charged-event count
RUN_SUMMARYDetailed store diagnostics, coverage, errors, and charge-cap state

The actor uses these outcomes truthfully:

  • COMPLETE — all requested stores produced the advertised data.
  • PARTIAL — useful products were returned, but a store failed or a cap/deadline stopped additional work.
  • VALID_EMPTY — functioning Store API responses had no products matching the filters.
  • INVALID_INPUT — correct the request; no Store API requests or result charges were made.
  • UPSTREAM_FAILED — valid input could not obtain any usable Store API product response.

Dataset rows never contain synthetic error records. This keeps CSV, JSON, and MCP consumers from mistaking a diagnostic for a product.

API and AI-agent use

This is a regular Apify Actor and can be called through the Apify API, schedules, integrations, or the Apify MCP server after deployment. It is a good fit for an agent that needs structured public WooCommerce catalog data from a known store URL; it is not a substitute for a general website crawler or a WooCommerce administration API.

For a small, predictable call, keep maxProducts at 100 or below. Inspect OUTPUT before treating a partial run as a full catalog export.

Limitations

  • Only published products returned by the target's public WooCommerce Store API are in scope.
  • Stores can disable, restrict, rate-limit, or geo-block the API; enable Apify Proxy only when needed.
  • WooCommerce extensions can add or remove fields. The actor skips malformed rows rather than fabricating incomplete billable data.
  • Product variations are represented by a count and public attributes, not separate variation rows.
  • Product descriptions are converted to plain text and bounded to keep records agent-friendly.

This actor collects only publicly accessible product catalog data. You are responsible for complying with each target's terms, robots directives, applicable law, copyright, database rights, and privacy obligations. Do not use it to access private, authenticated, or personal data.