# Chemistwarehouse Product Parser Script (`hello.datawizards/chemistwarehouse-product-parser-script`) Actor

Extract detailed Chemist Warehouse product data using this Apify Actor. Scrape prices, availability, images, descriptions, ingredients, and directions into clean JSON. Ideal for price tracking, market research, e-commerce automation, and pharmacy product intelligence at scale.

- **URL**: https://apify.com/hello.datawizards/chemistwarehouse-product-parser-script.md
- **Developed by:** [datawizards](https://apify.com/hello.datawizards) (community)
- **Categories:** Automation, Lead generation, E-commerce
- **Stats:** 3 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $4.00 / 1,000 results

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

## 🧪 ChemistWarehouse Product Parser · Apify Actor

Extract **detailed, accurate product information** from Chemist Warehouse product pages using clean, structured JSON. This Apify Actor is purpose-built for **e‑commerce intelligence, pharmacy product monitoring, price tracking, and data automation**.

### Built and maintained by **DataWizards**.

### 📌 What Is `ChemistWarehouse Product Parser`?

The **ChemistWarehouse Product Parser Script** is an Apify Actor that scrapes **individual Chemist Warehouse product URLs** and converts them into structured, analysis‑ready JSON data.

It eliminates manual browsing and enables teams to programmatically collect pricing, availability, ingredients, descriptions, and images from one of Australia’s largest pharmacy retailers.

This actor is ideal for developers, analysts, brands, and data teams who need **reliable Chemist Warehouse product data at scale**.

---

### 🧠 Key Features

* ✅ Extracts **complete product details** from Chemist Warehouse pages
* ✅ Clean, **structured JSON output**
* ✅ Captures title, category/type, price, stock status, and images
* ✅ Includes **ingredients & directions** when available
* ✅ Supports **Apify Residential Proxy** for reduced blocking
* ✅ Lightweight, fast, and easy to integrate

---

### 🛠️ Input Schema

This actor requires minimal configuration.

#### 🔧 Sample Input

```json
{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}
````

#### 🔐 Proxy Configuration

- **useApifyProxy**: Must be set to `true`
- **apifyProxyGroups**: Use `RESIDENTIAL` for higher success rates and stability

***

### 📤 Output Example

The actor returns an array of structured product objects:

```json
[
  {
    "url": "https://www.chemistwarehouse.com.au/buy/120898/elizabeth-arden-white-tea-mandarin-blossom-eau-de-toilette-100ml",
    "Title": "Elizabeth Arden White Tea Mandarin Blossom Eau de Toilette 100ml",
    "Types": "fragrances",
    "Description": "A vibrant and revitalising solar floral...",
    "Price": 39.99,
    "Availability": "in-stock",
    "Image_URL": [
      "https://www.chemistwarehouse.com.au/_next/image?..."
    ],
    "Ingredients": [
      "Alcohol Denat., Parfum (Fragrance), Aqua/Water/Eau, ..."
    ],
    "Directions": "Spritz on skin as desired..."
  }
]
```

***

### 🚀 Use Cases

- 🛍️ **E‑commerce Price Monitoring** – Track live Chemist Warehouse pricing
- 📊 **Market & Product Research** – Analyze beauty, fragrance, and health items
- 🧾 **Product Catalog Creation** – Populate internal databases or PIM systems
- 🤖 **Automation Pipelines** – Feed data into dashboards, APIs, or BI tools
- 🏷️ **Brand & Competitor Intelligence** – Monitor listings and availability

***

### ✅ Best Practices

- Always use **Residential proxies** for production workloads
- Avoid overly frequent runs to reduce throttling
- Validate product URLs before large batch executions
- Store outputs in Apify Datasets for tracking changes over time

***

### ⭐ Why Use This Actor?

- Designed specifically for **Chemist Warehouse page structure**
- Handles dynamic content reliably
- Maintained by **experienced Apify engineers**
- Optimized for **SEO‑ready, analytics‑friendly data**

***

### 🤝 Support & Customization

Need **custom fields**, **simplified outputs**, or workflow integration?

> If there is any change you want, **DataWizards are always ready for you**.

📩 **Email**: <hello.datawizard@gmail.com>
✉️ **Subject**: `ChemistWarehouse Actor – Custom Support`

🔗 **LinkedIn**: linkedin.com/in/data-wizards-aa8080342

***

### 🐞 Bug Reports & Feedback

Encountered a bug or unexpected behavior?

📧 Email: `hello.datawizard@gmail.com`
✉️ **Subject**: `Bug Report – ChemistWarehouse Product Parser`

Or report the issue directly on the Apify platform.

***

### 🔍 SEO Keywords

`Chemist Warehouse scraper`, `Chemist Warehouse product API`, `Apify Chemist Warehouse Actor`, `pharmacy product scraper`, `beauty product data extraction`, `price monitoring Australia`, `retail intelligence scraper`, `structured product JSON`

***

#### 🏁 Start scraping Chemist Warehouse product data smarter with **ChemistWarehouse Product Parser** — reliable, scalable, and built for professionals.

# Actor input Schema

## `ListingUrls` (type: `array`):

The listing urls for the spider.

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

Specifies proxy servers that will be used by the scraper in order to hide its origin.

## Actor input object example

```json
{
  "ListingUrls": [
    "https://www.chemistwarehouse.com.au/buy/77228/yves-saint-laurent-opium-black-eau-de-parfum-90ml",
    "https://www.chemistwarehouse.com.au/buy/120898/elizabeth-arden-white-tea-mandarin-blossom-eau-de-toilette-100ml"
  ],
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}
```

# 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 = {
    "proxyConfiguration": {
        "useApifyProxy": true,
        "apifyProxyGroups": [
            "RESIDENTIAL"
        ]
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("hello.datawizards/chemistwarehouse-product-parser-script").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 = { "proxyConfiguration": {
        "useApifyProxy": True,
        "apifyProxyGroups": ["RESIDENTIAL"],
    } }

# Run the Actor and wait for it to finish
run = client.actor("hello.datawizards/chemistwarehouse-product-parser-script").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 '{
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ]
  }
}' |
apify call hello.datawizards/chemistwarehouse-product-parser-script --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=hello.datawizards/chemistwarehouse-product-parser-script",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Chemistwarehouse Product Parser Script",
        "description": "Extract detailed Chemist Warehouse product data using this Apify Actor. Scrape prices, availability, images, descriptions, ingredients, and directions into clean JSON. Ideal for price tracking, market research, e-commerce automation, and pharmacy product intelligence at scale.",
        "version": "0.0",
        "x-build-id": "ljSdSxwVBkgjdCPkv"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/hello.datawizards~chemistwarehouse-product-parser-script/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-hello.datawizards-chemistwarehouse-product-parser-script",
                "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/hello.datawizards~chemistwarehouse-product-parser-script/runs": {
            "post": {
                "operationId": "runs-sync-hello.datawizards-chemistwarehouse-product-parser-script",
                "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/hello.datawizards~chemistwarehouse-product-parser-script/run-sync": {
            "post": {
                "operationId": "run-sync-hello.datawizards-chemistwarehouse-product-parser-script",
                "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",
                "properties": {
                    "ListingUrls": {
                        "title": "Listing Urls",
                        "minItems": 1,
                        "type": "array",
                        "description": "The listing urls for the spider.",
                        "default": [
                            "https://www.chemistwarehouse.com.au/buy/77228/yves-saint-laurent-opium-black-eau-de-parfum-90ml",
                            "https://www.chemistwarehouse.com.au/buy/120898/elizabeth-arden-white-tea-mandarin-blossom-eau-de-toilette-100ml"
                        ],
                        "items": {
                            "type": "string"
                        }
                    },
                    "proxyConfiguration": {
                        "title": "Proxy configuration",
                        "type": "object",
                        "description": "Specifies proxy servers that will be used by the scraper in order to hide its origin.",
                        "default": {
                            "useApifyProxy": true,
                            "apifyProxyGroups": [
                                "RESIDENTIAL"
                            ]
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
