---
title: "Price series for one item key across chains and weeks"
method: GET
path: "/api/v1/public/catalog/offers/history"
tags: ["Offers"]
---

# Price series for one item key across chains and weeks

`GET /api/v1/public/catalog/offers/history`

## Request

- Base URL: `https://api.shelfatlas.com`
- URL: `https://api.shelfatlas.com/api/v1/public/catalog/offers/history`
- Auth: HTTP bearer

Every offer sharing one persisted item key (as carried by a search group) whose validity touches the last `days` days, oldest first, with lowest/median context. `summary` is computed from the CAMPAIGN rows only — these are ADVERTISED leaflet prices, never a normal or shelf price. The series also carries `regular` rows (everyday shelf prices, Salling only); use each point's price_kind to tell them apart. `summary` is null when the key has no campaign offer in the window, even if it has shelf prices; that is not an error.

## Query parameters

- `item_key` string, required
- `days` integer

## Response `200`

The item key's price series and summary.

- object
  - `ok` true, required
  - `data` object, required
    - `item_key` string, required
    - `product_id` string, uuid, nullable, required
    - `title` string, nullable, required: Normalised display title, null when the series is empty.
    - `days` integer, required
    - `series` OfferHistoryPoint[], required
      - `chain_slug` string, required
      - `chain_name` string, required
      - `valid_from` string, date, required
      - `valid_to` string, date, required: Inclusive last day.
      - `price_cents` integer, required: Advertised price in øre.
      - `price_kind` 'campaign' | 'regular', required
    - `summary` OfferHistorySummary, required: Context derived from the CAMPAIGN rows of the series. These are advertised leaflet prices — never present them as a normal or shelf price.
      - `lowest_cents` integer, required
      - `median_cents` integer, required
      - `chains` integer, required: Distinct chains that advertised the item.
      - `weeks_seen` integer, required: Distinct ISO weeks in which the item was advertised.

## Other responses

- `400`: Invalid parameters (`invalid_params`, `incompatible_params`).
- `401`: Missing, invalid, or revoked API key (`missing_api_key` / `invalid_api_key` / `revoked_api_key`).
- `429`: Rate limit or monthly limit reached (`rate_limited` / `monthly_limit_reached`).
- `503`: Temporary backend failure (`service_unavailable`).

---

[API](https://skmtc.dev/shelfatlas/apis/shelfatlas-catalog-api.md) · [All operations](https://skmtc.dev/shelfatlas/apis/shelfatlas-catalog-api/llms.txt) · [OpenAPI document](https://skmtc.dev/shelfatlas/apis/shelfatlas-catalog-api/revisions/943a8773856b?raw)
