Chemist Warehouse AU - Products, Prices & Reviews avatar

Chemist Warehouse AU - Products, Prices & Reviews

Pricing

from $1.20 / 1,000 products

Go to Apify Store
Chemist Warehouse AU - Products, Prices & Reviews

Chemist Warehouse AU - Products, Prices & Reviews

Scrape chemistwarehouse.com.au products with prices, RRP, discounts, stock, images, ingredients, directions, warnings, categories, and full customer reviews. Search by keyword or product URLs, with brand, category, price, in-stock filters, and price sorting.

Pricing

from $1.20 / 1,000 products

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

1

Monthly active users

10 hours ago

Last modified

Share

Chemist Warehouse Scraper: Products, Pricing & Reviews

Chemist Warehouse Scraper turns the Chemist Warehouse pharmacy and beauty catalogue into structured product data. Search by keyword, browse the Promotions or Clearance collections, or paste product and listing URLs, and get pricing with the was-price and savings the site itself shows, stock and delivery flags, pharmacy scheduling details, full descriptions, and every individual customer review. Export the dataset as JSON, CSV or Excel, or pull it straight into your app through the API.

Why This Scraper?

  • Three ways in. Search by keyword, browse the Promotions or Clearance collections, or paste product and catalogue/category listing URLs.
  • Real was-price and savings, never invented. wasPrice, savingsAmount and savingsPercent are filled in only when the site itself shows a reduction below RRP; equal pricing returns null instead of a fabricated saving.
  • Pharmacy detail beyond the product card. Prescription type, poison schedule, purchase limits, Appendix H eligibility and instant-consult eligibility all come through as separate fields.
  • Every individual review, not just a rating average. Title, author, body, date, helpful-vote counts and the star-rating breakdown, with an adjustable cap per product.
  • Real filters that actually apply. Brand and category narrow a keyword search. Price range and in-stock only narrow both a keyword search and a pasted catalogue/category listing URL.
  • Built for schedules. Incremental mode returns only new and changed products on recurring runs, and a resume option continues one interrupted catalogue pull without re-scraping what is already saved.
  • Send results straight into your apps through MCP connectors, no extra code required.

Use Cases

  • Price and promotion tracking: monitor RRP, savings and promo labels across the Promotions and Clearance collections to catch new discounts.
  • Pharmacy compliance and catalogue audits: check schedule, prescription type, Appendix H and purchase-limit fields across a brand or category.
  • Review and reputation research: pull every review for a product line to analyse sentiment, ratings trends and complaint patterns.
  • Competitor and assortment analysis: build a dataset of a category or brand's full range, pricing and stock status.
  • Deal alerts and dashboards: feed a price-comparison site, alert bot or inventory dashboard with a recurring incremental feed.

Data You Get

Sample shape: values are illustrative placeholders, not from a live record.

FieldExample
productId57134
sku"2720171"
name"Blackmores Bio C 1000 150 Tablets"
title"Blackmores Bio C 1000 150 Tablets"
brand"Blackmores"
url"https://www.chemistwarehouse.com.au/buy/57134-blackmores-bio-c-1000-150-tablets"
price21.99
rrp48.99
wasPrice48.99 (only set when below RRP)
savingsAmount / savingsPercent27.00 / 55.11
isOnSpecialtrue
promoLabel"Better Than Half Price" (the site's own catalogue badge)
currency"AUD"
isInStocktrue
isClickAndCollect / isFastDeliverytrue / true
prescriptionType / schedule"Pharmacist Only Medicine" / "S3"
isAppendixHfalse
purchaseLimit / transactionLimitnull / 6
rating / reviewCount4.6286 / 35
categories["Chemist Warehouse Australia", "Vitamins & Supplements"]
ingredients"Ascorbic Acid (Vitamin C) ..."
directions / warnings"Adults take 1 tablet a day ..." / "Vitamin supplements should not replace ..."
images["https://static.chemistwarehouse.com.au/products/57134/1.jpg"]
createdAt / scrapedAt"2019-03-04T00:00:00.000Z" / "2026-09-29T04:00:00.000Z"

When Fetch reviews is on, each product record also carries a reviews array plus reviewsTotal and ratingBreakdown. Every review entry carries rating, title, author, content, createdAt, positiveFeedbackCount, negativeFeedbackCount and syndicationName (the review platform that supplied it, when the site reports one); reviewsTotal is the site's own total review count for the product, which can be higher than the number of entries returned if Max reviews per product capped it, and ratingBreakdown is the star-by-star distribution the site publishes.

How to Use

  1. Pick a mode: search (keywords and filters) or url (paste product pages or catalogue/category listing links).
  2. For search mode, add one or more Search keywords, and optionally narrow with Specials / offers, Brand, Category, a price range or In-stock only.
  3. Turn on Fetch reviews to collect individual customer reviews, and set Max reviews per product to cap how many are pulled per item.
  4. Set Max items (and optionally Max pages) to control run size and cost, then click Start.

Search by keyword:

{
"mode": "search",
"queries": ["panadol"],
"maxItems": 30
}

Browse a specials collection with price and stock filters:

{
"mode": "search",
"specialsCategory": "promotions",
"minPrice": 5,
"maxPrice": 50,
"inStockOnly": true,
"sort": "price_asc",
"maxItems": 50
}

Paste product and listing URLs, with reviews:

{
"mode": "url",
"productUrls": [
"https://www.chemistwarehouse.com.au/buy/145683/panadol-500mg-16-tablets",
"https://www.chemistwarehouse.com.au/shop-online/3240/clearance"
],
"fetchReviews": true,
"maxReviewsPerProduct": 20
}

Narrow a whole category by brand:

{
"mode": "search",
"brand": "Blackmores",
"category": "Vitamins & Supplements",
"maxItems": 100
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/chemistwarehouse-com-au-scraper").call(run_input={"mode": "search", "queries": ["panadol"], "maxItems": 30})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["name"], product["price"], product["isOnSpecial"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/chemistwarehouse-com-au-scraper').call({ mode: 'search', queries: ['panadol'], maxItems: 30 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

How Max items and Max pages shape a run

Chemist Warehouse's own product search only returns up to 1,000 results for a single query or filter combination. A run stops once Max items is reached, or once Max pages result pages have been walked for the current query, whichever comes first. To reach deeper into a large catalogue, narrow with brand, category, price or a specials collection rather than raising Max items alone.

Resume and recurring updates

  • Resume (resumeFromRunId) continues one interrupted catalogue pull: paste its run or dataset ID and the actor skips every product already saved there, so you don't pay twice. It cannot be combined with an incremental-mode search that already has saved state; the run fails with a clear message asking you to pick one or the other.
  • Incremental mode (incrementalMode) is for scheduled runs over the same search. Each product is classified NEW, UPDATED (with changedFields), UNCHANGED (suppressed and not billed unless emitUnchanged is on), or EXPIRED (only after a run that scanned the whole tracked search, and only with emitExpired on). REAPPEARED is produced only for a product that a previous emitExpired run had already marked EXPIRED, and that is then found again in a later run; until that has happened once, a product that comes back after being missed simply classifies as UPDATED or UNCHANGED, never REAPPEARED. stateKey names or shares the stored state; leaving it empty derives a separate state automatically per mode/query/filter/fetch-reviews combination.

Send results into your apps (MCP connectors)

Optionally pipe the scraped products into the apps you already use, via Model Context Protocol (MCP) connectors. This is an extra delivery step after the scrape: the Apify dataset is never changed.

What gets written to the connector: a condensed, human-readable summary of each product, not the full JSON. Each item becomes one entry with a title and its key fields flattened to plain text. The complete record always stays in the Apify dataset.

  1. Authorize a connector once under Apify > Settings > Integrations (Notion, Linear, Airtable, or Apify).
  2. Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
  3. For Notion, also set notionParentPageUrl to the page where items should be created.

The connection is mediated by Apify's MCP proxy, so this actor never sees your third-party credentials. Leave the field empty to skip.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch (keyword and filters) or url (paste product or listing URLs).
queriesarray["vitamin c"]Search mode only. One or more keywords. Leave empty to browse the whole catalogue with the filters below.
brandstring(none)Search mode only. Restrict to one brand, exact spelling as shown on the site.
categorystring(none)Search mode only. Restrict to one category, exact spelling as shown on the site.
specialsCategorystring`` (Any, all products)Search mode only. promotions or clearance, or empty for all products.
productUrlsarraynone (prefill: ["https://www.chemistwarehouse.com.au/buy/145683/panadol-500mg-16-tablets"])URL mode only. Product page URLs return that single product, unfiltered. Catalogue/category listing URLs return multiple products, narrowed by price range, in-stock only and sort order; brand and category filters do not apply to a pasted listing URL.
minPriceinteger(none)Only products priced at or above this amount, in whole dollars.
maxPriceinteger(none)Only products priced at or below this amount, in whole dollars.
inStockOnlybooleanfalseExclude out-of-stock products.
sortstringrelevancerelevance, price_asc, or price_desc.
fetchReviewsbooleanfalseCollect individual customer reviews for each product. Adds a review-enrichment charge per product.
maxReviewsPerProductinteger20Cap on reviews collected per product when Fetch reviews is on.
maxItemsinteger20Maximum number of products to collect. 0 for no item limit.
maxPagesinteger0Maximum result pages walked per query. 0 for no page limit; the run still stops at Max items.
resumeFromRunIdstring(none)Continue one interrupted run without re-scraping or re-charging products already collected there.
incrementalModebooleanfalseClassify each product as NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED against the last run's saved state.
stateKeystring(none)Name or share an incremental-mode state. Leave empty to derive one automatically from the search settings.
emitUnchangedbooleanfalseAlso return (and bill) products that have not changed since the last run.
emitExpiredbooleanfalseAlso return (and bill) products no longer found, once a run has fully scanned the tracked search.
proxyobject{ "useApifyProxy": true }Connection settings.
mcpConnectorsarray(none)Optional: send a summary of each product to apps you authorized under Integrations.
notionParentPageUrlstring(none)Notion connector only: page under which product pages are created.
maxNotifyListingsinteger50Cap on items written to each connector per run. Does not affect the dataset.

Output Example

Sample shape: values are illustrative placeholders, not from a live record.

{
"productId": 57134,
"sku": "2720171",
"name": "Blackmores Bio C 1000 150 Tablets",
"title": "Blackmores Bio C 1000 150 Tablets",
"brand": "Blackmores",
"url": "https://www.chemistwarehouse.com.au/buy/57134-blackmores-bio-c-1000-150-tablets",
"price": 21.99,
"rrp": 48.99,
"wasPrice": 48.99,
"savingsAmount": 27.00,
"savingsPercent": 55.11,
"isOnSpecial": true,
"promoLabel": "Better Than Half Price",
"currency": "AUD",
"isInStock": true,
"isClickAndCollect": true,
"isFastDelivery": true,
"prescriptionType": null,
"schedule": null,
"isAppendixH": false,
"purchaseLimit": null,
"transactionLimit": null,
"rating": 4.6286,
"reviewCount": 35,
"categories": ["Chemist Warehouse Australia", "Categories", "Vitamins & Supplements"],
"ingredients": "Ascorbic Acid (Vitamin C) ...",
"directions": "Adults take 1 tablet a day ...",
"warnings": "Vitamin supplements should not replace ...",
"images": ["https://static.chemistwarehouse.com.au/products/57134/1.jpg"],
"reviews": [
{
"rating": 5,
"title": "Great product",
"author": "Reviewer123",
"content": "Works really well ...",
"createdAt": "2025-11-20T00:44:12.000+00:00",
"positiveFeedbackCount": 2,
"negativeFeedbackCount": 0
}
],
"reviewsTotal": 35,
"createdAt": "2019-03-04T00:00:00.000Z",
"scrapedAt": "2026-09-29T04:00:00.000Z"
}

Plan Requirement

The default proxy setting works out of the box, and the actor upgrades connection reliability automatically after repeated blocks within a run. For large or frequent runs, the residential proxy group gives more headroom; pick it under Connection. The actor runs on any Apify plan.

FAQ

How much does it cost?

Pay-per-event pricing: a start charge, a per-product charge for every record in the dataset, and a per-product review-enrichment charge, charged once per pushed product when Fetch reviews is on, even if that product turns out to have no reviews; never charged for a suppressed unchanged row. The Pricing tab shows the current rates. Use Max items to cap the cost of any run.

This actor collects only publicly available product and review data. You are responsible for how you use it: follow Chemist Warehouse's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product descriptions, images and customer reviews may carry their own rights.

Can I get only new or changed products on a schedule?

Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then classifies every product as NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED against the previous run's saved state, and unchanged products are not billed unless you turn Emit unchanged on. REAPPEARED only appears for a product that a previous run had already marked EXPIRED, which itself needs Emit expired on and a complete, uncapped scan; until that has happened once, a product that comes back simply classifies as UPDATED or UNCHANGED.

Why does was-price sometimes stay empty?

wasPrice, savingsAmount, savingsPercent and isOnSpecial are filled in only when the current price is genuinely below the site's own RRP for that product. When a product is priced at RRP, those fields are null or false rather than a fabricated saving; promoLabel separately surfaces the site's own catalogue badge (for example "Clearance" or "In Catalogue") when one is set.

Why did my run fail instead of returning an empty dataset?

The run fails outright in only two cases: a Resume from a previous run value that doesn't match a run or dataset this Apify account can read, or turning on Incremental mode together with Resume from a previous run when that search already has saved incremental state. Outside those two cases, a connectivity problem on part of the catalogue is logged as a warning and the run still finishes, returning whatever was found. An empty result can mean either that nothing matched, or that the source could not be reached for that search; check the run log for warnings to tell them apart.

Can I use it with AI agents or MCP?

Yes. Call it from any Apify integration or MCP client, and use the connector field to push a summary of each product into Notion, Linear or Airtable.

πŸ”— Want more e-commerce data?

Pair this actor with these related scrapers from the same team:

πŸ›’ Target AU Scraper
Scrape products and customer reviews from Target.com.au. Search by keyword or use...
πŸ₯¦ Coles AU Scraper
Scrape Coles.com.au grocery products and customer reviews. Search by keyword, browse...
πŸ›’ Kmart Scraper
Scrape products and customer reviews from Kmart.com.au. Search by keyword or use...
πŸ›’ Costco AU Scraper
Scrape Costco.com.au products with full details and customer reviews. Search by keyword...
πŸ›’ Amazon Australia Product & Reviews Scraper
Scrape Amazon Australia (amazon.com.au) products and customer reviews. Search by keyword...
πŸ›’ BIG W Marketplace Scraper
Scrape BIG W Marketplace seller listings from bigw.com.au: name, brand, price, was-price...

πŸ‘‰ Browse all abotapi scrapers

πŸ’¬ Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • πŸ› οΈ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.