---
title: "One product priced at every chain that sells it"
method: GET
path: "/v1/insights/products/{slug}"
---

# One product priced at every chain that sells it

`GET /v1/insights/products/{slug}`

## Request

- Base URL: `https://supermcp.co.il`
- URL: `https://supermcp.co.il/v1/insights/products/{slug}`
- Auth: none required

Accepts a bare GTIN or the full 'words-gtin' page segment; only the trailing barcode is read.

## Path parameters

- `slug` string, required

## Response `200`

OK

- object
  - `data` object
    - `gtin` string
    - `name` string
    - `brand` string, nullable
    - `slug` string
    - `size` object, nullable
      - `qty` number
      - `unit` 'g' | 'ml' | 'unit'
    - `category` object, nullable: Class keys, never display text. Labels are the client's job.
      - `l1` string
      - `l2` string
      - `slug` string
    - `prices` object[]
      - `chainId` string
      - `chainSlug` string
      - `chainName` string
      - `price` number
      - `unitPrice` number, nullable: Per 100g or 100ml, computed from price and pack size. The feed's own unit_price column is not used: several chains file a zero or a placeholder there.
      - `listingName` string: The chain's own name for what was priced.
      - `url` string, nullable: Storefront search link, when one exists.
      - `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.
    - `spread` object: Range across the chains that sell the item. One price per chain, never per store.
      - `min` number
      - `max` number
      - `median` number
      - `ratio` number: max / min.
      - `saving` number: Shekels between cheapest and dearest.
      - `chainCount` integer
    - `promotions` object[]
      - `chainId` string
      - `chainSlug` string
      - `chainName` string
      - `description` string
      - `endsAt` string, date
      - `clubOnly` boolean: Members only. Never present it as a shelf price.
    - `alternatives` object[]: Same class, comparable pack size, cheaper per 100g or 100ml.
      - `gtin` string
      - `name` string
      - `slug` string
      - `cheapest` number
      - `unitPrice` number, nullable
      - `chainCount` integer
    - `history` object: What the market did since 2026-08-16, the day continuous price recording began. Each storefront's price is carried forward between recorded changes, so days has no gaps and every step in it appears in moves.
      - `watchingSince` string, date, nullable
      - `days` object[]: One entry per calendar day, oldest first.
        - `date` string, date
        - `cheapest` number
        - `dearest` number
      - `moves` object[]: Recorded changes in a chain's cheapest price, newest first. Empty means the price has not moved since recording began.
        - `date` string, date
        - `chainId` string
        - `chainSlug` string
        - `chainName` string
        - `from` number
        - `to` number

## 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)
