---
title: "Live promotions, priced per unit and graded against the market"
method: GET
path: "/v1/insights/deals"
---

# Live promotions, priced per unit and graded against the market

`GET /v1/insights/deals`

## Request

- Base URL: `https://supermcp.co.il`
- URL: `https://supermcp.co.il/v1/insights/deals`
- Auth: none required

`promoPrice` is what one unit costs under the promotion, after `minQty` is divided out. The baseline is the median price of the same barcode at the OTHER chains, one price per chain, so a chain that raised a price in order to cut it does not appear here. `grade` is `real` at or below 80% of that median, `not_a_deal` at or above it, `ordinary` between.

## Query parameters

- `limit` integer

## Response `200`

OK

- object
  - `data` object
    - `deals` object[]
      - `gtin` string
      - `name` string
      - `slug` string
      - `category` object, nullable
        - `l1` string
        - `l2` string
        - `slug` string
      - `chainId` string
      - `chainSlug` string
      - `chainName` string
      - `promoPrice` number: Per unit, after minQty
      - `shelfPrice` number: Same listing, same chain, no promotion
      - `marketPrice` number: Median at the other chains
      - `bestElsewhere` number: Cheapest a shopper could pay at another chain today: shelf price or that chain's own live promotion, whichever is lower
      - `bestElsewhereChain` object, nullable
        - `chainId` string
        - `chainSlug` string
        - `chainName` string
      - `bestElsewhereIsPromo` boolean: Whether bestElsewhere is a promotion there rather than an ordinary price
      - `bestElsewhereMinQty` integer: Units required together to get bestElsewhere; 1 when unconditional
      - `bestElsewhereClubOnly` boolean: bestElsewhere needs that chain's loyalty card
      - `minQty` integer: Units required together; 1 means no condition
      - `discountPercent` integer: promoPrice against marketPrice; negative when dearer
      - `grade` 'real' | 'ordinary' | 'not_a_deal'
      - `description` string
      - `clubOnly` boolean: Needs a loyalty card
      - `endsAt` string, date
      - `chainCount` integer
      - `freshness` object: When the price list behind a figure was published, and whether that is now stale.
        - `asOf` string, date: Israel local date.
        - `stale` boolean: Older than the 7-day staleness limit.

## Other responses

- `400`: Bad request. Query parameters are validated strictly: a parameter this document does not list is rejected, and `details[].keys` names it. A misspelled filter used to be dropped silently, which answered a question nobody asked with a plausible list of products.
- `401`: Unauthorized
- `404`: Not found
- `429`: Rate limited

---

[API](https://skmtc.dev/supermcp/apis/super-mcp-api.md) · [All operations](https://skmtc.dev/supermcp/apis/super-mcp-api/llms.txt) · [OpenAPI document](https://skmtc.dev/supermcp/apis/super-mcp-api/revisions/f0dea9415b1c?raw)
