E-commerce & Marketplaces

How do you get Chemist Warehouse prices, RRP discounts and reviews as JSON?

Call ReefAPI's chemist-warehouse search action and read products with id, title, brand, price_aud, rrp_aud, discount_percent, deal_badges, rating, review_count and in_stock back as JSON; use deals and collections for sales and product/reviews for what buyers say. Prices are national. The two things to know: one flag sits on almost every product and is not a deal, and one query reaches at most a thousand products.

Chemist Warehouse Australia: pharmacy prices, RRP discounts, sale collections, labels and reviews engineLive JSON5 steps1,000 free credits

This guide demonstrates the real Chemist Warehouse Australia: pharmacy prices, RRP discounts, sale collections, labels and reviews API engine with a captured response from . The example is only published because the engine passed the SEO snapshot gate.

Use case

Pharmacy and health-product price monitoring, RRP discount tracking, brand analytics and review research.

Step by step

Call the live endpoint

  1. 1

    Search with filters at the source

    Brand, category, price range, minimum rating and stock are applied by the source, so totals stay honest.

  2. 2

    Use categories for filter names

    categories returns the names that actually filter, not the menu labels.

  3. 3

    Read sales from collections

    List the live campaigns, then call deals with a collection name. Ignore the themed Promotions menu for discounts.

  4. 4

    Watch window_capped

    If it is true you hit the thousand-product ceiling. Split the query by category, brand or price band.

  5. 5

    Join on id, keep the URL

    id is the product number; url is the canonical page. Both round-trip into product/detail and product/reviews.

Code

Copy the request

These snippets use the captured request params for chemist-warehouse/v1/search.

curl -X POST https://api.reefapi.com/chemist-warehouse/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"vitamin d","limit":12}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.chemist-warehouse.search with {"query":"vitamin d","limit":12}.
Real response

Captured output from ReefAPI

Captured on UTC. The response below is the committed snapshot, including the API envelope and metadata.

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/chemist-warehouse/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "vitamin d",
    "limit": 12
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "chemist-warehouse",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 5726,
    "record_count": 12,
    "bytes": 2326498,
    "cache_hit": false,
    "warnings": [
      "Unknown parameters ignored: include_pii"
    ],
    "upstream_requests": 3,
    "charged_credits": 2,
    "version": "1.0.0",
    "request_id": "c30d27fa8a95438e",
    "queue_ms": 1.1,
    "fetched_at": "2026-10-13T10:56:31.319Z"
  },
  "data": {
    "products": [
      {
        "id": "2695051",
        "product_id": "c2e23f3d-1f3b-4186-91c9-91c6881b8d7f",
        "object_id": "c2e23f3d-1f3b-4186-91c9-91c6881b8d7f.1",
        "epid": "102649",
        "title": "Wagner Vitamin D3 1000IU 500 Capsules",
        "brand": "Wagner",
        "manufacturer": "Star Combo",
        "url": "https://www.chemistwarehouse.com.au/buy/102649/wagner-vitamin-d3-1000iu-500-capsules",
        "price_aud": 11.99,
        "rrp_aud": 23.99,
        "discount_percent": 50,
        "source_discount_percent": 50.02,
        "currency": "AUD",
        "deal_badges": [
          "50_off_edlp"
        ],
        "flags": [
          "50_off_edlp",
          "exclusive",
          "in_catalogue"
        ],
        "in_stock": true,
        "rating": 4.7895,
        "review_count": 114,
        "schedule": null,
        "prescription_type": null,
        "is_marketplace": false,
        "size": {
          "quantity": 500
        },
        "categories": [
          "Vitamins & Supplements",
          "Muscles, Bones & Joints"
        ],
        "image": "https://static.chemistwarehouse.com.au/ams/media/pi/102649/3DF_800.jpg"
      },
      {
        "id": "2636743",
        "product_id": "1f533180-59f1-4114-a980-cb2374621da9",
        "object_id": "1f533180-59f1-4114-a980-cb2374621da9.1",
        "epid": "68620",
        "title": "Ostelin Vitamin D3 1000IU 300 Capsules Exclusive Size",
        "brand": "Ostelin",
        "manufacturer": "Sanofi Consumer Healthcare",
        "url": "https://www.chemistwarehouse.com.au/buy/68620/ostelin-vitamin-d3-1000iu-300-capsules-exclusive-size",
        "price_aud": 29.99,
        "rrp_aud": 34.99,
        "discount_percent": 14.3,
        "source_discount_percent": 14.29,
        "currency": "AUD",
        "deal_badges": [],
        "flags": [
          "exclusive_size",
          "in_catalogue"
        ],
        "in_stock": true,
        "rating": 4.8198,
        "review_count": 1543,
        "schedule": null,
        "prescription_type": null,
        "is_marketplace": false,
        "size": {
          "quantity": 300
        },
        "categories": [
          "Promotions",
          "Free Shipping",
          "Vitamins & Supplements"
        ],
        "image": "https://static.chemistwarehouse.com.au/ams/media/pi/68620/2DF_800.jpg"
      },
      {
        "id": "2715045",
        "product_id": "490e3d8e-fbbc-4065-abe4-b61e4af1e53f",
        "object_id": "490e3d8e-fbbc-4065-abe4-b61e4af1e53f.1",
        "epid": "124470",
        "title": "Swisse Vitamin D 500 Capsules Exclusive Size",
        "brand": "Swisse",
        "manufacturer": "Swisse Wellness Pty Ltd",
        "url": "https://www.chemistwarehouse.com.au/buy/124470/swisse-vitamin-d-500-capsules-exclusive-size",
        "price_aud": 24.99,
        "rrp_aud": 28.99,
        "discount_percent": 13.8,
        "source_discount_percent": 13.8,
        "currency": "AUD",
        "deal_badges": [],
        "flags": [
          "exclusive_size",
          "in_catalogue"
        ],
        "in_stock": true,
        "rating": 4.8899,
        "review_count": 109,
        "schedule": null,
        "prescription_type": null,
        "is_marketplace": false,
        "size": {
          "quantity": 500
        },
        "categories": [
          "Promotions",
          "Free Shipping",
          "Vitamins & Supplements"
        ],
        "image": "https://static.chemistwarehouse.com.au/ams/media/pi/124470/2DF_800.jpg"
      }
    ],
    "total": 5395,
    "page": 1,
    "limit": 12,
    "last_page": 84,
    "has_more": true,
    "reachable": 1000,
    "window_capped": true,
    "facets": {},
    "coverage": "National online prices. One query reaches at most 1,000 products: narrow with category, brand or price to sweep beyond that (window_capped=true says you hit the ceiling)."
  }
}
Manual way

Why this is hard manually

One badge is almost everywhere. Chemist Warehouse tags nearly every product as being in its catalogue, and a scraper that reads product flags as deal badges concludes the whole store is on sale. The real price badges, 50 percent off and better than half price among them, are a small minority.

The menu labelled Promotions is not a discount list. It holds themed edits, gift guides and seasonal collections, at full price. The actual markdowns live under Clearance and a set of named sale campaigns, each with its own products.

A query stops at a thousand products. The site never says so; it simply stops returning more, so a scraper paging through a large category believes it has finished when it has a fraction of it.

Menu names are not the names that filter. The navigation says All Fragrance, the catalogue filters on Fragrances, and a scraper that feeds menu text back as a filter gets nothing.

Some sitemap URLs point at products that no longer exist, and some live products are missing from the site's own search. A scraper that trusts either source alone ends up with dead links or holes.

ReefAPI way

Why ReefAPI solves it

Seven actions: search, deals, collections, categories, brands, product/detail and product/reviews. search filters by keyword, category, brand, price range, minimum rating and stock, and sorts by price or rating.

Every price comes with its RRP. price_aud and rrp_aud are what the site shows, discount_percent is computed from the two, and source_discount_percent is the site's own figure beside it. 14 of 14 sampled products matched price, RRP and the shown saving on their own product page.

deal_badges keeps only real price badges. The catalogue flag that is on nearly every product stays in flags, where you can still see it, and never counts as a deal.

collections lists the sales running today, Clearance and the named campaigns, each with how many products it holds; deals lists one of them, Clearance by default. The themed Promotions menu is not reported as a sale.

The ceiling is reported, not hidden. A response says how many products the query reaches, and window_capped is true when you hit the thousand-product limit, which is your cue to narrow by category, brand or price. Discount size and badges cannot be filtered at the source, so the engine does not pretend to.

product/detail takes an id or a product URL and returns the label: ingredients, directions, warnings, the medicine schedule and prescription type where they apply, and size. A product missing from the site's search is still read from its own page and marked as such; a URL that is dead on the site returns NOT_FOUND.

product/reviews returns reviews in the site's own orders, most helpful, rating or newest, with rating statistics, a total, helpful and unhelpful votes, and whether a review was incentivised or syndicated from elsewhere.

FAQ

Questions developers ask

Do I need a Chemist Warehouse account?

No. Everything is public and logged-out. You send a ReefAPI key; there is no Chemist Warehouse login.

Are prices the same in every store?

The engine reads national online prices. There is no per-store price on the source.

Why is a product flagged in_catalogue but not on sale?

Because that flag is on almost every product. It describes catalogue membership, not a markdown, so it sits in flags and never in deal_badges.

How do I get all Clearance products?

Call deals with no collection. If window_capped comes back true, the query reached the thousand-product ceiling; repeat it by category or price range to cover the rest.

Does it include prescription medicines?

Prescription items are listed in the catalogue with their price. product/detail returns the medicine schedule and prescription type where the site publishes them. It is price and label information, not medical advice.

Can I get the barcode or unit price?

No. The site publishes neither, so the engine returns neither rather than estimating them.

What do the review fields mean?

rating, title, text, author, created_at, helpful and unhelpful votes, incentivised when the reviewer received something, and syndicated_from when the review was written on another site. statistics gives the count per star.

Can I fetch many products in one call?

There is no batch call, because the source has no batch lookup: twenty products would be twenty requests either way. search returns up to a thousand full rows per query, which covers most bulk needs.