# WooCommerce Products Scraper: Prices, Stock & Catalog (`f0rty7even/woocommerce-products-scraper`) Actor

Scrape any WooCommerce store's product catalog via the public Store API: names, prices, sale prices, SKUs, stock, categories, and images. Filter by price, category, stock, and sale across many stores. No login.

- **URL**: https://apify.com/f0rty7even/woocommerce-products-scraper.md
- **Developed by:** [F0rty7even](https://apify.com/f0rty7even) (community)
- **Categories:** E-commerce, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.00 / 1,000 product scrapeds

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## WooCommerce Products Scraper: Prices, Stock & Catalog

**Export any WooCommerce store's product catalog into clean, structured data.** This **WooCommerce scraper** pulls every product from a store's public Store API and returns names, prices, sale prices, SKUs, stock status, categories, tags, and images, normalized into one tidy schema. Point it at one store or many, filter by price, category, stock, or sale, and get exactly the products you care about.

No login, no API key, no anti-bot workarounds. Just clean product data.

### Why this actor

- **Whole catalog in one run**: pages through the store's public Store API and returns every product.
- **Many stores at once**: pass a list of stores and get one unified dataset.
- **Prices done right**: the Store API returns prices as raw minor units; this actor converts them to real numbers, with sale price and currency.
- **Real filtering**: keep only what matches your price range, category, tag, stock, or on-sale status, or run a server-side search term.
- **Honest billing**: you are charged per product returned. Stores without the Store API cost you nothing.

### Use cases

- **Competitor price monitoring**: track a rival WooCommerce store's prices, discounts, and stock on a schedule.
- **Dropshipping and reselling**: pull supplier catalogs with SKUs and stock into your own system.
- **Market and pricing research**: compare pricing and assortment across many stores in a niche.
- **Catalog and feed building**: seed a marketplace, comparison site, or product feed from real listings.

### Input

| Field | Description |
|---|---|
| `storeUrls` | One or more WooCommerce store URLs or domains (e.g. `https://barefootbuttons.com`). |
| `search` | Optional server-side search term. |
| `minPrice` / `maxPrice` | Optional. Keep products in this price range (store currency units). |
| `category` | Optional. Keep only products in this category (name or slug, contains match). |
| `tag` | Optional. Keep only products carrying this tag. |
| `inStockOnly` | Keep only products currently in stock. |
| `onSaleOnly` | Keep only products currently on sale. |
| `includeBodyText` | Include the full product description as plain text. |
| `maxProductsPerStore` | Cap on products per store (main cost lever). |

### Output

Each product becomes one dataset item:

```json
{
  "store": "barefootbuttons.com",
  "productId": 1470,
  "name": "Replacement Set Screw and Allen Wrench Kit",
  "slug": "replacement-set-screw-and-allen-wrench-kit",
  "url": "https://barefootbuttons.com/product/replacement-set-screw-and-allen-wrench-kit/",
  "type": "variable",
  "sku": "18-AC-AS-02",
  "price": 1.95,
  "regularPrice": 1.95,
  "salePrice": 1.95,
  "onSale": false,
  "currency": "USD",
  "inStock": true,
  "isPurchasable": true,
  "averageRating": 0,
  "reviewCount": 0,
  "categories": ["Accessories"],
  "tags": [],
  "brands": [],
  "attributes": [{ "name": "Set Screw Size", "options": ["For V1/V2 Mini", "For V1/V2 Tallboy"] }],
  "variationsCount": 2,
  "featuredImage": "https://barefootbuttons.com/wp-content/uploads/....png",
  "images": ["https://barefootbuttons.com/wp-content/uploads/....png"],
  "shortDescription": "..."
}
````

### Pricing

Pay per result: you are charged **per product returned**. There is no monthly fee, and no charge for stores that do not expose the Store API or return nothing.

### Notes

- **Public data only.** This actor reads the store's own public Store API (`/wp-json/wc/store/...`), the same data any shopper's browser can load. It does not access orders, customers, or anything behind the store admin.
- **Coverage.** Most WooCommerce stores expose the Store API. A minority disable it or sit behind a security plugin that blocks it; those return an error item and are not billed. The default datacenter proxy works for most stores; if one blocks it, switch the proxy setting to Residential for the best coverage.

# Actor input Schema

## `storeUrls` (type: `array`):

One or more WooCommerce store URLs or domains (e.g. https://barefootbuttons.com or barefootbuttons.com).

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

Only products matching this search term (matched server-side by the store). Leave empty for the whole catalog.

## `minPrice` (type: `integer`):

Keep only products priced at or above this (in the store's own currency units). Leave empty for no minimum.

## `maxPrice` (type: `integer`):

Keep only products priced at or below this. Leave empty for no maximum.

## `category` (type: `string`):

Keep only products in this category (case-insensitive contains match on category name or slug). Leave empty for all.

## `tag` (type: `string`):

Keep only products carrying this tag (case-insensitive contains match on tag name or slug). Leave empty for all.

## `inStockOnly` (type: `boolean`):

Keep only products that are currently in stock.

## `onSaleOnly` (type: `boolean`):

Keep only products that are currently on sale.

## `includeBodyText` (type: `boolean`):

Include the full product description as plain text (HTML stripped). Off by default to keep records small.

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

Cap on products scraped per store (main cost lever).

## `proxyConfiguration` (type: `object`):

Proxy used to reach the stores. The default rotating datacenter proxy is included on all plans and works for most stores. If a specific store (behind a security plugin) blocks datacenter IPs, switch this to Residential for the best coverage.

## Actor input object example

```json
{
  "storeUrls": [
    "https://barefootbuttons.com"
  ],
  "inStockOnly": false,
  "onSaleOnly": false,
  "includeBodyText": false,
  "maxProductsPerStore": 1000,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
```

# Actor output Schema

## `products` (type: `string`):

One normalized product per item. Export as JSON, JSONL, CSV, or Excel.

# 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 = {
    "storeUrls": [
        "https://barefootbuttons.com"
    ],
    "proxyConfiguration": {
        "useApifyProxy": true
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("f0rty7even/woocommerce-products-scraper").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 = {
    "storeUrls": ["https://barefootbuttons.com"],
    "proxyConfiguration": { "useApifyProxy": True },
}

# Run the Actor and wait for it to finish
run = client.actor("f0rty7even/woocommerce-products-scraper").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "storeUrls": [
    "https://barefootbuttons.com"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}' |
apify call f0rty7even/woocommerce-products-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=f0rty7even/woocommerce-products-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "WooCommerce Products Scraper: Prices, Stock & Catalog",
        "description": "Scrape any WooCommerce store's product catalog via the public Store API: names, prices, sale prices, SKUs, stock, categories, and images. Filter by price, category, stock, and sale across many stores. No login.",
        "version": "0.1",
        "x-build-id": "6sbgZrDy9fVdY4nac"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/f0rty7even~woocommerce-products-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-f0rty7even-woocommerce-products-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/f0rty7even~woocommerce-products-scraper/runs": {
            "post": {
                "operationId": "runs-sync-f0rty7even-woocommerce-products-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/f0rty7even~woocommerce-products-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-f0rty7even-woocommerce-products-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "storeUrls"
                ],
                "properties": {
                    "storeUrls": {
                        "title": "WooCommerce store URLs",
                        "type": "array",
                        "description": "One or more WooCommerce store URLs or domains (e.g. https://barefootbuttons.com or barefootbuttons.com).",
                        "items": {
                            "type": "string"
                        }
                    },
                    "search": {
                        "title": "Search term (optional)",
                        "type": "string",
                        "description": "Only products matching this search term (matched server-side by the store). Leave empty for the whole catalog."
                    },
                    "minPrice": {
                        "title": "Min price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Keep only products priced at or above this (in the store's own currency units). Leave empty for no minimum."
                    },
                    "maxPrice": {
                        "title": "Max price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Keep only products priced at or below this. Leave empty for no maximum."
                    },
                    "category": {
                        "title": "Category filter",
                        "type": "string",
                        "description": "Keep only products in this category (case-insensitive contains match on category name or slug). Leave empty for all."
                    },
                    "tag": {
                        "title": "Tag filter",
                        "type": "string",
                        "description": "Keep only products carrying this tag (case-insensitive contains match on tag name or slug). Leave empty for all."
                    },
                    "inStockOnly": {
                        "title": "In-stock only",
                        "type": "boolean",
                        "description": "Keep only products that are currently in stock.",
                        "default": false
                    },
                    "onSaleOnly": {
                        "title": "On-sale only",
                        "type": "boolean",
                        "description": "Keep only products that are currently on sale.",
                        "default": false
                    },
                    "includeBodyText": {
                        "title": "Include description text",
                        "type": "boolean",
                        "description": "Include the full product description as plain text (HTML stripped). Off by default to keep records small.",
                        "default": false
                    },
                    "maxProductsPerStore": {
                        "title": "Max products per store",
                        "minimum": 1,
                        "maximum": 200000,
                        "type": "integer",
                        "description": "Cap on products scraped per store (main cost lever).",
                        "default": 1000
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Proxy used to reach the stores. The default rotating datacenter proxy is included on all plans and works for most stores. If a specific store (behind a security plugin) blocks datacenter IPs, switch this to Residential for the best coverage.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
