# Chemist Warehouse Health Services Scraper (`parseforge/chemist-warehouse-health-scraper`) Actor

Scrape every health service Chemist Warehouse offers in store: name, category, description, image, availability and contact. Export to CSV, JSON, Excel, or XML.

- **URL**: https://apify.com/parseforge/chemist-warehouse-health-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Business
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.62 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 🏥 Chemist Warehouse Health Services Scraper

> 🚀 **Export every Chemist Warehouse health service in seconds.** 10 fields per service across the 22 in-store services and the Prescriptions page.

**Scrape the Chemist Warehouse health services directory: service name, category, description, hero image, availability and contact email.** No login or API key. Export to CSV, JSON, Excel, or XML.

Chemist Warehouse does not offer a public API for its health services, and the services are rendered from a CMS blob rather than plain HTML, so copying them by hand means clicking through every card. This Actor reads the public health services hub directly and returns each service as one flat row. It works for market research, competitor analysis, or keeping a pharmacy services dataset current.

| 🎯 Who uses it | 💡 What they scrape Chemist Warehouse for |
|---|---|
| Market researchers | Which pharmacist-led services Chemist Warehouse promotes and how they are grouped |
| Competitor analysts | How Chemist Warehouse positions vaccinations, consultations and medicine management against other chains |
| Health app developers | A clean list of pharmacy services with descriptions and images for a service finder |
| SEO agencies | The exact service names and copy Chemist Warehouse uses for local pharmacy queries |

### 📋 What the Chemist Warehouse Health Services Scraper does

This Actor collects the services listed on the Chemist Warehouse health services hub and returns each one as a flat row.

- 🏥 **22 in-store services:** vaccinations, medicine packing and review, UTI and contraception consultations, travel health, wound care, quit smoking, NDSS access, compounding, aged care, Instant Consult and Optometry.
- 🗂 **Category:** the section each service sits in (Medicine Management, Women's Health, General Health, Professional Advice, Convenient Support, Pharmacy Services).
- 🖼 **Hero image:** the service image served from the Chemist Warehouse CDN.
- 📍 **Availability:** flags services the page marks as "available at select pharmacies".
- ✉️ **Contact email:** published for Compounding and Aged Care.
- 🔗 **Start URLs:** feed the hub plus any sub-page (Prescriptions, Instant Consult, Contact Lenses); sub-pages return one summary row each.

> 💡 **Why it matters:** the source lists a fixed set of services (22 on the hub plus the Prescriptions page as this README was written), so one run gives you the complete, current directory rather than a sample.

### 🎬 Full Demo (🚧 Coming soon)

### 📊 Output

| Field | Description |
|---|---|
| 🖼 `imageUrl` | Hero image of the service |
| 🏥 `title` | Service name |
| 🔗 `url` | Page where the service is listed |
| ➡️ `learnMoreUrl` | Dedicated service or booking page, or `N/A` |
| 🗂 `category` | Section the service belongs to |
| 📝 `description` | Service description text |
| 📍 `availability` | `Select pharmacies` when the page says so, otherwise `Not Disclosed` |
| ✉️ `contactEmail` | Published contact email, or `Not Disclosed` |
| 🕒 `scrapedAt` | ISO 8601 timestamp of extraction |
| ❌ `error` | Error message for a page that could not be fetched, `null` on success |

Three real records from the verification run (dataset F1DL3bFVxRpjdoeOR):

```json
[
  {
    "imageUrl": "https://images.ctfassets.net/hzgho8wo5m1w/3TxqD3BrPsTmZVAkWuy6EY/c39dacc9abca983ea21275f830f421f9/Health_services-Vaccination.jpg",
    "title": "Vaccination Services",
    "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy",
    "learnMoreUrl": "https://rsvp.chemistwarehouse.com.au/",
    "category": "Health Services",
    "description": "Our qualified pharmacists provide a range of vaccinations to help protect you and your family. Our service is quick, convenient and affordable.",
    "availability": "Not Disclosed",
    "contactEmail": "Not Disclosed",
    "scrapedAt": "2026-09-08T01:11:56.515Z",
    "error": null
  },
  {
    "imageUrl": "https://images.ctfassets.net/hzgho8wo5m1w/5Amyvqak3MQmFJ93OsyWJt/5bda4db6f796b79dff590868fa40fd67/Medicine_Packing.jpg",
    "title": "Medicine Packing",
    "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy",
    "learnMoreUrl": "N/A",
    "category": "Medicine Management",
    "description": "Take the stress out of managing your medicines with our convenient blister pack and sachet medicine packing services.",
    "availability": "Not Disclosed",
    "contactEmail": "Not Disclosed",
    "scrapedAt": "2026-09-08T01:11:56.515Z",
    "error": null
  },
  {
    "imageUrl": "https://images.ctfassets.net/hzgho8wo5m1w/619HTRpJltciNF1KxX16h0/4150bddc34fc9a487276489092ea604a/Administration_of_Medicine.jpg",
    "title": "Administration of Medicine",
    "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy",
    "learnMoreUrl": "N/A",
    "category": "Medicine Management",
    "description": "Are you using injectable medicine? Speak with our pharmacists for expert advice, support and administration assistance. Available at select pharmacies.",
    "availability": "Select pharmacies",
    "contactEmail": "Not Disclosed",
    "scrapedAt": "2026-09-08T01:11:56.515Z",
    "error": null
  }
]
```

### ✨ Why choose this Actor

| | What you get |
|---|---|
| **No API needed** | Reads the public website directly, no registration or API key required. |
| **Structured data** | Every service is one row with the same 10 fields, no nulls except the error column. |
| **Complete** | One run returns the whole directory, so a paid run costs cents. |
| **Multiple export formats** | Download your data as CSV, JSON, Excel, or XML. |

### 📈 How it compares to alternatives

No other Store actor targets the Chemist Warehouse health services directory, so the honest comparison is with the alternatives teams actually weigh.

| | Chemist Warehouse Health Services Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but an hour per pull |
| When Chemist Warehouse changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### 🚀 How to use

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [Chemist Warehouse Health Services Scraper](https://apify.com/parseforge/chemist-warehouse-health-scraper?fpr=vmoqkp).
3. Keep the default start URLs (the health services hub and the Prescriptions page) or add sub-pages, set **Max Items**, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect the full directory in one run.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### 💼 Business use cases

**📊 Map the service catalogue.**

A market researcher runs the Actor weekly and diffs the rows to see which pharmacist-led services Chemist Warehouse adds, renames or drops.

**🔍 Monitor competitor offerings.**

A pharmacy chain analyst tracks new consultations such as UTI treatment or hormonal contraception and adjusts their own service roadmap.

**📍 Build a service finder.**

An app developer seeds a "what can my pharmacist do" feature with the service names, descriptions and images.

**📈 Match local search demand.**

An SEO agency mirrors the exact service wording Chemist Warehouse uses to plan content for local pharmacy queries.

### 🔌 Automating Chemist Warehouse Health Services Scraper

Schedule the Actor in Apify to run daily or weekly, then push the dataset wherever it is needed: a Google Sheet through the Apify integration, a Slack alert when a new service appears through Make or Zapier, or a warehouse table through Airbyte. A webhook on run completion lets your own code pick up the dataset ID and fetch the items.

### 🌟 Beyond business use cases

- **Research:** track how a national pharmacy chain expands pharmacist scope of practice over time.
- **Personal:** keep a list of what your local pharmacy can do before booking a GP.
- **Non-profit:** health literacy projects can reuse the plain-language service descriptions.
- **Experimentation:** a small, clean dataset for testing pipelines and dashboards.

### 🤖 Ask an AI assistant about this scraper

Give an AI agent live access to Chemist Warehouse through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com?tools=parseforge/chemist-warehouse-health-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### ❓ Frequently Asked Questions

#### ❓ What data does this Actor return?

Each health service as a flat row with image, name, page URL, learn-more URL, category, description, availability, contact email, timestamp and error column. See the sample above.

#### ❓ How many services are there?

The hub lists 22 services and the Prescriptions page adds one summary row, so a full run returns 23 rows. The Actor returns whatever the site lists on the day, so the number moves with the site.

#### ❓ Why am I getting no results?

Check that your start URLs are under `https://www.chemistwarehouse.com.au/health-services-and-pharmacy`. The old `/health-services` path returns 404 and produces an error row instead of data.

#### ❓ Why did the run stop after 10 items?

Free Apify users are limited to 10 items per run. Upgrade to a paid plan and set Max Items to 25 or more to collect the full directory.

#### ❓ Why do some fields say "Not Disclosed" or "N/A"?

Only Compounding and Aged Care publish a contact email, and only some services have a dedicated page or an "available at select pharmacies" note. Those cells carry a sentinel instead of being left blank.

#### ❓ Do I need an API key or login?

No. The Actor scrapes the public Chemist Warehouse website directly. You only need an Apify account to run it.

#### ❓ Can I scrape store locations or opening hours?

No. This Actor covers the health services directory only; store data lives on a different part of the site.

#### ❓ Can I scrape a sub-page such as Instant Consult?

Yes. Add its URL as a start URL and you get one summary row built from the page title, description and hero image.

#### ❓ What export formats are supported?

CSV, JSON, Excel, or XML from the Apify platform, or the items endpoint of the API.

#### ❓ Can I schedule this Actor to run regularly?

Yes. Set up a schedule in Apify to run it daily, weekly, or at any interval you need.

#### ❓ Which proxy does it use?

Australian residential proxies by default, because the site sits behind Cloudflare. You can change the proxy in the Network section of the input.

#### ❓ Is this Actor affiliated with Chemist Warehouse?

No. It is an independent scraper built by ParseForge and is not endorsed by or affiliated with Chemist Warehouse Pty Ltd.

### 🔌 Integrate with any app

Connect the Actor to Make, Zapier, Slack, Airbyte, GitHub Actions or Google Drive through the Apify integrations tab, or call the API from any language with the run and dataset endpoints.

### 🔗 Recommended Actors

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA) with your run ID, your input, and what you expected.

> **⚠️ Disclaimer:** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by Chemist Warehouse Pty Ltd. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

## `startUrls` (type: `array`):

Chemist Warehouse health services pages. The hub https://www.chemistwarehouse.com.au/health-services-and-pharmacy lists all 22 in-store services (one row each); sub-pages such as /prescriptions, /instant-consult or /contact-lenses return one summary row each.

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

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

Proxy used for every request. Default: Apify residential proxies located in Australia.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy"
    },
    {
      "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy/prescriptions"
    }
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": [
      "RESIDENTIAL"
    ],
    "apifyProxyCountry": "AU"
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Key fields: image, service, category, description, availability

## `fullData` (type: `string`):

Complete dataset with all 10 fields

# 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 = {
    "startUrls": [
        {
            "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy"
        },
        {
            "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy/prescriptions"
        }
    ],
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/chemist-warehouse-health-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 = {
    "startUrls": [
        { "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy" },
        { "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy/prescriptions" },
    ],
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/chemist-warehouse-health-scraper").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 '{
  "startUrls": [
    {
      "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy"
    },
    {
      "url": "https://www.chemistwarehouse.com.au/health-services-and-pharmacy/prescriptions"
    }
  ],
  "maxItems": 10
}' |
apify call parseforge/chemist-warehouse-health-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/chemist-warehouse-health-scraper"
        }
    }
}

```

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/OpZghivbYEs3PKl9D/builds/Sxps6inFJvoAMh3et/openapi.json
