Carrefour
Carrefour Promotions API
carrefour.fr items on promotion: all promotions, items seen in the catalogue, immediate discounts, loyalty-card offers or the site's seasonal festive selection, optionally for one aisle, with the search filters and sorts. Each promotion carries its label as the site writes it ("Le 2ème à -50%", "-10% Club", "Vu en catalogue"), loyalty_only (the price needs the loyalty card), the discounted and initial price when the site prices them, the quantity and the start and end dates. 30 items per page with total and every facet. Pass store for one store's promotions and prices. France only. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsontypeenum<string>default:allWhich promotions. label in the response returns the site's own name for the list.
Example: catalogue
all— Every promotion. The default.catalogue— Items seen in the catalogue (Vu en catalogue).immediate— Immediate discounts (Remises immédiates).loyalty— Loyalty-card offers (Avantage Fidélité): member prices.festive— The site's seasonal Sélection festive.
categorystringOnly one aisle: a value of the Rayon facet (facets[id=product.categories.name].values[].label), in French as the site writes it.
Example: Boissons
countryenum<string>default:frfr only: this endpoint covers carrefour.fr (France) and nothing else. Any other value is a 400.
Example: fr
fr— France (carrefour.fr). The only value.
storestring | integerfr only: prices and assortment at one Carrefour store. A store_ref or a pickup_refs[].ref from the stores endpoint, or stores[].store.ref from store-availability (digits). Without it, prices are carrefour.fr's national online price. The response says which one you got in store and price_scope. An unknown ref is a charged 404.
Example: 840093
pageintegerResults page, 1-based, up to 500. Defaults to 1. 30 items per page on fr (ar and ro 24, be 36).
Example: 2
sortenum<string>default:relevanceThe order of the listing. ar and ro take relevance and the two price sorts; be takes relevance only.
relevance— The site's own order. The default.price_low_to_high— Cheapest first.price_high_to_low— Most expensive first.unit_price_low_to_high— fr: lowest price per kg or litre first.unit_price_high_to_low— fr: highest price per kg or litre first.top_rated— fr: best rated first.
brandstringfr: one brand as the Marque facet lists it (facets[id=facet_marque].values[].label, e.g. NUTELLA, CARREFOUR BIO). Another casing is matched to the facet's own.
Example: LACTEL
nutriscoreenum<string>fr: only this Nutri-Score: A, B, C, D or E.
Example: A
organicbooleanfr: only organic products.
Example: true
carrefour_brandsbooleanfr: only Carrefour's own brands.
Example: true
min_pricenumberfr: lowest price in EUR.
Example: 2
max_pricenumberfr: highest price in EUR.
Example: 10
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# This week's catalogue promotions, with their end dates. Store each run: that is your history.
res = client.carrefour.promotions(type="catalogue")["data"]
print(res["label"], res["total"], "items")
for item in res["items"]:
p = item["promotion"]
print(item["ean"], item["title"], item["price"], p["label"], p["starts_at"], p["ends_at"])Response