Prices & Discounts

Price-Data

Get store prices for a product

This endpoint retrieves currently valid store prices for a specified product. By default, only currently valid prices will be fetched. However, future store prices can also be retrieved by using the status=all query parameter.

get
https://api.migros.ch/migros/products/prices/v1/sellingprices/stores/{storeId}/{productId}

Query Parameters

langstring

Override the Accept-Language header

Allowed values:defrit

statusstring

The status query parameter allows to filter by status and enables fetching future prices.

Allowed values:all

Example:[ "" ]

Path Parameters

productIdstringrequired

The ID of the product.

Example:204002600400

storeIdstringrequired

The ID of the store.

Example:0034300

Response

200 application/json

Array of prices

Price of a product in certain timeframe. It can be with or without discount.

basePricenumber

BasePrice describes the base price for a single item of the product

Example:1.1

basePriceQuantityinteger

BasePriceQuantity describes the unit quantity for the BasePrice

Example:500

basePriceUnitstring

BasePriceUnit describes the unit for the BasePrice (e.g “G”, “ST”, “L” etc.)

Example:G

discountobject

Represents discount data gathered from different sources.

Show Child Parameters
isDailyPriceboolean

IsDailyPrice (Tagespreis) indicates that there are multiple prices for a product across different regions or even within stores in the same region. Therefore, to display the correct price for a product, we must consider the specific region or store context.

Example:true

isDiscountbooleanrequired

IsDiscount indicates if this price is a discounted price.

Example:true

originalBasePricenumber

OriginalBasePrice describes the original non-discounted base price for a single item of the product. This is set only when its a discounted price

Example:1.1

originalPricenumber

OriginalPrice is the price without a discount. This is set only when price is a discounted price

Example:11

pricenumber

Price is the Product price

Example:5.5

quantityinteger

Quantity describes the number of items one gets for the price

Example:1

regionstring

Region describes the places where the prices are valid

Allowed values:gmaagmzhgmosgmvdgmgegmnfgmbsgmlugmtigmvsnational

Example:gmzh

storeIdstring

StoreID is the identifier for the store

Example:0033000

unitstring

Unit describes the unit for quantity (e.g “CU”, “KG” etc.)

Example:CU

validFromDatestring(date-time)required

ValidFrom indicates the start date when the price is valid

Example:2024-05-07T00:00:00+02:00

validToDatestring(date-time)required

ValidTo indicates the end date when the price becomes invalid

Example:2024-05-13T23:59:59+02:00

get/migros/products/prices/v1/sellingprices/stores/{storeId}/{productId}
 
200 application/json

Get regional prices for a product

This endpoint retrieves currently valid regional prices for a specified product. If no regional price for a region is found, the national price will be used as a fallback. Priority of prices is also taken into account. E.g. a discounted takes precedence over non-discounted prices and multiple applicable discounts get prioritised.

get
https://api.migros.ch/migros/products/prices/v1/sellingprices/{productId}

Query Parameters

langstring

Override the Accept-Language header

Allowed values:defrit

regionsarray[string]

The regions parameter filters for one or more specific regions. When set, only data these regions will be returned. If the price of a requested region is not available, national price will be used as a fallback.

Both, the "explode"ed and the un"explode"ed variants are supported, so ?regions=gmaa,national and ?regions=gmaa&regions=national are equivalent.

Allowed values:gmaagmzhgmosgmvdgmgegmnfgmbsgmlugmtigmvsnational

Path Parameters

productIdstringrequired

The ID of the product.

Example:204002600400

Response

200 application/json

Array of prices

Price of a product in certain timeframe. It can be with or without discount.

basePricenumber

BasePrice describes the base price for a single item of the product

Example:1.1

basePriceQuantityinteger

BasePriceQuantity describes the unit quantity for the BasePrice

Example:500

basePriceUnitstring

BasePriceUnit describes the unit for the BasePrice (e.g “G”, “ST”, “L” etc.)

Example:G

discountobject

Represents discount data gathered from different sources.

Show Child Parameters
isDailyPriceboolean

IsDailyPrice (Tagespreis) indicates that there are multiple prices for a product across different regions or even within stores in the same region. Therefore, to display the correct price for a product, we must consider the specific region or store context.

Example:true

isDiscountbooleanrequired

IsDiscount indicates if this price is a discounted price.

Example:true

originalBasePricenumber

OriginalBasePrice describes the original non-discounted base price for a single item of the product. This is set only when its a discounted price

Example:1.1

originalPricenumber

OriginalPrice is the price without a discount. This is set only when price is a discounted price

Example:11

pricenumber

Price is the Product price

Example:5.5

quantityinteger

Quantity describes the number of items one gets for the price

Example:1

regionstring

Region describes the places where the prices are valid

Allowed values:gmaagmzhgmosgmvdgmgegmnfgmbsgmlugmtigmvsnational

Example:gmzh

storeIdstring

StoreID is the identifier for the store

Example:0033000

unitstring

Unit describes the unit for quantity (e.g “CU”, “KG” etc.)

Example:CU

validFromDatestring(date-time)required

ValidFrom indicates the start date when the price is valid

Example:2024-05-07T00:00:00+02:00

validToDatestring(date-time)required

ValidTo indicates the end date when the price becomes invalid

Example:2024-05-13T23:59:59+02:00

get/migros/products/prices/v1/sellingprices/{productId}
 
200 application/json

Discount-Data

Query Discounts

This endpoint allows to query the set of Discounts with a wide variety of criteria (e.g. region, state, …). Multiple filters are combined by AND logic. Without any query parameter all discounts in all regions will be returned.

If a discount is valid in more than one region it is returned multiple times in the response, once for each region (note that the data inside a discount may vary from region to region). This behaviour is different from the old MAPI. If you are interested only in Discount Bundles you can select them with the ‘bundles_only’ parameter (but see below).

Both, the "explode"ed and the un"explode"ed variants for array query parameters are supported, so ?regions=gmaa,national and ?regions=gmaa&regions=national are equivalent.

get
https://api.migros.ch/migros/marketing/promotions/v1/discounts

Query Parameters

langstring

Override the Accept-Language header

Allowed values:defrit

idarray[string]

The id parameter allows to query one or more discounts via their ID (actually the Bundle ID).

regionarray[string]

The region parameter filters for one or more specific regions.

Allowed values:nationalgmaagmzhgmosgmvdgmgegmnfgmbsgmlugmtigmvs

event_idstring

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)

Example:609237

event_tacticstring

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)

Example:52

event_tactic_typestring

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)

Example:900

campaign_idstring

The campaign_idparameter allows to select discounts belonging to a specific campaign.

statearray[string]

The state parameter allows to only select Discounts in a specific state, whether it is in drafting (not published yet), published (but not valid yet), currently valid or terminated (not valid anymore). This state is calculated based on the publication, valid-from and valid-to dates.

Allowed values:draftpublishedcurrentterminated

Example:current

distribution_channelarray[string]

The distribution_channelparameters 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

Allowed values:SM/VMGASTROMP/VOIMRT_SM/VMTA

rolearray[string]

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

Allowed values:1000000005100000000710000000081000000009100000001110000000142000000001200000000220000000032000000005

advertisement_typearray[string]

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

Allowed values:12345678910

Example:3

typearray[string]

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"

Allowed values:001002003004005007

Example:004

reductionarray[string]

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

Allowed values:01020405060708

Example:07

searchstring

Search description field of discount for all search terms provided.
Only letters and digits are considered while searching and search terms with less than three characters are ignored. This filter is supposed to be used by humans, not by machines.

Example:compote pommes

bundles_onlyboolean

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_bwarray[string]

The boss_bw allows to select discounts for specific bossBW number. bossBW is the world code prefix for Boss number.

Example:04

boss_bbarray[string]

The boss_bb allows to select discounts for specific bossBB number. bossBB is the area (bereich) code prefix for Boss number.

Example:02

Response

application/json

Array of all discounts

Represents discount data gathered from different sources.

advertisementTypeIdstring

AdvertisementTypeID describes how the discount should be visualized

Example:2

amountstring

Amount is relative or absolute reduction amount to the price (e.g. 20%, 4.0)

Example:30%

articleHintstring

ArticleHint is the additional information about the Discount and related Products

Example:Angebot gilt nur vom 24.1. bis 31.8.2023, solange Vorrat.

badgeobject

Badge for the Discount (e.g. 40%, 30% in PNG and SVG format)

Show Child Parameters
bossBBstring

bossBB is the area (bereich) code prefix for Boss number

Example:02

bossBWstring

bossBW is the world code prefix for Boss number

Example:04

campaignsarray[object]

Campaigns holds campaign data for a discount

Show Child Parameters
cumulusPointsobject

CumulusPoints one receives with this Discount

Show Child Parameters
descriptionstring

Description is a short text about the Discount (e.g. Alle Trauben im Offenverkauf)

Example:Duftkerze im Glas

disclaimerstring

Disclaimer contains text about exceptions, validity and special conditions

Example:[ "" ]

discountIdstringrequired

ID is the Discount identifier

Example:1042893

distributionChannelobject

DistributionChannel describes by which retailer this Discount is accepted (e.g. SM/VM for supermarkets, MR for Migros Restaurant, …)

Show Child Parameters
eventsarray[object]

Events holds event data for a discount

Show Child Parameters
hintstring

Hint is an example of a reduction in text form

Example:[ "" ]

imageobject

Image is the main image referring to the Discount in JPG format

Show Child Parameters
insteadOfstring

InsteadOf is used for specific use-cases, where we need another word for “statt”

Example:[ "" ]

isCollectiveboolean

Collective describes whether this Discount is applied to more than one product (e.g. alle Fondues)

Example:true

isHighPerformerboolean

HighPerformer describes whether this Discount has high importance due to high sales volume

Example:true

lastImportedDatestring(date-time)

LastImported is a timestamp of last processing of data

Example:2024-05-15T04:17:15.000973132+02:00

logoobject

Logo image related to this Discount (e.g. logo for “Migros Bio” or for “UTZ Certified”)

Show Child Parameters
minimumPiecesobject

MinimumPieces describes how many pieces must be bought for the Discount to apply

Show Child Parameters
originalPricenumber

OriginalPrice is the non-discounted price. This is based on discount reference product.

Example:11

pricenumber

Price is the discounted price. This is based on discount reference product price.

Example:5.5

priorityinteger

Priority tells us which Discount should be used if there are multiple Discounts active at the same time for the same product. The lower the number, the higher the priority.

Example:6

publicationDatestring(date-time)

PublicationDate describes when this Discount is allowed to be published to customers

Example:2022-12-25T00:00:00+01:00

reductionobject

Reduction contains information about the price reduction

Show Child Parameters
reductionTypeIdstring

ReductionTypeID tells us whether it’s a 01=relativ, 02=absolut, … reduction

Example:05

referenceProductIdstring

ReferenceProductID is the main Product which this Discount refers to (“Hauptwerbeartikel”)

Example:243140560000

regionstring

Region defines the regional context (e.g. national, gmzh, gmaa, gmlu, …)

Example:national

roleIdstring

RoleID holds further information regarding the “type” of a Discount (e.g. high-performer, weekend-promotion, liquidation)

Example:1000000008

roleLabelstring

RoleLabel is a descriptive string for the value in RoleID

Example:Sortimentskompetenz (SORT)

secondaryImageobject

SecondaryImage is the secondary image referring to the Discount

Show Child Parameters
secondaryLogoobject

SecondaryLogo image related to this Discount (e.g. logo for “BIO SUISSE” etc.)

Show Child Parameters
signetobject

Signet is the image related to Cumulus Discount (e.g. image for “20x Cumulus”)

Show Child Parameters
transparentobject

Transparent is the main image referring to the Discount in PNG format

Show Child Parameters
typestring

Type describes which type of discount we got (e.g. aktion, neuheit, …)

Example:aktion

typeIdstring

TypeID is the discount type identifier (e.g. 001, 005, …)

Example:[ "" ]

typeLabelstring

TypeLabel is the name for discount TypeID

Example:NUG Nimm X Artikel

validFromDatestring(date-time)

ValidFrom is the date when this Discount becomes valid/active

Example:2024-05-07T00:00:00+02:00

validToDatestring(date-time)

ValidTo is the date till this Discount is valid/active

Example:2024-05-13T23:59:59+02:00

get/migros/marketing/promotions/v1/discounts
 
application/json