Chemist Warehouse AU - Products, Prices & Reviews
Pricing
from $1.20 / 1,000 products
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
Maintained by CommunityActor stats
0
Bookmarked
5
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
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,savingsAmountandsavingsPercentare filled in only when the site itself shows a reduction below RRP; equal pricing returnsnullinstead 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.
| Field | Example |
|---|---|
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 (only set when below RRP) |
savingsAmount / savingsPercent | 27.00 / 55.11 |
isOnSpecial | true |
promoLabel | "Better Than Half Price" (the site's own catalogue badge) |
currency | "AUD" |
isInStock | true |
isClickAndCollect / isFastDelivery | true / true |
prescriptionType / schedule | "Pharmacist Only Medicine" / "S3" |
isAppendixH | false |
purchaseLimit / transactionLimit | null / 6 |
rating / reviewCount | 4.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
- Pick a mode:
search(keywords and filters) orurl(paste product pages or catalogue/category listing links). - For search mode, add one or more Search keywords, and optionally narrow with Specials / offers, Brand, Category, a price range or In-stock only.
- Turn on Fetch reviews to collect individual customer reviews, and set Max reviews per product to cap how many are pulled per item.
- 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 ApifyClientclient = 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 classifiedNEW,UPDATED(withchangedFields),UNCHANGED(suppressed and not billed unlessemitUnchangedis on), orEXPIRED(only after a run that scanned the whole tracked search, and only withemitExpiredon).REAPPEAREDis produced only for a product that a previousemitExpiredrun had already markedEXPIRED, 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 asUPDATEDorUNCHANGED, neverREAPPEARED.stateKeynames 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.
- Authorize a connector once under Apify > Settings > Integrations (Notion, Linear, Airtable, or Apify).
- Select it in the "Pipe results into your apps" input field. (If the picker is empty, you haven't authorized a connector yet.)
- For Notion, also set
notionParentPageUrlto 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
| Parameter | Type | Default | Description |
|---|---|---|---|
mode | string | search | search (keyword and filters) or url (paste product or listing URLs). |
queries | array | ["vitamin c"] | Search mode only. One or more keywords. Leave empty to browse the whole catalogue with the filters below. |
brand | string | (none) | Search mode only. Restrict to one brand, exact spelling as shown on the site. |
category | string | (none) | Search mode only. Restrict to one category, exact spelling as shown on the site. |
specialsCategory | string | `` (Any, all products) | Search mode only. promotions or clearance, or empty for all products. |
productUrls | array | none (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. |
minPrice | integer | (none) | Only products priced at or above this amount, in whole dollars. |
maxPrice | integer | (none) | Only products priced at or below this amount, in whole dollars. |
inStockOnly | boolean | false | Exclude out-of-stock products. |
sort | string | relevance | relevance, price_asc, or price_desc. |
fetchReviews | boolean | false | Collect individual customer reviews for each product. Adds a review-enrichment charge per product. |
maxReviewsPerProduct | integer | 20 | Cap on reviews collected per product when Fetch reviews is on. |
maxItems | integer | 20 | Maximum number of products to collect. 0 for no item limit. |
maxPages | integer | 0 | Maximum result pages walked per query. 0 for no page limit; the run still stops at Max items. |
resumeFromRunId | string | (none) | Continue one interrupted run without re-scraping or re-charging products already collected there. |
incrementalMode | boolean | false | Classify each product as NEW, UPDATED, UNCHANGED, REAPPEARED, or EXPIRED against the last run's saved state. |
stateKey | string | (none) | Name or share an incremental-mode state. Leave empty to derive one automatically from the search settings. |
emitUnchanged | boolean | false | Also return (and bill) products that have not changed since the last run. |
emitExpired | boolean | false | Also return (and bill) products no longer found, once a run has fully scanned the tracked search. |
proxy | object | { "useApifyProxy": true } | Connection settings. |
mcpConnectors | array | (none) | Optional: send a summary of each product to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which product pages are created. |
maxNotifyListings | integer | 50 | Cap 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.
Is it legal to scrape Chemist Warehouse?
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.