---
title: "Lists the retailer offers WEM's catalogue holds for one product, current prices first and each group cheapest first, with WEM's 90-day price low (null when the product is held only in another currency)"
method: POST
path: "/api/agent/products/compare_offers"
---

# Lists the retailer offers WEM's catalogue holds for one product, current prices first and each group cheapest first, with WEM's 90-day price low (null when the product is held only in another currency)

`POST /api/agent/products/compare_offers`

## Request

- Base URL: `https://wem3.ai`
- URL: `https://wem3.ai/api/agent/products/compare_offers`
- Auth: none declared

Retailer offers WEM holds for one product, current prices first, cheapest first, with a 90-day low. Find it by barcode (gtin), slug or wem3.ai/pl URL, WEM ID, or model name (title), which is an inferred match. No live retailer search.

## Request body

- union
  - object
    - `gtin` string, required: Product barcode: EAN-13, UPC-A, EAN-8 or GTIN-14. The strongest identifier.
    - `slug` string: WEM catalogue slug, or a wem3.ai/pl/{slug} URL / host path. Hosts may pass either form.
    - `wem_id` string: WEM ID (W + 10 Crockford characters + check). Active catalogue products only.
    - `title` string: Product or model name, or an ASIN, MPN or merchant SKU (e.g. AF400UK). The weakest identifier: used only when no barcode, slug or WEM ID is given, and only if it passes a relevance check; otherwise `found` is false rather than a guess.
    - `currency` string: ISO 4217 code for the shopper's market. Default GBP. Decides which market's offers WEM returns from its catalogue, not just how the answer reads ; WEM does not infer the market from IP. When WEM holds the product only in another currency it says so rather than presenting a foreign listing as the answer.
  - object
    - `gtin` string: Product barcode: EAN-13, UPC-A, EAN-8 or GTIN-14. The strongest identifier.
    - `slug` string, required: WEM catalogue slug, or a wem3.ai/pl/{slug} URL / host path. Hosts may pass either form.
    - `wem_id` string: WEM ID (W + 10 Crockford characters + check). Active catalogue products only.
    - `title` string: Product or model name, or an ASIN, MPN or merchant SKU (e.g. AF400UK). The weakest identifier: used only when no barcode, slug or WEM ID is given, and only if it passes a relevance check; otherwise `found` is false rather than a guess.
    - `currency` string: ISO 4217 code for the shopper's market. Default GBP. Decides which market's offers WEM returns from its catalogue, not just how the answer reads ; WEM does not infer the market from IP. When WEM holds the product only in another currency it says so rather than presenting a foreign listing as the answer.
  - object
    - `gtin` string: Product barcode: EAN-13, UPC-A, EAN-8 or GTIN-14. The strongest identifier.
    - `slug` string: WEM catalogue slug, or a wem3.ai/pl/{slug} URL / host path. Hosts may pass either form.
    - `wem_id` string, required: WEM ID (W + 10 Crockford characters + check). Active catalogue products only.
    - `title` string: Product or model name, or an ASIN, MPN or merchant SKU (e.g. AF400UK). The weakest identifier: used only when no barcode, slug or WEM ID is given, and only if it passes a relevance check; otherwise `found` is false rather than a guess.
    - `currency` string: ISO 4217 code for the shopper's market. Default GBP. Decides which market's offers WEM returns from its catalogue, not just how the answer reads ; WEM does not infer the market from IP. When WEM holds the product only in another currency it says so rather than presenting a foreign listing as the answer.
  - object
    - `gtin` string: Product barcode: EAN-13, UPC-A, EAN-8 or GTIN-14. The strongest identifier.
    - `slug` string: WEM catalogue slug, or a wem3.ai/pl/{slug} URL / host path. Hosts may pass either form.
    - `wem_id` string: WEM ID (W + 10 Crockford characters + check). Active catalogue products only.
    - `title` string, required: Product or model name, or an ASIN, MPN or merchant SKU (e.g. AF400UK). The weakest identifier: used only when no barcode, slug or WEM ID is given, and only if it passes a relevance check; otherwise `found` is false rather than a guess.
    - `currency` string: ISO 4217 code for the shopper's market. Default GBP. Decides which market's offers WEM returns from its catalogue, not just how the answer reads ; WEM does not infer the market from IP. When WEM holds the product only in another currency it says so rather than presenting a foreign listing as the answer.

## Response `200`

Tool result. `success: false` means the tool ran and reported a problem.

- object
  - `success` boolean, required
  - `data` object: Shape depends on the tool. Search-style results carry `products`, an optional `catalogMatch` of identity-resolved offers, and `filtered`, a count by reason of the weak matches withheld — report that count rather than implying the search was exhaustive.
  - `error` string

## Other responses

- `400`: Unknown tool or a malformed body.
- `429`: Burst or daily quota exhausted. Respect `retry-after` — retrying sooner cannot succeed.
- `500`: Unexpected server error.

---

[API](https://skmtc.dev/wem3/apis/wem-price-compare-api.md) · [All operations](https://skmtc.dev/wem3/apis/wem-price-compare-api/llms.txt) · [OpenAPI document](https://skmtc.dev/wem3/apis/wem-price-compare-api/revisions/52e5c33c3f39?raw)
