# WooCommerce — Public Product Catalog Export (`jpmarketdata/woocommerce-public-product-catalog-export`) Actor

Export multi-store public WooCommerce parent catalogs with exact currency scales, SKU, variable-price ranges, stock flags and coverage. One $0.0005 product row, no start fee.

- **URL**: https://apify.com/jpmarketdata/woocommerce-public-product-catalog-export.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$0.50 / 1,000 product exporteds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## WooCommerce — Public Product Catalog Export

**Price:** $0.0005 per delivered public product, including published variable-product price ranges when available. No start or secondary fee.

Export current public parent-product catalogs from multiple independent WooCommerce stores for supplier and competitive research. Prices use each source's exact declared decimal scale, including variable-parent ranges when actually published. Independent tool, not affiliated with stores or WooCommerce.

### Input

`domains` accepts1–5 public store domains/origins, default Porter & York and Offerman Woodshop. Anonymous `/wp-json/wc/store/v1/products` must be enabled and allowed by store robots. Optional `search` filters product names and `categoryIds` uses store-local public IDs consistently. Empty filters export the parent catalog. `maxProductsPerStore` defaults1,000 and `maxProducts`5,000; all sources validate before delivery and caps are explicit.

### Output

One unique `(store, productId)` parent-product row with public name/SKU/type/link, currency/minor unit/raw price and exact decimal prices, source-provided min/max range, parent stock/backorder flags and categories/attributes. `priceRangeAvailable=false`, empty range object and empty min/max strings mean the source did not publish a range; do not read them as zero or identical prices. Parent stock is not variant stock or available quantity. Variations, shipping, final checkout/tax-adjusted prices and sold prices are not promised. Source totals/pages/fetch time and coverage flags describe the capped, non-atomic public snapshot. Uncharged `COVERAGE` KVS reports source and global caps.

### Limits

HTTP/JSON only,256MB/300seconds,at most60requests including robots/redirects,10pages/store at100products/page,4MiB decoded/page,64MiB transfer/run and24MiB staged JSON,minimum1s serial spacing per origin. Neutral `orderby=id&order=asc`, total-header reconciliation and repeated-page detection. At most2 manually validated redirects; public IPv4/IPv6 DNS addresses are checked/pinned before every connection, with robots checks for each final origin. Credentials, private/reserved/metadata destinations, nonstandard ports and auth REST routes are rejected. Products/permalinks/images are not fetched separately. Any required source403/429/timeout/non-JSON/malformed contract/oversize fails before paid output; overall empty/no-match is uncharged error. One$0.0005 `product-exported` event per delivered unique parent row, no start/secondary/default-dataset surcharge.

### Privacy

Public product facts only. Omit descriptions/reviews, contacts/people, customer/account/order/cart/payment records, password-protected material and arbitrary extensions. Screen returned product/category/attribute strings and URLs for email/phone/secret values. No cookies, login, credentials or raw source dumps; preserve public source attribution. Store terms apply and this tool does not bypass security or imply commercial permission.

# Actor input Schema

## `domains` (type: `array`):

One to five public store domains/origins with an enabled anonymous Store API. No paths, credentials or private hosts. $0.0005 per delivered product.

## `search` (type: `string`):

Optional public Store API product-name search. Empty exports all public parent products. $0.0005 per delivered product.

## `categoryIds` (type: `array`):

Optional positive category IDs applied to every selected store; empty exports all categories. $0.0005 per delivered product.

## `maxProductsPerStore` (type: `integer`):

One to1,000 public parent products per store. API pages100 and neutral ID ascending; caps are reported. $0.0005 per delivered product.

## `maxProducts` (type: `integer`):

One to5,000 parent-product rows across all selected stores after fair store allocation; all sources validate before delivery. $0.0005 per delivered product.

## Actor input object example

```json
{
  "domains": [
    "porterandyork.com",
    "offermanwoodshop.com"
  ],
  "search": "",
  "categoryIds": [],
  "maxProductsPerStore": 1000,
  "maxProducts": 5000
}
```

# Actor output Schema

## `results` (type: `string`):

One delivered product per row with published business data and source links.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/woocommerce-public-product-catalog-export").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/woocommerce-public-product-catalog-export").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call jpmarketdata/woocommerce-public-product-catalog-export --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,jpmarketdata/woocommerce-public-product-catalog-export"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/4WCtX7MrHDsnuD7QA/builds/gCf7fJH1JJe8ZdOnm/openapi.json
