# Chemist Warehouse Australia: pharmacy prices, RRP discounts, sale collections, labels and reviews

> Search or browse the catalogue with category, brand, price, rating and stock filters.
> ReefAPI engine `chemist-warehouse` · 7 endpoints · clean JSON, no scraping or browsers to manage.

## How to call
- **Endpoint:** `POST https://api.reefapi.com/chemist-warehouse/v1/<action>` with a JSON body.
- **Auth:** header `x-api-key: <YOUR_REEFAPI_KEY>` — create one free (1,000 credits, no card): https://reefapi.com/signup
- **Response (every call):** `{ ok: boolean, data: ..., meta: { record_count, credits, ... }, error: { code, message } }` — branch on `ok`. Failed calls are free except verified SHEIN NOT_FOUND on product/detail and price (4 credits).
- **One key + one shared credit pool** across every ReefAPI API. Per-call credits are listed on each endpoint below.
- **Use it from an AI agent (MCP):** connect `https://api.reefapi.com/mcp` (remote streamable-http). Send the key as `Authorization: Bearer <key>`, or put it in the URL (`?key=<key>`) when the client has no header field, as ChatGPT does.

## Endpoints

### POST https://api.reefapi.com/chemist-warehouse/v1/search — 2 credits
Search or browse the catalogue with category, brand, price, rating and stock filters.

**Parameters:**
- `query` (string, optional) — Keyword. Empty with a category or brand browses that range.
- `category` (string, optional) — Exact category or collection name as the site names it (see categories / collections).
- `brand` (string, optional) — Exact brand name (see brands).
- `min_price` (number, optional) — Minimum price in AUD.
- `max_price` (number, optional) — Maximum price in AUD.
- `min_rating` (number, optional) — Minimum average review rating (0-5).
- `in_stock_only` (boolean, optional, default false) — Only products the site lists as in stock online.
- `sort` (enum, optional, default "relevance") — Source ordering (the site's own sort indices). [one of: relevance, price_asc, price_desc, rating_desc]
- `page` (integer, optional, default 1) — One-based page. page x limit must stay inside the source 1,000-product window.
- `limit` (integer, optional, default 24) — Products per page (the source serves up to 1,000 in one call).
- `include_facets` (boolean, optional, default false) — Also return brand, category and price-band counts for the result set.

**Returns:** Products with AUD price, RRP, discount %, deal badges, rating, stock, schedule and URL; pagination inside the 1,000-product source window.

**Example request body:**
```json
{
  "query": "vitamin d",
  "limit": 12
}
```

### POST https://api.reefapi.com/chemist-warehouse/v1/deals — 2 credits
List a sale collection: Clearance (default) or a current Collections sale.

**Parameters:**
- `collection` (string, optional, default "Clearance") — Sale collection name from collections. Default: Clearance.
- `brand` (string, optional) — Exact brand name (see brands).
- `min_price` (number, optional) — Minimum price in AUD.
- `max_price` (number, optional) — Maximum price in AUD.
- `min_rating` (number, optional) — Minimum average review rating (0-5).
- `in_stock_only` (boolean, optional, default false) — Only products the site lists as in stock online.
- `sort` (enum, optional, default "relevance") — Source ordering (the site's own sort indices). [one of: relevance, price_asc, price_desc, rating_desc]
- `page` (integer, optional, default 1) — One-based page. page x limit must stay inside the source 1,000-product window.
- `limit` (integer, optional, default 24) — Products per page (the source serves up to 1,000 in one call).
- `include_facets` (boolean, optional, default false) — Also return brand, category and price-band counts for the result set.

**Returns:** The collection products with price, RRP and discount %, plus the resolved collection.

**Example request body:**
```json
{
  "collection": "Big Cosmetics Sale"
}
```

### POST https://api.reefapi.com/chemist-warehouse/v1/collections — 3 credits
List the current sale collections and their product counts.

**Parameters:** none

**Returns:** Clearance and Collections sale names with counts; use the name as deals collection.

### POST https://api.reefapi.com/chemist-warehouse/v1/categories — 1 credit
Category names that work as the search category filter, with product counts, plus the site menu.

**Parameters:** none

**Returns:** categories[] (exact filter names and counts) and menu[] (site labels, ids, URLs; search_name set where a label is also a filter name).

### POST https://api.reefapi.com/chemist-warehouse/v1/brands — 1 credit
Find brands by name prefix, or list the largest brands.

**Parameters:**
- `query` (string, optional) — Brand name prefix; empty lists the largest brands.
- `limit` (integer, optional, default 20) — Brands to return.

**Returns:** Brand names with product counts.

**Example request body:**
```json
{
  "query": "black"
}
```

### POST https://api.reefapi.com/chemist-warehouse/v1/product/detail — 2 credits
The full public product record and label.

**Parameters:**
- `id` (string, required) — Numeric sku from search, or a chemistwarehouse.com.au/buy/<id>/<slug> URL.

**Returns:** Identity, prices, RRP, badges, description, ingredients, directions, warnings, schedule, dimensions, images.

**Example request body:**
```json
{
  "id": "2683973"
}
```

### POST https://api.reefapi.com/chemist-warehouse/v1/product/reviews — 3 credits
Customer reviews for one product.

**Parameters:**
- `id` (string, required) — Numeric sku from search, or a chemistwarehouse.com.au/buy/<id>/<slug> URL.
- `sort` (enum, optional, default "Helpfulness:desc") — Review ordering, as the site offers it. [one of: Helpfulness:desc, rating:desc, rating:asc, createdAt:desc]
- `offset` (integer, optional, default 0) — Reviews to skip.
- `limit` (integer, optional, default 20) — Reviews per page (source accepts up to 50 as measured).

**Returns:** Reviews with rating, title, text, author, date, helpful votes, incentivised flag; rating statistics and total.

**Example request body:**
```json
{
  "id": "2683973"
}
```

## At scale
- **Volume:** 5M+ requests a day, measured at 60 requests a second across the fleet with no
  central bottleneck. Per-key limits are raised for high-volume accounts; volume pricing on request.
- **Missing a source:** tell us a site we do not cover and it becomes an engine. A customer asked
  for bestprice.gr on 21 Sep 2026 and it was in the catalog on 22 Sep.
- **Support:** 2 minute median time from a question in the live chat to the first answer. Setup
  help included, no support tier to buy.
- **One key, one credit pool** across every API. No per-site plans, no separate subscriptions.

## More
- Try it live, no code: https://reefapi.com/playground?engine=chemist-warehouse
- Human docs page: https://reefapi.com/docs/chemist-warehouse
- Overview page: https://reefapi.com/chemist-warehouse-api
- Every ReefAPI API in one file (for your AI): https://reefapi.com/llms-full.txt
