Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the CarrefourSA API page →
E-commerce & Marketplaces

CarrefourSA API & Scraper

The CarrefourSA API turns carrefoursa.com, the online grocery of Turkey's CarrefourSA hypermarket chain, into clean JSON in four actions: search, product/detail, product/reviews and search/suggest.

4 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The most important thing it does is keep two prices apart. On carrefoursa.com every struck-through discount is a CarrefourSA Kart member-card price: on 2026-09-15, 71 of 71 discounted products across six storefront searches carried the "CarrefourSA Kart ile" badge. So price is what a shopper without the card pays, and member_price is the card price. When a card price only applies above a basket total, such as "100 TL ve Üzeri %40", member_price_condition says so. Rows also carry the unit price per kg, litre or piece, whether the product is sold by weight, stock status, multi-buy campaigns such as "3 Al 2 Öde" with their start and end dates, brand and category path. search browses a category too, filters by brand, price band and in-stock, and lists the filters available. product/detail adds every image, the barcode, the package size, the label sheet (ingredients, allergens, origin, storage, food business operator) and the nutrition table. Verification on 2026-09-15: 20 of 20 searches and 30 of 30 product reads succeeded, 29 of 29 controlled cases passed, 57 of 57 search rows and 9 of 9 product records matched an independent read of the storefront on title, regular price, card price and availability, and search rows agreed with product records on 30 of 30 products. Prices are TRY. No CarrefourSA account needed - one ReefAPI key and the standard { ok, data, meta, error } envelope.

Reference

On CarrefourSA, the discounted price is the CarrefourSA Kart price

This is the one thing to know before you build a Turkish grocery price tracker on CarrefourSA. The struck-through price is what a shopper without the loyalty card pays; the lower price is the card price. The API returns both and never merges them. Measured against the storefront on 2026-09-15.

CarrefourSA productprice (no card)member_price (CarrefourSA Kart)What else to know
Ekici Hellim Peynir 225 g294.90 TRY219.00 TRYCard-only discount
Dalin Şampuan Klasik 700 ml279.95 TRY159.95 TRYCard-only discount
Gliss Oil Nutritive Şampuan 400 ml209.90 TRY125.94 TRYmember_price_condition: 100 TL ve Üzeri %40
Ekici Tel Peynir kg1,090.00 TRY per kg899.95 TRY per kgsold_by weight
Bahçıvan Süzme Peynir 800 g399.90 TRYnull - no card priceOne price for everyone

member_discount_percent is CarrefourSA's own figure. Unit prices come in two versions on the same basis: unit_price on the regular price and member_unit_price on the card price. A multi-buy campaign such as "CarrefourSA Kart ile 3 Al 2 Öde" changes no price field. It comes back in promotions and multi_buy_offer with its start and end dates.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/carrefoursa/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "peynir"
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "carrefoursa",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1333.4,
    "record_count": 20,
    "bytes": 101298,
    "cache_hit": false,
    "pagination": {
      "page": 1,
      "page_size": 20,
      "has_more": true,
      "total": 406
    }
  },
  "data": {
    "results": [
      {
        "position": 1,
        "product_id": "30230758",
        "title": "Ekici Tel Peynir kg",
        "brand": {
          "id": "BRN-1675",
          "name": "EKİCİ",
          "url": null
        },
        "category": {
          "id": "1342",
          "name": "Yöresel Peynir",
          "url": null
        },
        "category_path": [
          "Süt Ürünleri",
          "Peynir",
          "Yöresel Peynir"
        ],
        "url": "https://www.carrefoursa.com/ekici-tel-peynir-kg-p-30230758",
        "image": "https://images.csfour.com/mnresize/600/600/productimage/30230758/30230758_0_MC/8811432542258_1591793758125.jpg",
        "price": 1090,
        "price_display": "1.090,00 TL",
        "currency": "TRY",
        "original_price": null,
        "discount_percent": null,
        "member_price": 899.95,
        "member_price_display": "899,95 TL",
        "member_discount_percent": 17,
        "member_program": "CarrefourSA Kart",
        "member_price_condition": null,
        "unit_price": 1090,
        "unit_price_unit": "kg",
        "member_unit_price": 899.95,
        "unit_price_basis": "sold_by_weight",
        "sold_by": "weight",
        "price_per": "kg",
        "availability": "in_stock",
        "in_stock": true,
        "stock_level": null,
        "limited_stock": false,
        "min_order_quantity": 0.25,
        "max_order_quantity": 3,
        "order_step": 0.25,
        "badges": [
          {
            "type": "[trimmed-depth]",
            "text": "[trimmed-depth]"
          }
        ],
        "promotions": [],
        "multi_buy_offer": null,
        "special_today": false,
        "search_index_rating": null,
        "search_index_review_count": null
      },
      {
        "position": 2,
        "product_id": "30278915",
        "title": "Torku Beyaz Peynir 900g",
        "brand": {
          "id": "BRN-3103",
          "name": "TORKU",
          "url": null
        },
        "category": {
          "id": "1319",
          "name": "[redacted-name]",
          "url": null
        },
        "category_path": [
          "Süt Ürünleri",
          "Peynir",
          "Beyaz Peynir"
        ],
        "url": "https://www.carrefoursa.com/torku-beyaz-peynir-900g-p-30278915",
        "image": "https://images.csfour.com/mnresize/600/600/productimage/30278915/30278915_0_MC/8838995181618_1789479011374.jpg",
        "price": 364.9,
        "price_display": "364,90 TL",
        "currency": "TRY",
        "original_price": null,
        "discount_percent": null,
        "member_price": null,
        "member_price_display": null,
        "member_discount_percent": null,
        "member_program": null,
        "member_price_condition": null,
        "unit_price": null,
        "unit_price_unit": null,
        "member_unit_price": null,
        "unit_price_basis": null,
        "sold_by": "piece",
        "price_per": "piece",
        "availability": "in_stock",
        "in_stock": true,
        "stock_level": 11,
        "limited_stock": false,
        "min_order_quantity": 1,
        "max_order_quantity": 15,
        "order_step": 1,
        "badges": [],
        "promotions": [],
        "multi_buy_offer": null,
        "special_today": false,
        "search_index_rating": null,
        "search_index_review_count": null
      },
      {
        "position": 3,
        "product_id": "30370012",
        "title": "Ekici Süzme Peynir 400 g",
        "brand": {
          "id": "BRN-1675",
          "name": "EKİCİ",
          "url": null
        },
        "category": {
          "id": "2501",
          "name": "Süzme Peynir",
          "url": null
        },
        "category_path": [
          "Süt Ürünleri",
          "Peynir",
          "Süzme Peynir"
        ],
        "url": "https://www.carrefoursa.com/ekici-suzme-peynir-400-g-p-30370012",
        "image": "https://images.csfour.com/mnresize/600/600/productimage/30370012/30370012_0_MC/8838404669490_1640154553261.jpg",
        "price": 275.9,
        "price_display": "275,90 TL",
        "currency": "TRY",
        "original_price": null,
        "discount_percent": null,
        "member_price": 137.95,
        "member_price_display": "137,95 TL",
        "member_discount_percent": 50,
        "member_program": "CarrefourSA Kart",
        "member_price_condition": null,
        "unit_price": null,
        "unit_price_unit": null,
        "member_unit_price": null,
        "unit_price_basis": null,
        "sold_by": "piece",
        "price_per": "piece",
        "availability": "in_stock",
        "in_stock": true,
        "stock_level": 107,
        "limited_stock": false,
        "min_order_quantity": 1,
        "max_order_quantity": 10,
        "order_step": 1,
        "badges": [
          {
            "type": "[trimmed-depth]",
            "text": "[trimmed-depth]"
          }
        ],
        "promotions": [],
        "multi_buy_offer": null,
        "special_today": false,
        "search_index_rating": null,
        "search_index_review_count": null
      }
    ],
    "count": 20,
    "page": 1,
    "page_size": 20,
    "total_results": 406,
    "total_pages": 21,
    "has_more": true,
    "sort_applied": "relevance",
    "keyword_redirect": {
      "type": "category",
      "id": "1318",
      "url": "https://www.carrefoursa.com/peynir/c/1318"
    },
    "applied_filters": [],
    "duplicates_dropped": 0,
    "filters_available": {
      "categories": [
        {
          "id": "1342",
          "name": "Yöresel Peynir",
          "count": 125
        },
        {
          "id": "1330",
          "name": "İthal Peynir",
          "count": 76
        },
        {
          "id": "1324",
          "name": "Kaşar Peynir",
          "count": 50
        }
      ],
      "top_categories": [
        {
          "id": "1310",
          "name": "Süt Ürünleri",
          "count": 385
        },
        {
          "id": "1493",
          "name": "Atıştırmalık",
          "count": 15
        },
        {
          "id": "1064",
          "name": "Hazır Yemek&Donuk Ürünler",
          "count": 2
        }
      ],
      "brands": [
        {
          "id": "BRN-1029",
          "name": "AK-DU",
          "count": 1
        },
        {
          "id": "BRN-8103",
          "name": "ALCATRA",
          "count": 3
        },
        {
          "id": "BRN-5672",
          "name": "ANTREGOURMET",
          "count": 9
        }
      ],
      "price_bands": [
        {
          "label": "0 TL - 49,99 TL",
          "count": 9
        },
        {
          "label": "50 TL - 199,99 TL",
          "count": 106
        },
        {
          "label": "200 TL - 499,99 TL",
          "count": 170
        }
      ],
      "package_sizes": [
        {
          "id": "1.000G",
          "name": "1.000G",
          "count": 119
        },
        {
          "id": "200G",
          "name": "200G",
          "count": 40
        },
        {
          "id": "500G",
          "name": "500G",
          "count": 25
        }
      ],
      "in_stock_count": 319,
      "out_of_stock_count": 87
    },
    "query": "peynir",
    "category": null
  }
}
Actions

What the CarrefourSA API does

ActionDescriptionConcrete use caseKey params
searchSearch carrefoursa.com by keyword, or browse a category, and get one row per product: the regular price and, separately, the CarrefourSA Kart member price when one runs, unit price for weight-sold and multi-pack products, stock status with unit count, multi-buy and basket campaigns with their dates, brand and category path. Filter by brand, price band and in-stock, sort the way the site does, page through the results. The response also lists the categories, brands, price bands and package sizes available for the query.Pricing teams call search to search carrefoursa.com by keyword, or browse a category, and get one row per product.query, category, page, page_size, sort, ...
product/detailThe full CarrefourSA product record by product code or URL: title, brand, category path, every image, barcode, the regular price and the CarrefourSA Kart price kept apart (with the minimum basket when the card price needs one), unit price, package size, availability and order limits, multi-buy and basket campaigns with dates, the label sheet (ingredients, allergens, origin, storage, food business operator) and the nutrition table, the description and rating.Marketplace operators call product/detail to get the full CarrefourSA product record by product code or URL.product_id, max_rotations
product/reviewsWritten customer reviews of one CarrefourSA product, newest first: star rating (1-5), headline, review text and date. Most products have none; reviewer names are never returned.Catalog enrichment teams call product/reviews to get written customer reviews of one CarrefourSA product, newest first.product_id, limit, max_rotations
search/suggestCarrefourSA's own search-box suggestions for what a shopper has typed so far.Retail analysts call search/suggest to get carrefourSA's own search-box suggestions for what a shopper has typed so far..query, max_rotations
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/carrefoursa/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"peynir"}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.carrefoursa.search with {"query":"peynir"}.
Use cases

Who uses this API and why

  • Turkish grocery price trackers record the regular price and the CarrefourSA Kart price separately, so a card discount is never stored as the shelf price.
  • FMCG brands monitor card discounts, basket-threshold campaigns and multi-buy offers on their products across CarrefourSA categories.
  • Retail analysts compare per-kg and per-litre prices like for like, with and without the card, against other Turkish grocers.
  • Catalogue teams match products by barcode and pull ingredients, allergens, origin and nutrition tables from the label sheet.
FAQ

Questions developers ask before integrating

Which price should I store - price or member_price?

Store both, and label them. price is what a shopper without a CarrefourSA Kart pays; member_price is the card price and is null when there is none. On 2026-09-15, 13 of 30 sampled products had a card price. No discount without the card was seen on the site that day, so original_price and discount_percent are null.

How do I know the discount is card-only?

Because the storefront labels it. Across six searches on 2026-09-15, 71 of 71 products with a struck-through price carried the "CarrefourSA Kart ile" badge, and none without one did. In the verification run, the 20 products the API returned with a member_price all carried the badge on the storefront.

What does member_price_condition mean?

Some card prices only apply above a basket total. Gliss Oil Nutritive Şampuan 400 ml was 209.90 TRY, or 125.94 TRY with the card, under the campaign "100 TL ve Üzeri %40" - a basket of 100 TL or more. That text is returned in member_price_condition. It is null when the card price has no condition.

How are multi-buy offers like 3 Al 2 Öde returned?

As campaigns, never as a price. "CarrefourSA Kart ile 3 Al 2 Öde" on Bahçıvan Taze Kaşar Peyniri 400 g left price and member_price unchanged; the offer comes back in promotions with kind multi_buy, card_required true and its dates (2026-09-14 to 2026-09-20), and in multi_buy_offer.

Which products are priced per kg?

Deli and fresh products sold by weight. sold_by reads weight and price_per reads kg, and the minimum and step quantities are in kg (0.25). For packaged products, unit_price is calculated from the package size on the product record: Ulus Klasik Beyaz Peynir 350 g at 254.90 TRY is 728.29 TRY per kg, or 568.57 with the card.

Do filters and sorting really apply?

Yes, measured on 2026-09-15 for peynir: 402 results unfiltered, 20 for one brand, 12 for another, 32 for both together, 314 in stock (CarrefourSA's own in-stock count) and 104 in the 50-199,99 TL band (CarrefourSA's own band count - bands follow the regular price). A category code browses that category: 45 products in Beyaz Peynir, every row in it. Price sorts follow the displayed price and came back in order.

What happens when a keyword has no match?

You get an honest empty list. All 8 nonsense queries tested returned zero results, while 20 of 20 real queries returned products, including misspellings such as peynr and deterjn. When CarrefourSA would send a keyword to a category page - süt goes to the milk category - the response names that page in keyword_redirect and still returns the keyword's own matches.

What does CarrefourSA NOT publish?

Prices for a specific store: CarrefourSA says prices and campaigns vary by store location, and the API returns the default online store's prices (price_scope_note repeats the site's sentence). A stock count for weight-sold products. Variants - none were seen. Ratings are rare: 1 of 30 sampled products was rated, and product/reviews returns an empty list for most products. Label sheets and nutrition tables come on food products; electronics, baby, personal care and cleaning products had none.

What is the CarrefourSA API?

CarrefourSA API is a ReefAPI endpoint group for turkish online grocery: regular and carrefoursa kart prices kept apart, unit prices, label sheets. It returns live JSON through POST requests under /carrefoursa/v1.

Is the CarrefourSA API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. CarrefourSA calls use the same shared credit balance as every other ReefAPI engine.

Do I need a CarrefourSA login or account?

No login to CarrefourSA 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 CarrefourSA 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 CarrefourSA API use?

CarrefourSA actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call CarrefourSA from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call carrefoursa actions with the same key, credit pool and JSON envelope used by normal REST requests.

docs / carrefoursa

CarrefourSA

Turkish online grocery: regular and CarrefourSA Kart prices kept apart, unit prices, label sheets.

base /carrefoursa/v14 endpoints
post/carrefoursa/v1/product/detail1 credit

The full CarrefourSA product record by product code or URL: title, brand, category path, every image, barcode, the regular price and the CarrefourSA Kart price kept apart (with the minimum basket when the card price needs one), unit price, package size, availability and order limits, multi-buy and basket campaigns with dates, the label sheet (ingredients, allergens, origin, storage, food business operator) and the nutrition table, the description and rating.

ParameterAllowed / rangeDescription
product_idrequiredCarrefourSA product code — the number every search row returns as `product_id` (30500720) — or a carrefoursa.com product URL.
max_rotations = 4optional1–8Advanced: how many times to retry a difficult request (1-8, default 4).
Try in playground →
post/carrefoursa/v1/product/reviews1 credit

Written customer reviews of one CarrefourSA product, newest first: star rating (1-5), headline, review text and date. Most products have none; reviewer names are never returned.

ParameterAllowed / rangeDescription
product_idrequiredCarrefourSA product code — the number every search row returns as `product_id` (30500720) — or a carrefoursa.com product URL.
limit = 20optional1–100How many reviews to return, newest first (1-100, default 20).
max_rotations = 4optional1–8Advanced: how many times to retry a difficult request (1-8, default 4).
Try in playground →
post/carrefoursa/v1/search/suggest1 credit

CarrefourSA's own search-box suggestions for what a shopper has typed so far.

ParameterAllowed / rangeDescription
queryrequiredWhat the shopper has typed so far (at least 2 characters).
max_rotations = 4optional1–8Advanced: how many times to retry a difficult request (1-8, default 4).
Try in playground →