---
title: "Query Discounts"
url: "https://developer-qual.migros.ch/apis/prices-discounts-1/versions/bd716bf2-db0b-4e77-bb28-b39065968f43/operations/queryPublicDiscounts"
---

> Full API specification: https://developer-qual.migros.ch/apis/prices-discounts-1/versions/bd716bf2-db0b-4e77-bb28-b39065968f43.md

# Query Discounts

`GET` `/migros/marketing/promotions/v1/public/discounts`

Operation ID: `queryPublicDiscounts`

This endpoint allows to query the set of Discounts based on a variety of filters. See `/migros/marketing/promotions/v1/discounts` for details.

## Query parameters

- `lang` (string, optional) - Override the `Accept-Language` header
- `id` (array, optional) - The `id` parameter allows to query one or more discounts via their ID (actually the Bundle ID).
- `region` (array, optional) - The `region` parameter filters for one or more specific regions.
- `event_id` (string, optional) - The `event_id` parameter allows to select discounts belonging to a specific event. (Note: Combining this parameter with `event_tactic` or `event_tactic_type` is technically possible but probably useless)
- `event_tactic` (string, optional) - The `event_tactic` parameter allows to select discounts based on their event tactic. Since an event tactic is a subcategory of an event tactic type, they should be used together. For instance, an event tactic with ID '2' can be a subcategory of multiple event tactic types. Only by combining both event_tactic_type and event_tactic, you get the complete information about tactic. (Note: Combining this parameter with `event_id` is technically possible but probably useless)
- `event_tactic_type` (string, optional) - The `event_tactic_type` parameter allows to select discounts based on their event tactic-type. Since an event tactic is a subcategory of an event tactic type, they should be used together. For instance, an event tactic with ID '2' can be a subcategory of multiple event tactic types. Only by combining both event_tactic_type and event_tactic, you get the complete information about tactic. (Note: Combining this parameter with `event_id` is technically possible but probably useless)
- `campaign_id` (string, optional) - The `campaign_id`parameter allows to select discounts belonging to a specific campaign.
- `state` (array, optional) - The `state` parameter allows to only select Discounts in the states 'draft', 'published' or 'current', where 'draft' only returns Discounts max. 5 days away from publishing.
- `distribution_channel` (array, optional) - The `distribution_channel`parameters allows to select discount belonging to a specific distributionChannel.id. * SM/VM: Alle Filialen * GASTRO: Gastronomie * MP/VOI: MP/VOI * MR: Migros Restaurant * T_SM/VM: SM/VM * TA: Take Away
- `role` (array, optional) - The `role` parameter allows to select discounts by by one or several roleId(s). * 1000000005: Neuheitenangebot * 1000000007: Display * 1000000008: Sortimentskompetenz (SORT) * 1000000009: FM Angebot * 1000000011: GM Angebot * 1000000014: Liquidation * 2000000001: M: High-Performer * 2000000002: M: Wochenangebot Typ I * 2000000003: M: Wochenangebot Typ II * 2000000005: M: Wochenend-Hits SM/VM
- `advertisement_type` (array, optional) - The `advertisement_type` parameter allows to select discount via their advertisementTypeId. * 1: % klein * 2: % gross * 3: Abs. Rabatt * 4: Vitamin Franken * 5: HIT * 6: 1+1 * 7: 2+1 * 8: Vitamintasche * 9: Aktuell * 10: Tiefpreis
- `type` (array, optional) - The `type` parameter allows to select discounts via their typeId. * 001: SA Sonderangebot * 002: SE Sellout * 003: LIQU Liquidationsangebot * 004: CAKT Cumulus-Angebot (Fix oder xFach Punkte) * 005: GRAB Angebot CHF beim Kauf ab X Stueck" * (006: XFY X für Y Angebot mit gleichem VP" obsolet, gibt es nicht mehr) * 007: SORT Sortimentsangebot ohne Preisreduktion"
- `reduction` (array, optional) - The `reduction` parameter allows to select discounts by their reductionTypeId. * 01: Relativer Rabatt * 02: Absoluter Rabatt * (03: X für Y obsolet, gibt es nicht mehr) * 04: Absolute CUMULUS Punkte * 05: X-Fach Punkte * 06: Rabattpreis = CHF * 07: HIT * 08: Preisabschlag
- `bundles_only` (boolean, optional) - If set to true: return only the designated bundle discount (typically the national discount). Attention: Setting bundles_only=true will suppress all bundles/discounts that do not have designated discount data for the bundle as whole.
- `boss_bw` (array, optional) - The `boss_bw` allows to select discounts for specific bossBW number. bossBW is the world code prefix for Boss number.
- `boss_bb` (array, optional) - The `boss_bb` allows to select discounts for specific bossBB number. bossBB is the area (bereich) code prefix for Boss number.

## Responses

- `200` - Array of all discounts
- `default` - Standard HTTP semantics (see above), no machine-interpretable body.

## OpenAPI definition

```yaml
openapi: 3.0.0
info:
  title: Prices & Discounts
  version: 1.6.0
servers:
  - description: URL of upstream
    url: https://api-qual.migros.ch
paths:
  /migros/marketing/promotions/v1/public/discounts:
    get:
      description: This endpoint allows to query the set of Discounts based on a
        variety of filters. See `/migros/marketing/promotions/v1/discounts` for
        details.
      operationId: queryPublicDiscounts
      parameters:
        - $ref: "#/components/parameters/lang"
        - $ref: "#/components/parameters/discount_id"
        - $ref: "#/components/parameters/discount_region"
        - $ref: "#/components/parameters/discount_event_id"
        - $ref: "#/components/parameters/discount_event_tactic"
        - $ref: "#/components/parameters/discount_event_tactic_type"
        - $ref: "#/components/parameters/discount_campaign_id"
        - $ref: "#/components/parameters/discount_state_public"
        - $ref: "#/components/parameters/discount_distribution_channel"
        - $ref: "#/components/parameters/discount_role"
        - $ref: "#/components/parameters/discount_advertisement_type"
        - $ref: "#/components/parameters/discount_type"
        - $ref: "#/components/parameters/discount_reduction"
        - $ref: "#/components/parameters/discount_bundles_only"
        - $ref: "#/components/parameters/discount_boss_bw"
        - $ref: "#/components/parameters/discount_boss_bb"
      responses:
        "200":
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/PublicDiscount"
                type: array
          description: Array of all discounts
        default:
          description: Standard HTTP semantics (see above), no machine-interpretable body.
      summary: Query Discounts
      tags:
        - Public-Discount-Data
security:
  - Kong-Api-Key: []
components:
  parameters:
    lang:
      description: Override the `Accept-Language` header
      in: query
      name: lang
      schema:
        enum:
          - de
          - fr
          - it
        type: string
    discount_id:
      description: The `id` parameter allows to query one or more discounts via their
        ID (actually the Bundle ID).
      explode: true
      in: query
      name: id
      schema:
        items:
          type: string
        type: array
      style: form
    discount_region:
      description: The `region` parameter filters for one or more specific regions.
      explode: true
      in: query
      name: region
      required: false
      schema:
        items:
          enum:
            - national
            - gmaa
            - gmzh
            - gmos
            - gmvd
            - gmge
            - gmnf
            - gmbs
            - gmlu
            - gmti
            - gmvs
          type: string
        type: array
      style: form
    discount_event_id:
      description: "The `event_id` parameter allows to select discounts belonging to a
        specific event. (Note: Combining this parameter with `event_tactic` or
        `event_tactic_type` is technically possible but probably useless)"
      in: query
      name: event_id
      schema:
        example: "609237"
        type: string
    discount_event_tactic:
      description: >-
        The `event_tactic` parameter allows to select discounts based on their
        event tactic. Since an event tactic is a subcategory of an event tactic
        type, they should be used together. For instance, an event tactic with
        ID '2' can be a subcategory of multiple event tactic types. Only by
        combining both event_tactic_type and event_tactic, you get the complete
        information about tactic.

        (Note: Combining this parameter with `event_id` is technically possible
        but probably useless)
      in: query
      name: event_tactic
      schema:
        example: "52"
        type: string
    discount_event_tactic_type:
      description: >-
        The `event_tactic_type` parameter allows to select discounts based on
        their event tactic-type. Since an event tactic is a subcategory of an
        event tactic type, they should be used together. For instance, an event
        tactic with ID '2' can be a subcategory of multiple event tactic types.
        Only by combining both event_tactic_type and event_tactic, you get the
        complete information about tactic.

        (Note: Combining this parameter with `event_id` is technically possible
        but probably useless)
      in: query
      name: event_tactic_type
      schema:
        example: "900"
        type: string
    discount_campaign_id:
      description: The `campaign_id`parameter  allows to select discounts belonging to
        a specific campaign.
      in: query
      name: campaign_id
      schema:
        type: string
    discount_state_public:
      description: The `state` parameter allows to only select Discounts in the states
        'draft', 'published' or 'current', where 'draft' only returns Discounts
        max. 5 days away from publishing.
      explode: true
      in: query
      name: state
      required: false
      schema:
        items:
          enum:
            - draft
            - published
            - current
          example: current
          type: string
        type: array
    discount_distribution_channel:
      description: >-
        The `distribution_channel`parameters allows to select discount belonging
        to a specific distributionChannel.id.
         * SM/VM: Alle Filialen
         * GASTRO: Gastronomie
         * MP/VOI: MP/VOI
         * MR: Migros Restaurant
         * T_SM/VM: SM/VM
         * TA: Take Away
      explode: true
      in: query
      name: distribution_channel
      schema:
        items:
          enum:
            - SM/VM
            - GASTRO
            - MP/VOI
            - MR
            - T_SM/VM
            - TA
          type: string
        type: array
    discount_role:
      description: >-
        The `role` parameter allows to select discounts by by one or several
        roleId(s).
          * 1000000005: Neuheitenangebot
          * 1000000007: Display
          * 1000000008: Sortimentskompetenz (SORT)
          * 1000000009: FM Angebot
          * 1000000011: GM Angebot
          * 1000000014: Liquidation
          * 2000000001: M: High-Performer
          * 2000000002: M: Wochenangebot Typ I
          * 2000000003: M: Wochenangebot Typ II
          * 2000000005: M: Wochenend-Hits SM/VM
      explode: true
      in: query
      name: role
      schema:
        items:
          enum:
            - "1000000005"
            - "1000000007"
            - "1000000008"
            - "1000000009"
            - "1000000011"
            - "1000000014"
            - "2000000001"
            - "2000000002"
            - "2000000003"
            - "2000000005"
          type: string
        type: array
      style: form
    discount_advertisement_type:
      description: >-
        The `advertisement_type` parameter allows to select discount via their
        advertisementTypeId.
          * 1:  % klein
          * 2:  % gross
          * 3:  Abs. Rabatt
          * 4:  Vitamin Franken
          * 5:  HIT
          * 6:  1+1
          * 7:  2+1
          * 8:  Vitamintasche
          * 9:  Aktuell
          * 10: Tiefpreis
      explode: true
      in: query
      name: advertisement_type
      schema:
        items:
          enum:
            - "1"
            - "2"
            - "3"
            - "4"
            - "5"
            - "6"
            - "7"
            - "8"
            - "9"
            - "10"
          example: "3"
          type: string
        type: array
    discount_type:
      description: >-
        The `type` parameter allows to select discounts via their typeId.
          * 001: SA Sonderangebot
          * 002: SE Sellout
          * 003: LIQU Liquidationsangebot
          * 004: CAKT Cumulus-Angebot (Fix oder xFach Punkte)
          * 005: GRAB Angebot CHF beim Kauf ab X Stueck"
          * (006: XFY X für Y Angebot mit gleichem VP" obsolet, gibt es nicht mehr)
          * 007: SORT Sortimentsangebot ohne Preisreduktion"
      explode: true
      in: query
      name: type
      schema:
        items:
          enum:
            - "001"
            - "002"
            - "003"
            - "004"
            - "005"
            - "007"
          example: "004"
          type: string
        type: array
    discount_reduction:
      description: >-
        The `reduction` parameter allows to select discounts by their
        reductionTypeId.
          * 01: Relativer Rabatt
          * 02: Absoluter Rabatt
          * (03: X für Y obsolet, gibt es nicht mehr)
          * 04: Absolute CUMULUS Punkte
          * 05: X-Fach Punkte
          * 06: Rabattpreis = CHF
          * 07: HIT
          * 08: Preisabschlag
      explode: true
      in: query
      name: reduction
      schema:
        items:
          enum:
            - "01"
            - "02"
            - "04"
            - "05"
            - "06"
            - "07"
            - "08"
          example: "07"
          type: string
        type: array
    discount_bundles_only:
      description: >-
        If set to true: return only the designated bundle discount (typically
        the national discount).


        Attention: Setting bundles_only=true will suppress all bundles/discounts
        that do not have designated discount data for the bundle as whole.
      in: query
      name: bundles_only
      schema:
        type: boolean
    discount_boss_bw:
      description: The `boss_bw` allows to select discounts for specific bossBW
        number. bossBW is the world code prefix for Boss number.
      explode: true
      in: query
      name: boss_bw
      schema:
        items:
          example: "04"
          type: string
        type: array
      style: form
    discount_boss_bb:
      description: The `boss_bb` allows to select discounts for specific bossBB
        number. bossBB is the area (bereich) code prefix for Boss number.
      explode: true
      in: query
      name: boss_bb
      schema:
        items:
          example: "02"
          type: string
        type: array
      style: form
  schemas:
    PublicDiscount:
      description: Same as Discount but with some stripped fields from it for public use.
      properties:
        advertisementTypeId:
          description: AdvertisementTypeID describes how the discount should be visualized
          example: "2"
          type: string
        amount:
          description: Amount is relative or absolute reduction amount to the price (e.g.
            20%, 4.0)
          example: 30%
          type: string
        articleHint:
          description: ArticleHint is the additional information about the Discount and
            related Products
          example: Angebot gilt nur vom 24.1. bis 31.8.2023, solange Vorrat.
          type: string
        badge:
          description: Badge for the Discount (e.g. 40%, 30% in PNG and SVG format)
          properties:
            description:
              example: Deskriptiver Text des Bilds
              type: string
            hexColor:
              example: "#ff6600"
              type: string
            stack:
              example: https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png
              type: string
            vector:
              example: https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg
              type: string
          type: object
        bossBB:
          description: bossBB is the area (bereich) code prefix for Boss number
          example: "02"
          type: string
        bossBW:
          description: bossBW is the world code prefix for Boss number
          example: "04"
          type: string
        campaigns:
          description: Campaigns holds campaign data for a discount
          items:
            properties:
              endDate:
                description: EndDate is the date when this campaign expires
                example: 2026-07-22
                format: date
                type: string
              id:
                description: id of a campaign
                example: "6933"
                type: string
              startDate:
                description: StartDate is the date when this campaign becomes valid
                example: 2026-07-16
                format: date
                type: string
            type: object
          type: array
        cumulusPoints:
          description: CumulusPoints one receives with this Discount
          properties:
            isRelative:
              description: Relative describes if Cumulus Points value is relative or absolute
                (e.g. 20X points or 20 points)
              example: true
              type: boolean
            value:
              description: Value for Cumulus Points (e.g. 20)
              example: 20
              type: integer
          type: object
        description:
          description: Description is a short text about the Discount (e.g. Alle Trauben
            im Offenverkauf)
          example: Duftkerze im Glas
          type: string
        disclaimer:
          description: Disclaimer contains text about exceptions, validity and special
            conditions
          example: ""
          type: string
        discountId:
          description: ID is the Discount identifier
          example: "1042893"
          type: string
        events:
          $ref: "#/components/schemas/events"
        hint:
          description: Hint is an example of a reduction in text form
          example: ""
          type: string
        image:
          description: Image is the main image referring to the Discount in JPG format
          properties:
            description:
              example: Deskriptiver Text des Bilds
              type: string
            hexColor:
              example: "#ff6600"
              type: string
            stack:
              example: https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png
              type: string
            vector:
              example: https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg
              type: string
          type: object
        insteadOf:
          description: InsteadOf is used for specific use-cases, where we need another
            word for "statt"
          example: ""
          type: string
        isCollective:
          description: Collective describes whether this Discount is applied to more than
            one product (e.g. alle Fondues)
          example: true
          type: boolean
        logo:
          description: Logo image related to this Discount (e.g. logo for "Migros Bio" or
            for "UTZ Certified")
          properties:
            description:
              example: Deskriptiver Text des Bilds
              type: string
            hexColor:
              example: "#ff6600"
              type: string
            stack:
              example: https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png
              type: string
            vector:
              example: https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg
              type: string
          type: object
        minimumPieces:
          description: MinimumPieces describes how many pieces must be bought for the
            Discount to apply
          properties:
            prefix:
              description: Prefix is a text to be displayed before the Value
              example: ab
              type: string
            value:
              description: Value is the amount of pieces
              example: 2
              type: integer
          type: object
        originalPrice:
          description: OriginalPrice is the non-discounted price. This is based on
            discount reference product.
          example: 11
          type: number
        price:
          description: Price is the discounted price. This is based on discount reference
            product price.
          example: 5.5
          type: number
        publicationDate:
          description: PublicationDate describes when this Discount is allowed to be
            published to customers
          example: 2022-12-25T00:00:00+01:00
          format: date-time
          type: string
        reduction:
          description: Reduction contains information about the price reduction
          properties:
            amount:
              description: Can either be an absolute price in CHF or a relative percentage by
                which the product's price will be reduced.
              example: 1.22
              type: number
            relative:
              description: Defines if the Amount is a relative (percentage) or absolute (CHF)
                value.
              example: false
              type: boolean
            suffix:
              description: The translations for a string after the price. E.g. 10 %
                günstiger/de réduction/di riduzione.
              example: günstiger
              type: string
            unit:
              description: Unit of Amount, either CHF or %
              example: CHF
              type: string
          required:
            - suffix
          type: object
        reductionTypeId:
          description: ReductionTypeID tells us whether it's a 01=relativ, 02=absolut, ...
            reduction
          example: "05"
          type: string
        referenceProductId:
          description: ReferenceProductID is the main Product which this Discount refers
            to ("Hauptwerbeartikel")
          example: "243140560000"
          type: string
        region:
          description: Region defines the regional context (e.g. national, gmzh, gmaa,
            gmlu, ...)
          example: national
          type: string
        secondaryImage:
          description: SecondaryImage is the secondary image referring to the Discount
          properties:
            description:
              example: Deskriptiver Text des Bilds
              type: string
            hexColor:
              example: "#ff6600"
              type: string
            stack:
              example: https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png
              type: string
            vector:
              example: https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg
              type: string
          type: object
        secondaryLogo:
          description: SecondaryLogo image related to this Discount (e.g. logo for "BIO
            SUISSE" etc.)
          properties:
            description:
              example: Deskriptiver Text des Bilds
              type: string
            hexColor:
              example: "#ff6600"
              type: string
            stack:
              example: https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png
              type: string
            vector:
              example: https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg
              type: string
          type: object
        signet:
          description: Signet is the image related to Cumulus Discount (e.g. image for
            "20x Cumulus")
          properties:
            description:
              example: Deskriptiver Text des Bilds
              type: string
            hexColor:
              example: "#ff6600"
              type: string
            stack:
              example: https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png
              type: string
            vector:
              example: https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg
              type: string
          type: object
        transparent:
          description: Transparent is the main image referring to the Discount in PNG format
          properties:
            description:
              example: Deskriptiver Text des Bilds
              type: string
            hexColor:
              example: "#ff6600"
              type: string
            stack:
              example: https://migros-dev.rokka.io/{stack}/639899686120c3f0b71b244ece8b20fc66ba14d7.png
              type: string
            vector:
              example: https://migros-dev.rokka.io/original/9def306d8cab1a81bc6eb025be80ed780f895b22.svg
              type: string
          type: object
        type:
          description: Type describes which type of discount we got (e.g. aktion, neuheit,
            ...)
          example: aktion
          type: string
        typeId:
          description: TypeID is the discount type identifier (e.g. 001, 005, ...)
          example: ""
          type: string
        typeLabel:
          description: TypeLabel is the name for discount TypeID
          example: NUG Nimm X Artikel
          type: string
        validFromDate:
          description: ValidFrom is the date when this Discount becomes valid/active
          example: 2024-05-07T00:00:00+02:00
          format: date-time
          type: string
        validToDate:
          description: ValidTo is the date till this Discount is valid/active
          example: 2024-05-13T23:59:59+02:00
          format: date-time
          type: string
      required:
        - discountId
      type: object
    events:
      description: Events holds event data for a discount
      items:
        properties:
          endDate:
            description: EndDate is the date when this event expires
            example: 2026-07-22
            format: date
            type: string
          id:
            description: id of an event
            example: "609237"
            type: string
          isMasterAssignment:
            description: isMasterAssignment defines if the Event is the Main event. The
              MasterEvent flag indicates, that this event promotion is
              responsible for the online communication, which means it should be
              shown on migros.ch.
            example: true
            type: boolean
          productID:
            description: productID is the ID of the product that is paired to the event.
            example: "101712200000"
            type: string
          startDate:
            description: StartDate is the date when this event becomes valid
            example: 2026-07-16
            format: date
            type: string
          tactic:
            description: >-
              tactic is a subcategory of TacticType, represented by a numeric
              ID. This ID corresponds to specific options, such as "13
              Wochenflyer" under "80 Print" or "4 POP-Flyer & Kataloge" under
              "84 Beilagen/Flyer".

              Since an event tactic is a subcategory of an event tactic type,
              they should be used together. Knowing only the event tactic is
              pretty useless because it can be a subcategory of multiple event
              tactic types, that have nothing in common. For example event
              tactic '02' can be 'Anzeige' for event tactic type '01 Drucken' or
              'Instore-TV' for tactic type '82 Video'.
            example: "52"
            type: string
          tacticType:
            description: >-
              tacticType represents the advertising strategy for an event. It
              specifies the method as a numeric ID, for example, '80' for
              'Print' or '84' for 'Beilagen/Flyer'.

              Since an event tactic is a subcategory of an event tactic type,
              they should be used together. For instance, an event tactic with
              ID '02' can be a subcategory of multiple event tactic types, which
              have nothing in common.
            example: "900"
            type: string
        type: object
      type: array
  securitySchemes:
    Kong-Api-Key:
      description: Kong key-auth authentication
      in: header
      name: X-Api-Key
      type: apiKey
```
