Extract structured data from carrefour.fr — carrefour.fr for Carrefour France products with current prices, availability, GTINs, categories, unit pricing, ingredients, ratings, product URLs and shopping-basket totals. Supports keyword search, category/rayon filters, product URLs and incremental monitoring.
Carrefour Product Scraper on Apify →
No credit card required. No commitment. Cancel anytime.
- Click sign up — pick GitHub, Google, or email; takes ~30 seconds
- Open this actor — input is pre-filled with a working example
- Click Start — export results as JSON, CSV, or Excel
Your $5 monthly platform credit is enough to run this actor right away — and again every month — scraping typically several hundred to several thousand results per run, depending on your input.
Search with filters — Search by keyword and location. Filter by 🌍 country,
Detail enrichment — Fetch full descriptions, structured metadata for each listing.
Incremental mode — Only get new or changed listings since your last run. Content hash per listing — no duplicates, no re-processing.
Change classification — Track unchanged, expired, cross-run repost detection across runs. Build audit trails of how listings evolve over time.
Compact output — Emit core fields only (AI-agent / MCP-friendly). Keeps response size small for LLM workflows.
Description truncation — Cap description length per listing to control output size and cost.
Result cap — Stop after N listings (up to 10.000). Set to 0 for the full catalog.
Export anywhere — Download as JSON, CSV, or Excel. Stream via Apify API, webhooks, or integrations with Make, Zapier, Airbyte, Keboola.
Structured data — Every listing returns the same schema with consistent field naming. All fields always present — null when unavailable, never omitted.
Data pipeline automation Integrate with your ETL pipeline to collect structured listings from carrefour.fr on a schedule. Export to CSV, JSON, or directly to your database. Use compact mode to control output size.
Market research Monitor listings, track trends, and analyze market dynamics with structured, deduplicated data from carrefour.fr.
Change monitoring Run daily or hourly in incremental mode to capture only new, updated, or expired listings. Perfect for price-tracking, churn analysis, and alerting pipelines.
AI / LLM training data Structured JSON per listing is ready for RAG pipelines, embeddings, and agent workflows. Compact mode trims tokens for LLM context windows.
{
"query": "lait",
"maxResults": 5,
"includeDetails": true
}| Parameter | Type | Default | Description |
|---|---|---|---|
productIds |
array | [] |
Track a specific shopping list by GTIN/barcode or Carrefour product ID. Product URLs are also accepted here. Pair with quantities to compute per-line basket totals. |
productUrls |
array | [] |
Carrefour product URLs to scrape directly, equivalent to the 123webdata productUrls input. |
categoryUrls |
array | [] |
Carrefour category/search URLs. URLs with q/query/search become keyword searches; URLs with rayonId/filter=rayonId use Carrefour category filtering. |
startUrls |
array | [] |
Paste Carrefour product, search or category URLs. Product URLs are scraped directly; search/category URLs build the matching query and supported Carrefour filters, including multi-select, range, delivery, category-path and boolean facets like filters[facet_promotions][0]=..., filters[facet_price][gte]=... and filters[product.categories...]=... |
query |
string | "" |
Product search keywords. Use a single term like "lait" or paste a JSON array such as ["lait","pâtes"]. Ignored when productIds/productUrls are supplied. |
categories |
array | [] |
Local category filter after fetch. Use terms such as "Surgelés", "Lait", or "Crèmerie". |
rayonIds |
array | [] |
Advanced Carrefour category IDs used as API filters, e.g. 29298 for a specific milk subcategory. |
quantities |
object,string | {} |
Optional per-product quantities. Accepts an object map like {"3176571983008": 2} or array pairs like [{"gtin":"3176571983008","qty":2}]. |
country |
enum | "FR" |
Carrefour market to scrape. This actor currently targets France. |
maxResults |
integer | 50 |
Maximum number of product rows to push. Use 0 only when you intentionally want all products for the selected query/category. |
maxResultsPerScrape |
integer | — | Compatibility alias for 123webdata/carrefour-scraper. If maxResults is not set, this value is used. |
usePagination |
boolean | true |
Whether to fetch additional pages after the first page for query/category runs. |
pageSize |
integer | 24 |
Products requested per page. |
priceMin |
number | — | Only emit products with price greater than or equal to this value. |
priceMax |
number | — | Only emit products with price less than or equal to this value. |
unitPriceMin |
number | — | Only emit products with per-unit price greater than or equal to this value. |
unitPriceMax |
number | — | Only emit products with per-unit price less than or equal to this value. |
inStockOnly |
boolean | false |
Drop products flagged as unavailable. |
ingredientFilter |
string | — | Case-insensitive substring filter on detailed ingredient text. Use a single term or JSON array of terms that all must match. |
sortBy |
enum | — | Optional ordering before maxResults is applied. |
includeDetails |
boolean | true |
Fetch detail fields such as description, ingredients, nutrition, allergens, rating, weight and contact attributes. Enabled by default to match product-page scrapers. |
compact |
boolean | false |
Keep only the core product, price, availability, basket and image fields. |
excludeEmptyFields |
boolean | false |
Drop null, empty-string and empty-array fields from each record before push. |
descriptionFormat |
enum | "all" |
Pick a single description representation. |
descriptionMaxLength |
integer | 0 |
Truncate product description text after this many characters. Use 0 for no truncation. |
incrementalMode |
boolean | false |
Compare against previous runs for the same scope and emit changeType for new, updated, unchanged or expired products. |
stateKey |
string | — | Optional stable ID for the tracked search/basket universe. Leave empty to auto-generate from search inputs. |
emitUnchanged |
boolean | false |
Include products with no detected change in incremental output. |
emitExpired |
boolean | false |
Include products that disappeared since the previous run for the same state key. |
skipReposts |
boolean | false |
When incremental mode is enabled, skip products whose content matches a prior expired row. |
notifyOnlyChanges |
boolean | false |
When incremental mode is enabled, only send notifications for changed products. |
notificationLimit |
integer | 5 |
Maximum number of products included in each notification message. |
telegramToken |
string | — | Telegram bot token from @BotFather. |
telegramChatId |
string | — | Telegram chat or channel ID. |
discordWebhookUrl |
string | — | Discord incoming webhook URL. |
slackWebhookUrl |
string | — | Slack incoming webhook URL. |
whatsappAccessToken |
string | — | WhatsApp Cloud API access token. |
whatsappPhoneNumberId |
string | — | WhatsApp Business phone-number ID. |
whatsappTo |
string | — | Recipient phone in E.164 format without +. |
webhookUrl |
string | — | Receives a JSON POST with {metadata, items} after each run. |
webhookHeaders |
object | — | Optional JSON object of custom headers. |
appConnector |
string | — | Optional. Pick a connected app under Settings -> API & Integrations to receive your results. Notion is supported today (a run-summary page); other MCP connectors are best-effort as Apify expands its catalog. |
mcpIssueTeam |
string | — | Only when the connected app is an issue tracker: the team (name or ID) the summary issue is created under, if that app requires one. |
Every listing returns the same 21-field schema. Missing values are null — never omitted.
urlnamebrandpricecurrencyunitPriceunitPriceUnitin_stockgtinskucategoryNamedescriptioningredientsnutriscorequantitylinePricerating_valuereview_countmain_imagescraped_atsource
One object per listing. Here is a real example from a production run:
{
"url": "https://www.carrefour.fr/p/lait-vitamine-viva-candia-3176571983008",
"name": "Lait Vitaminé Viva CANDIA",
"brand": "CANDIA",
"price": 1.15,
"currency": "EUR",
"unitPrice": 1.15,
"unitPriceUnit": "L",
"in_stock": true,
"gtin": "3176571983008",
"sku": "3176571983008",
"categoryName": "Lait demi-écrémé",
"description": "Comme le lait demi-écrémé, Viva vous accompagne dès le petit déjeuner ! Source de 12 vitamines, Viva est le lait de la vitalité* pour toute la famille. Il contient les vitamines B1…"
}Truncated — full records contain 21 fields. See Output fields for the complete schema.
Try Carrefour Product Scraper now — $5 free credit, no credit card →
Pay only for what you extract. No subscription required — Apify's free $5 credit covers thousands of results.
| Event | Price (USD) |
|---|---|
| Actor Start | $0.01 |
| Product | $0.002 |
See the actor on Apify for current pricing.
How do I scrape carrefour.fr? Use this actor on Apify to extract structured data from carrefour.fr. Configure your search query and filters in the input, then click Start — no coding required.
How do I get carrefour.fr data as JSON, CSV, or Excel? The actor writes each listing to Apify's dataset. Download as JSON, CSV, or Excel from the Console, stream via the API, or push to Make, Zapier, Airbyte, or Keboola.
Is it legal to scrape carrefour.fr? Web scraping of publicly available data is generally legal. This actor only accesses publicly visible information. Always check carrefour.fr's terms of service for your specific use case.
How much does it cost? Pay-per-event pricing — you only pay for listings extracted. Apify's free $5 credit is enough to run thousands of results before you pay anything.
How does incremental mode work? Each listing gets a content hash. On subsequent runs, only new or changed listings are emitted — saving time, compute, and storage. Expired listings can be tracked separately.
Do I need an API key or credentials? No. Just sign up for Apify, paste your input, and click Start. No credit card required.
- REMA 1000 Scraper — Danish grocery prices, offers and product data from REMA 1000
- Netto Scraper — Danish grocery offers and product data from Netto
- Lidl Scraper — Danish grocery offers and product data from Lidl
- Nemlig Scraper — Danish online grocery products, prices and availability from nemlig.com
- SuperBrugsen Scraper — Danish grocery products and leaflet offers from SuperBrugsen
- Coop365 Scraper — Danish grocery products and leaflet offers from Coop 365
Browse all Black Falcon Data actors →
New to Apify? Create a free account with $5 credit — no credit card required.
- Sign up — $5 platform credit included
- Open Carrefour Product Scraper and configure your input
- Click Start — export results as JSON, CSV, or Excel
Need more later? See Apify pricing.
Black Falcon Data builds production-grade web scrapers for job boards and marketplace data. Browse our full actor catalog at www.blackfalcondata.com.
Last updated: 2026 07