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
10
Total users
5
Monthly active users
0.74 hours
Issues response
3 days ago
Last modified
Categories
Share
Chemist Warehouse Scraper: Products, Prices and Reviews
Chemist Warehouse Scraper turns chemistwarehouse.com.au into a clean product data feed. Search the catalogue by keyword, browse the Promotions (weekly catalogue specials) and Clearance collections, or paste your own product, brand, category and specials links, and get back structured products with price, was/RRP price, savings, promo label, stock and delivery flags, pharmacy compliance fields and ratings. Turn on optional review enrichment for every individual customer review with star rating, title, author and helpful-vote counts, plus the star distribution and true review total, then export to JSON, CSV or Excel, or pull results straight into your app through the API. Coverage spans the whole Chemist Warehouse catalogue, from pharmacy and medicines to vitamins, skincare, beauty, baby and household.
Why This Scraper?
- Two ways to find products. Search by keyword with brand, category, price and in-stock filters, or paste product pages, brand pages (e.g.
/shop-online/587/swisse), category pages in either link shape the site uses (e.g./shop-online/81/vitamins-supplementsor/shop-online/50021-lash-brow-dye), the specials collections (/catalogue,/shop-online/3240/clearance), or a site search link (/search?q=panadol, scraped as the keyword search). Product URLs are matched by their product ID, so pages renamed since you copied the link still resolve, and discontinued ones are reported as not found in the run log. - 50+ core fields per product. Name, canonical brand-prefixed title, brand, manufacturer, SKU and product IDs, price, was/RRP, savings, promo label, stock, delivery channels, category path, images and rating, out of the box.
- Real was-price data. Whenever the price is below the site's own RRP, the record carries
wasPrice,savingsAmount,savingsPercent,discountPercentandisOnSpecial, plus the site's own promo badge (Better Than Half Price,50% Off,Clearance,In Catalogue) inpromoLabel. Never fabricated. - Full pharmacy compliance fields. Prescription type, medicine schedule, Appendix H flag, instant online consult eligibility, 24-hour and per-transaction purchase limits and the adult-product flag, on every product that carries them.
- Complete review export on demand. Every individual review with rating, title, author, body text, date and helpful-vote counts, walked across review pages up to your cap, plus
ratingBreakdownand the truereviewsTotal. - Built for schedules. Incremental mode returns only new, updated and reappeared products on recurring runs, and Resume continues one interrupted crawl without paying twice for products it already collected.
Use Cases
- Price intelligence: track prices, was-prices and discount depth for specific brands or categories to spot trends and promo cycles.
- Promo monitoring: follow the weekly Promotions and Clearance collections and see each product's own promo badge.
- Assortment mapping: mirror categories and brand listings, with full category paths, into your own catalogue.
- Review analysis: feed rating distributions and full review texts into sentiment or VOC tooling.
- Compliance checks: monitor prescription type, schedule and purchase limits across medicine lines.
- Inventory mirroring: sync stock and delivery-channel flags into a CRM or a price-comparison app.
Data You Get
Sample shape: values are illustrative placeholders, not from a live record.
| Field | Example |
|---|---|
productId / epid | "100000" / 100000 |
url | "https://www.chemistwarehouse.com.au/buy/100000/example-vitamin-c-500mg" |
title | "ExampleBrand Vitamin C 500mg 150 Tablets" |
brand / manufacturer | "ExampleBrand" / "Example Manufacturer Pty Ltd" |
sku | "2738518" |
price | 21.99 |
rrp / wasPrice | 48.99 / 48.99 |
savingsAmount / savingsPercent | 27.00 / 55.11 |
discountPercent | 55.11 |
isOnSpecial | true |
promoLabel | "Better Than Half Price" |
currency | "AUD" |
isInStock | true |
isClickAndCollect / isFastDelivery | true / true |
isShippable / isExpressDeliveryOnly | true / false |
prescriptionType / schedule | "None" / "None" |
purchaseLimit / transactionLimit | null / null |
rating / reviewCount | 4.6286 / 35 |
categories | ["Chemist Warehouse Australia", "Categories", "Vitamins & Supplements"] |
ingredients / directions / warnings | "Example ingredient list text." etc., full pharmacy label text. |
images | ["https://static.chemistwarehouse.com.au/..."] |
reviews | [{ "rating": 5, "title": "Great product", "author": "sample_user_01", ... }] (needs Fetch reviews) |
scrapedAt | "2026-01-01T00:00:00.000Z" |
Fetch reviews also adds reviews, reviewsTotal (the true review total, which can exceed the cap) and ratingBreakdown (the 5-star-to-1-star distribution). Every review carries rating, title, author, content, createdAt, positiveFeedbackCount and negativeFeedbackCount. Incremental mode adds changeType, changedFields, firstSeenAt and lastSeenAt to every record.
How to Use
- Pick a mode:
search(keyword plus filters) orurl(paste product, brand, category or specials links). - In search mode, set Search keywords and any filters you need. In URL mode, paste one or more links; each product link returns exactly that product, and listing links walk the whole listing.
- Set Max items and Max pages to control run size and cost, and turn on Fetch reviews if you need individual customer reviews.
- Click Start, then download the dataset as JSON, CSV or Excel, or read it through the API.
Search by keyword with filters:
{"mode": "search","queries": ["vitamin c"],"minPrice": 5,"maxPrice": 40,"inStockOnly": true,"sort": "price_asc","maxItems": 50}
Browse the weekly specials:
{"mode": "search","queries": [""],"specialsCategory": "promotions","maxItems": 100}
Paste product, brand and category links:
{"mode": "url","productUrls": ["https://www.chemistwarehouse.com.au/buy/145680/panadol-500mg-16-mini-caplets","https://www.chemistwarehouse.com.au/shop-online/587/swisse","https://www.chemistwarehouse.com.au/shop-online/81/vitamins-supplements"],"maxItems": 100}
Review enrichment:
{"mode": "url","productUrls": ["https://www.chemistwarehouse.com.au/buy/145680/panadol-500mg-16-mini-caplets"],"fetchReviews": true,"maxReviewsPerProduct": 20}
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": ["vitamin c"], "maxItems": 20})for product in client.dataset(run["defaultDatasetId"]).iterate_items():print(product["title"], product["price"], product["promoLabel"])
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: ['vitamin c'], maxItems: 20 });const { items } = await client.dataset(run.defaultDatasetId).listItems();
Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.
Resume and recurring updates
- Resume (
resumeFromRunId) continues one interrupted or previous large crawl: paste a run ID or dataset ID and this run loads every product already saved there, skips it, and appends only new products, so you don't pay twice. - Incremental mode (
incrementalMode) is for running the same search on a schedule (daily, weekly). The first run returns everything asNEW. Later runs return onlyNEW,UPDATED(withchangedFields) andREAPPEAREDproducts by default; unchanged products are suppressed and not billed unlessemitUnchangedis on.EXPIREDproducts are only produced after a run that scanned the whole tracked search, and only withemitExpiredon. State is tracked separately per search or URL setup automatically; setstateKeyto name or deliberately share a monitoring campaign.
Send results into your apps (MCP connectors)
Optionally pipe the scraped results 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 record, 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 plus filters) or url (paste your own product, brand, category or specials links). |
queries | array | ["vitamin c"] | One or more keywords. Leave empty to browse via Specials, Brand or Category. Search mode only. |
specialsCategory | string | "" (Any) | promotions (weekly catalogue specials) or clearance (reduced to clear). Search mode only. |
brand | string | (none) | Restrict results to one brand, exact spelling as shown on the site. Search mode only. |
category | string | (none) | Restrict results to one category, exact spelling as shown on the site. Search mode only. |
productUrls | array | (none) | Product, brand, category, specials or site-search (/search?q=) links. URL mode only. Product pages return that one product unfiltered; listing and search links honor the filters below. |
minPrice | integer | (none) | Lower bound for price, in AUD. |
maxPrice | integer | (none) | Upper bound for price, in AUD. |
inStockOnly | boolean | false | Exclude out-of-stock products. |
sort | string | relevance | relevance, price_asc or price_desc. |
fetchReviews | boolean | false | Collect each product's customer reviews, walked across review pages up to the cap. Billed in blocks of 10 collected reviews per product. |
maxReviewsPerProduct | integer | 20 | Cap reviews per product, which also caps the billable review blocks. 0 means all reviews. |
maxItems | integer | 20 | Stop after scraping this many products across the whole run. |
maxPages | integer | 0 | Safety bound on result pages walked per search or listing. 0 means unlimited: the walk stops at the source's last page, or once Max items is reached. |
resumeFromRunId | string | (none) | Continue one interrupted or previous large crawl by pasting its run ID or dataset ID. |
incrementalMode | boolean | false | Turn on for recurring monitoring of the same search: later runs return only new and changed products. |
stateKey | string | (none) | Name this monitoring campaign, or share state across differently configured runs. Incremental mode only. |
emitUnchanged | boolean | false | Also return, and bill, products that have not changed since the last run. Incremental mode only. |
emitExpired | boolean | false | Also return, and bill, products that were tracked before but are no longer found. Incremental mode only. |
proxy | object | Apify Proxy | Connection settings. The default works without changes for typical runs. |
mcpConnectors | array | (none) | Optional: send a summary of each record to apps you authorized under Integrations. |
notionParentPageUrl | string | (none) | Notion connector only: page under which item 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": "100000","productKey": "a1b2c3d4-0000-0000-0000-000000000000","objectId": "a1b2c3d4-0000-0000-0000-000000000000.1","sku": "2738518","epid": 100000,"name": "Example Vitamin C 500mg 150 Tablets","title": "ExampleBrand Vitamin C 500mg 150 Tablets","slug": "100000-example-vitamin-c-500mg-150-tablets","url": "https://www.chemistwarehouse.com.au/buy/100000/example-vitamin-c-500mg-150-tablets","brand": "ExampleBrand","manufacturer": "Example Manufacturer Pty Ltd","productType": "Vitamins","price": 21.99,"rrp": 48.99,"wasPrice": 48.99,"savingsAmount": 27.00,"savingsPercent": 55.11,"discountPercent": 55.11,"isOnSpecial": true,"promoLabel": "Better Than Half Price","currency": "AUD","isInStock": true,"isClickAndCollect": true,"isFastDelivery": true,"isInternationalShipping": false,"isMarketplace": false,"isShippable": true,"isExpressDeliveryOnly": false,"prescriptionType": "None","schedule": "None","isAppendixH": false,"isInstantConsult": false,"purchaseLimit": null,"transactionLimit": null,"multipackQty": 1,"rating": 4.6286,"reviewCount": 35,"categories": ["Chemist Warehouse Australia", "Categories", "Vitamins & Supplements"],"ingredients": "Example ingredient list text.","directions": "Example directions text.","warnings": "Example warnings text.","imageUrl": "https://static.chemistwarehouse.com.au/...","images": ["https://static.chemistwarehouse.com.au/..."],"reviewsTotal": 35,"ratingBreakdown": { "5": 24, "4": 7, "3": 2, "2": 1, "1": 1 },"reviews": [{"id": "00000000","rating": 5,"title": "Great product","author": "sample_user_01","content": "Review text appears here when reviews are enabled and present.","createdAt": "2026-01-01T00:00:00.000+00:00","positiveFeedbackCount": 2,"negativeFeedbackCount": 0}],"scrapedAt": "2026-01-01T00:00:00.000Z"}
Plan Requirement
The default proxy setting works without changes for typical runs, and the actor rotates connections automatically when one is rejected.
FAQ
How much does it cost?
You pay per product returned, plus the compute time each run uses. Turning on Fetch reviews adds a Review enrichment charge in blocks of 10 collected reviews per product (0-9 reviews are free, 10-19 bill 1 unit, 20-29 bill 2, and so on), capped by Max reviews per product. The Pricing tab on the actor page shows current rates. Use Max items to cap the size, and 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. Prices and product specifications are generally facts, but images and brand assets may be subject to third-party rights.
What is the difference between Resume and Incremental mode?
They solve different problems. Resume (resumeFromRunId) continues one specific run that was interrupted or capped: it skips products a named previous run or dataset already collected. Incremental mode is for scheduling the same search again and again, for example daily, and getting back only what changed since last time, without you ever pasting a run ID. Turning both on together fails the run with a clear message if that search already has saved incremental state.
Why did some of my pasted product URLs return "No product found"?
Those products are no longer listed on the site (discontinued or replaced). Renamed product pages still resolve, because product URLs are matched by their product ID rather than the link text. The run log names every URL that could not be matched.
Why did my run return fewer listings, or an empty dataset, instead of failing?
A run stops with an explicit error only when Resume from a previous run points at a run or dataset this account cannot read, or when Incremental mode is combined with Resume on a search that already has tracked incremental state. In every other case, for example filters that match nothing, or a stretch where pages could not be read, the run finishes normally and simply returns fewer records, or none. Check the run log for page-level warnings to tell "no matching products" apart from "some pages could not be read".
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 results into Notion, Linear or Airtable.
🔗 Want more product data?
Pair this actor with these related scrapers from the same team:
| 🧺 Woolworths AU Scraper Scrape Woolworths Australia grocery products and reviews: prices, specials and was-price data. | 🛒 Coles AU Scraper Scrape Coles.com.au grocery products, prices, specials and customer reviews. |
| 🏬 Kmart AU Scraper Scrape Kmart.com.au products and customer reviews by keyword, category or URL. | 🛍️ Kaufland.de Scraper Scrape Kaufland.de marketplace prices, deals and reviews by keyword, category or URL. |
💬 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 contact@abotapi.com or message Telegram @abotapi.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.
🔗 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... | 🛒 Kmart Scraper Scrape products and customer reviews from Kmart.com.au. Search by keyword or use... |
| 🛒 Myer Scraper Scrape Myer (myer.com.au) department-store products: name, brand, price, was-price... | 🛒 Officeworks Scraper Scrape Officeworks products by keyword, category, or URL. Extract names, brands, prices... |
| 🛒 Harvey Norman Scraper Scrape Harvey Norman Australia products: name, brand, price, was-price / discount... | 🛒 Amazon Australia Product & Reviews Scraper Scrape Amazon Australia (amazon.com.au) products and customer reviews. Search by keyword... |
💬 Support
- 🐞 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 contact@abotapi.com.
- ⭐ Enjoying it? A quick review on the actor page helps other users find it.