Carrefour France prices per store, every seller's offer and the nutrition label, as JSON
The Carrefour France API turns carrefour.fr, the French supermarket's online store and its marketplace, into clean JSON in eleven actions.
11 active endpoints, on 1 and 2 credit tiers.
- POST/carrefour-fr/v1/search
- POST/carrefour-fr/v1/product/detail
- POST/carrefour-fr/v1/product/offers
- POST/carrefour-fr/v1/product/reviews
- POST/carrefour-fr/v1/seller/reviews
- POST/carrefour-fr/v1/seller/profile
- POST/carrefour-fr/v1/seller/products
- +4 more
What Carrefour France endpoints does ReefAPI ship?
11 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.
Carrefour France API
3 of 11 endpoints, ready to run
30 products a page: EAN, title, brand, packaging, price with the struck price, loyalty-card credit and multi-buy kept apart, unit price, seller (Carrefour or marketplace), availability, rating, Nutri-Score and the lowest other offer.
{ "ok": true, "meta": { "api": "carrefour-fr", "endpoint": "search", "mode": "live", "latency_ms": 1248.3, "record_count": 30, "cache_hit": false }, "data": { "results": [ { "position": 1, "product_id": "3533630088362", "ean": "3533630088362", "title": "Lait Demi-Ecrémé GrandLait GRANDLAIT", "brand": "GRANDLAIT", "url": "https://www.carrefour.fr/p/lait-demi-ecreme-grandlait-grandlait-3533630088362", "product_type": "product", "business_type": "food", "category": "Crèmerie et Produits laitiers", "category_path": [ "Crèmerie et Produits laitiers", "Laits et Boissons végétales", "Lait demi-écrémé" ], "packaging": "le pack de 10 bouteilles de 1L", "format": "1l", "price": 11.6, "currency": "EUR", "was_price": null, "discount_amount": null, "discount_percent": null, "promotion_label": null, "promotion_ends": null, "loyalty_price": null, "loyalty_offers": [], "multibuy_offers": [ { "type": "ri", "label": "Le 2ème à -50%", "quantity": 2, "total_price": 17.4, "regular_total": 23.2, "valid_until": "2026-10-12" } ], "promotion_badges": [], "unit_price": 1.16, "unit_of_measure": "L", "unit_price_label": "1.16 € / L", "unit_price_basis": "price", "tax_message": null, "offer_id": "0261-150-6", "seller": { "id": null, "name": "Carrefour", "is_carrefour": true, "rating": null, "rating_count": null, "rating_scale": null, "url": null }, "shipping_cost": null, "free_shipping": null, "free_shipping_minimum": null, "delivery_days_min": null, "delivery_days_max": null, "availability": "in_stock", "in_stock": true, "low_stock": false, "other_offers_count": 0, "other_offers_lowest_price": null, "lowest_offer_price": 11.6, "rating": 4.8, "review_count": 5, "rating_scale": 5, "nutriscore": null, "labels": [], "highlight": "Partenaire Monopoly", "is_best_seller": false, "is_new": false, "is_sponsored": false, "image": "https://media.carrefour.fr/medias/00b4c9d658e33bf3867c48d23ae956f0/p_1500x1500/3533630088362-photosite-20161220-162326-0.jpg" }, { "position": 2, "product_id": "3276554163158", "ean": "3276554163158", "title": "Lait Demi-Écrémé CARREFOUR CLASSIC'", "brand": "CARREFOUR CLASSIC'", "url": "https://www.carrefour.fr/p/lait-demi-ecreme-carrefour-classic-3276554163158", "product_type": "product", "business_type": "food", "category": "Crèmerie et Produits laitiers", "category_path": [ "Crèmerie et Produits laitiers", "Laits et Boissons végétales", "Lait demi-écrémé" ], "packaging": "la bouteille 1L", "format": "1L", "price": 1.05, "currency": "EUR", "was_price": null, "discount_amount": null, "discount_percent": null, "promotion_label": null, "promotion_ends": null, "loyalty_price": 0.89, "loyalty_offers": [ { "type": "rd_offre_pass", "label": "-15% Mardi PASS", "min_quantity": 1, "discount_percent": 15, "card_credit": 0.16, "card_credit_scope": "unit", "credit_basis": "price", "price_after_credit": 0.89, "lot_price": null, "lot_price_after_credit": null, "valid_from": "2025-01-01", "valid_until": "2026-12-31" } ], "multibuy_offers": [], "promotion_badges": [], "unit_price": 1.05, "unit_of_measure": "L", "unit_price_label": "1.05 € / L", "unit_price_basis": "price", "tax_message": null, "offer_id": "0261-150-6", "seller": { "id": null, "name": "Carrefour", "is_carrefour": true, "rating": null, "rating_count": null, "rating_scale": null, "url": null }, "shipping_cost": null, "free_shipping": null, "free_shipping_minimum": null, "delivery_days_min": null, "delivery_days_max": null, "availability": "in_stock", "in_stock": true, "low_stock": false, "other_offers_count": 0, "other_offers_lowest_price": null, "lowest_offer_price": 1.05, "rating": 4.72, "review_count": 164, "rating_scale": 5, "nutriscore": "A", "labels": [], "highlight": null, "is_best_seller": false, "is_new": false, "is_sponsored": false, "image": "https://media.carrefour.fr/medias/6236a56cbc6c46c4a47aaeea5b9ffe0b/p_1500x1500/3276554163158-photosite-20241112-171948-0.jpg" }, { "position": 3, "product_id": "3270190430049", "ean": "3270190430049", "title": "Lait Demi-Écrémé CARREFOUR EXTRA", "brand": "CARREFOUR EXTRA", "url": "https://www.carrefour.fr/p/lait-demi-ecreme-carrefour-extra-3270190430049", "product_type": "product", "business_type": "food", "category": "Crèmerie et Produits laitiers", "category_path": [ "Crèmerie et Produits laitiers", "Laits et Boissons végétales", "Lait demi-écrémé" ], "packaging": "le pack de 6 bouteilles de 1L", "format": "6x1L", "price": 6.66, "currency": "EUR", "was_price": null, "discount_amount": null, "discount_percent": null, "promotion_label": null, "promotion_ends": null, "loyalty_price": 5.66, "loyalty_offers": [ { "type": "rd_offre_pass", "label": "-15% Mardi PASS", "min_quantity": 1, "discount_percent": 15, "card_credit": 1, "card_credit_scope": "unit", "credit_basis": "price", "price_after_credit": 5.66, "lot_price": null, "lot_price_after_credit": null, "valid_from": "2025-01-01", "valid_until": "2026-12-31" } ], "multibuy_offers": [], "promotion_badges": [], "unit_price": 1.11, "unit_of_measure": "L", "unit_price_label": "1.11 € / L", "unit_price_basis": "price", "tax_message": null, "offer_id": "0261-150-6", "seller": { "id": null, "name": "Carrefour", "is_carrefour": true, "rating": null, "rating_count": null, "rating_scale": null, "url": null }, "shipping_cost": null, "free_shipping": null, "free_shipping_minimum": null, "delivery_days_min": null, "delivery_days_max": null, "availability": "in_stock", "in_stock": true, "low_stock": false, "other_offers_count": 0, "other_offers_lowest_price": null, "lowest_offer_price": 6.66, "rating": 4.71, "review_count": 1954, "rating_scale": 5, "nutriscore": null, "labels": [], "highlight": null, "is_best_seller": false, "is_new": false, "is_sponsored": false, "image": "https://media.carrefour.fr/medias/11bae5b7375a317593e606fdabd76474/p_1500x1500/3270190430049-photosite-20210504-175356-0.jpg" } ], "count": 30, "total_results": 576, "total_pages": 20, "page": 1, "page_size": 30, "sort": "relevance", "applied_filters": {}, "sponsored_dropped": 0, "sponsored_count": 0, "search_type": null, "available_filters": [ { "field": "EM_Operations_SEO", "label": "Opération", "type": "checkbox", "selected": false, "values": [ { "value": "Partenaire Monopoly", "label": "Partenaire Monopoly", "count": 7, "selected": false } ] }, { "field": "ES_discount_quickaccess", "label": "Promotions", "type": "boolean", "selected": false, "values": [ { "value": "false", "label": "false", "count": 459, "selected": false }, { "value": "true", "label": "true", "count": 137, "selected": false } ] }, { "field": "facet_promotions", "label": "Promotions", "type": "checkbox", "selected": false, "values": [ { "value": "Toutes les promotions", "label": "Toutes les promotions", "count": 151, "selected": false }, { "value": "Remises immédiates", "label": "Remises immédiates", "count": 43, "selected": false }, { "value": "Avantage Fidélité", "label": "Avantage Fidélité", "count": 83, "selected": false } ] } ], "has_next_page": true, "query": "lait", "did_you_mean": null, "autocorrected": false, "related_searches": [ "lait sans lactose", "lait demi ecreme", "lait entier" ], "keyword_matches_on_page": 30, "fallback_results_dropped": 0, "fallback_total": null, "redirected_to": null, "redirect_type": null, "store": { "store_id": null, "store_code": "0261", "name": "Carrefour online catalogue (default store)", "is_default": true } } }
How the Carrefour France API works
Carrefour France is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 256 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.
Find a store, search it, then compare every offer on a product
Grocery prices depend on the store. stores turns a postal code into a store_id; search prices the list for that store; product/offers shows whether a marketplace seller beats Carrefour on a non-food item.
{"postal_code": "69001"}The nearest drive and pickup stores with distance and today's hours. Take stores[0].store_id.
{"query": "nutella", "store_id": "<stores[0].store_id>"}That store's prices and assortment; the response's store object names it.
{"product_id": "6942351431352"}A 55" TV on 2026-09-16: 8 offers, Carrefour at 449.99 (struck 499.99), the cheapest a marketplace seller at 404.70 with free delivery.
Three calls give store-specific grocery prices and the cheapest delivered offer on a marketplace product, every price in its own field.
curl -X POST https://api.reefapi.com/carrefour-fr/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"lait"}'{
"ok": true,
"data": { … },
"meta": {
"api": "carrefour-fr",
"endpoint": "search",
"mode": "live",
"latency_ms": …,
"record_count": …
},
"error": null
}Price, struck price, card credit and multi-buy are four different numbers
A Carrefour page can show a sale price with a crossed-out price, a loyalty-card credit, and a 'second one at -50%' offer on the same product. The API keeps each in its own field, and a search row's price is its buy-box offer, not always the cheapest one.
| Product (2026-09-16) | price | was_price | loyalty / multi-buy | other offers |
|---|---|---|---|---|
| Hisense 55" QLED TV 55E7S | 449.99 EUR | 499.99 (-10%) | none | 8 offers, cheapest 404.70 from a marketplace seller with free delivery |
| Rowenta X-Pert 7.60 stick vacuum | 119.99 EUR | 179.99 (-33%) | loyalty_price 99.99 (20 EUR credited to the card) | 3 other offers |
| Kärcher WD 1 wet and dry vacuum | 54.99 EUR | null | loyalty_price 43.99 (20% credited to the card) | none |
| GrandLait semi-skimmed milk, 10 x 1 L | 11.60 EUR (1.16 EUR / L) | null | multi-buy: 2 for 17.40 | none |
| Nutella 400 g | 3.65 EUR (default catalogue) | null | 4.25 EUR at a Lyon drive store | prices follow store_id / postal_code |
price is what the page sells one unit at. was_price is the crossed-out price. A loyalty offer is money credited to the Carrefour card after purchase, so price does not change; loyalty_price shows the price after that credit. A multi-buy prices several units together and never replaces price. The unit price is the one the site publishes, which is based on the regular price while a promotion runs (unit_price_basis says so).
Which store, which price is which, and what the page does not publish
Measured on 2026-09-16: 87 live calls across the eleven actions, 25 real, 7 misspelt and 10 nonsense French queries, 14 products in 9 categories, 8 of them compared with their own product pages. Some of these lines go against us.
Without store_id or postal_code, prices are carrefour.fr's national online catalogue. With one, prices and the assortment are that drive or pickup store's (Nutella 400 g: 3.65 vs 4.25 EUR). Every priced response echoes store.
price (one unit, as the page shows it) · was_price (crossed out) · loyalty_offers / loyalty_price (credited to the Carrefour card after purchase) · multibuy_offers (several units together).
Rows carry other_offers_count and lowest_offer_price. carrefour.fr's price sorts order by that lowest offer, so a row's own price can look out of order; product/offers lists every offer with shipping and total.
carrefour.fr computes the price per kg or litre on the regular price and publishes no promotional unit price. unit_price is returned as published, with unit_price_basis 'regular_price' while a struck price runs.
21 of 315 search rows carried a Nutri-Score; none of the 14 products in the page check did. Ingredients were present on all 7 food, drink, hygiene and cleaning products checked, a nutrition table on only 2 of them (milk, Nutella).
carrefour.fr offers no star filter or rating sort for marketplace seller reviews; seller/reviews returns them newest or oldest first. Product reviews do filter by star and sort by rating.
25 real and 7 misspelt queries kept their pages (5 corrected by the site, with did_you_mean); 10 nonsense queries came back empty, or corrected to a real word whose products carry it. Keywords that open a category are followed and flagged.
8 products: title, price, struck price, availability, rating and GTIN matched the rendered page with 0 mismatches. Title, brand, price, images, breadcrumb and offers were present on 14 of 14 products.
carrefour.fr. Carrefour's other countries are separate websites; CarrefourSA (Turkey) is a separate API.
What people build with Carrefour France
The jobs this data is most often used for.
endpoints
credits per call
Grocery price trackers follow a basket across French drive stores, with struck prices, loyalty-card credits and multi-buy offers each in its own field.
Marketplace sellers see every competing offer on an EAN at Carrefour, with shipping, delivery time and seller rating, and the cheapest delivered total.
Nutrition and catalog teams pull ingredients, nutrition per 100 g, Nutri-Score, characteristics and images for products matched by EAN.
Promotion analysts read the promotions hub and the price per kg or litre, sorted the way carrefour.fr sorts them.
What Carrefour France data costs
The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.
Full pricing →- 1,000 free credits on signup, no card
- One key, all 256 APIs, one credit pool
- Failed and blocked calls are never charged
- Credits roll over and never expire
Call it in two lines
Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.
curl -X POST https://api.reefapi.com/carrefour-fr/v1/search \
-H "x-api-key: $REEF_KEY" \
-H "content-type: application/json" \
-d '{"query":"lait"}'import requests
r = requests.post(
"https://api.reefapi.com/carrefour-fr/v1/search",
headers={"x-api-key": REEF_KEY},
json={
"query": "lait"
},
)
print(r.json()["data"])Have a question? We got answers.
The questions people actually ask before wiring up Carrefour France.
Get a free key →Why do prices differ from what I see on carrefour.fr?▾
Because carrefour.fr prices groceries per store. Without a store, the API returns the national online catalogue (store.is_default true). Pass store_id (from the stores action) or a French postal_code to get the prices and the assortment of that drive or pickup store; the response's store object says which store was used. On 2026-09-16 a 400 g Nutella was 3.65 EUR in the default catalogue and 4.25 EUR at a Lyon drive store, and only 18 of the 30 default search rows existed there.
Which price does a row carry?▾
price is the price of one unit as the page shows it, promotions that lower the shelf price included; was_price is the crossed-out price and discount_percent the difference. Loyalty-card offers ("20% d'économies", "-15% Mardi PASS", "-10% Club") are credited to the card after purchase, so they are returned in loyalty_offers, and price stays the page price. Each loyalty offer says how many units it needs (min_quantity). loyalty_price is the price of one unit after the card credit, and only single-unit offers feed it. An offer such as "2 acheté(s) = 20% d'économies" returns the two-unit total before and after the credit (lot_price, lot_price_after_credit). For "Dès 2 produits = 70% d'économies" carrefour.fr publishes no amount that matches its label, so the API returns the label, the quantity and the percentage with card_credit null rather than a guessed figure. Offers like "Le 2ème à -50%" are in multibuy_offers with the quantity and the total.
Is a search result the cheapest offer?▾
Not always. A row is the product's buy-box offer (Carrefour or a marketplace seller) and carries other_offers_count, other_offers_lowest_price and lowest_offer_price. carrefour.fr's price sorts order products by that lowest offer, so a row's own price can look out of order. product/offers returns every offer with shipping cost, delivery time and total price, cheapest first.
What does shipping look like for marketplace sellers?▾
Each marketplace offer returns shipping_cost, free_shipping, free_shipping_minimum and the delivery time in days, following the rule carrefour.fr applies on its product page (free when the seller offers it, when the order reaches the seller's minimum, or when the seller publishes no delivery charge). total_price is price plus shipping. Carrefour's own offers do not publish a per-offer shipping cost; product/detail returns the site's delivery information text instead.
What happens with a misspelt or unknown keyword?▾
Misspellings the site understands keep their results and return did_you_mean (chocolt → chocolat). For a keyword it cannot match, carrefour.fr fills the page with loosely related products; the API returns an empty list, counts those rows in fallback_results_dropped, and include_fallback_results returns them apart. Some keywords open a category instead (jouet → the toys category); the API follows it and says so in redirect_type. On 2026-09-16, 25 real and 7 misspelt French queries kept their results and 10 nonsense queries came back empty or honestly corrected.
Does it include nutrition and ingredients?▾
When the product page has them: composition returns the ingredients and the nutrition table per 100 g, information returns storage and usage text, and nutriscore the grade. carrefour.fr publishes a Nutri-Score on few products (21 of 315 search rows in our sample), so nutriscore is often null.
Can I look up marketplace sellers?▾
Yes. Every marketplace offer returns seller.id. seller/profile returns the seller's page: description, return policy, delivery zone and times, rating, and the legal notice carrefour.fr publishes (company name, registration and VAT numbers, address). seller/products lists everything the seller sells with the search filters, and seller/reviews returns buyer reviews newest or oldest first. carrefour.fr offers no star filter for seller reviews.
Which countries are covered?▾
France (carrefour.fr) only. Carrefour's shops in Spain, Italy, Belgium, Poland, Brazil and elsewhere are separate websites with their own catalogues. Carrefour Turkey (CarrefourSA) is a different company with its own API on ReefAPI.
What is the Carrefour France API?▾
Carrefour France API is a ReefAPI endpoint group for carrefour.fr groceries and marketplace: store prices, struck and loyalty prices, every seller's offer, nutrition and reviews. It returns live JSON through POST requests under /carrefour-fr/v1.
Is the Carrefour France API free to try?▾
Yes. ReefAPI starts with 1,000 free credits, no card required. Carrefour France calls use the same shared credit balance as every other ReefAPI engine.
Do I need a Carrefour France login or account?▾
No login to Carrefour France is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.
How fresh is the Carrefour France data?▾
The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.
How many credits does the Carrefour France API use?▾
Carrefour France actions currently cost 1-2 credits per successful call. Failed or blocked calls are free. All APIs draw from one credit pool.
Can I call Carrefour France from an AI assistant or MCP client?▾
Yes. Connect ReefAPI once through MCP and your assistant can call carrefour-fr actions with the same key, credit pool and JSON envelope used by normal REST requests.
94 E-commerce & Marketplaces APIs on the same key
One key, one credit pool, one response envelope. If you are pulling Carrefour France, you are one call away from the rest of the category — no second contract, no second integration.
Need something this API does not do?
Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.
Try it on your own data before you pay anything
The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 255 APIs, and the same envelope everywhere.
Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-16.