Carrefour Spain Scraper at a glance
Carrefour Spain Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes name, change type (incremental mode), brand, price and was, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.00 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify.
- Runs on
- Apify cloud: console, API, schedules and integrations
- Data type
- Ecommerce, Automation, Developer Tools
- Region
- Europe
- Pricing
- $2.00 per 1,000 results (Free plan), from $1.50 on paid plans
- Output
- Documented below · JSON, CSV, Excel
- Inputs
- 34 options
Scrape Carrefour Spain (carrefour.es) products. Search by keyword, browse a category, or paste product/category links. Returns name, brand, price, unit price, promotion, stock, category, image, and, with details, the barcode (EAN), ingredients, allergens, nutrition, extra images and rating.
What Carrefour Spain Scraper can do
- Three ways to find products. Search by keyword, browse a category page, or paste product links, bare product ids and category links in one mixed list.
- Full product detail on demand. Add barcode (EAN), ingredients, allergens, the complete nutrition panel, extra images, the aggregate rating and up to 20 recent customer reviews per product (adjustable), or turn detail off for a lighter, listing-only run.
- Built-in filters and sorting. Price range, brand, minimum rating, promotion-only and in-stock-only, and eight sort orders (including top rated and promotions first), applied without writing any code.
- Built for schedules. Incremental mode returns only new and changed products on repeat runs against the same search, and unchanged products are never billed unless you explicitly ask for them.
- Resume without duplicate charges. Continue one interrupted run from its run or dataset id, or let the actor recover on its own after a platform restart, with no products re-collected or re-billed.
- Send results into your apps. Pipe a condensed summary of every product into Notion, Linear or Airtable through MCP connectors, no extra code required.
Choose what to collect
These inputs let you configure Carrefour Spain Scraper - Products, Prices, Nutrition. Open the actor on Apify to enter your values and review the current options.
| Input | What it controls |
|---|---|
modestring · required | Choose 'search' for keywords + filters, 'category' to browse a category by its Carrefour category link OR a plain category name (e.g. 'leche', 'Vinos'), or 'url' to scrape pasted Carrefour Spain links, product links, bare product ids, category links, promotions links and search-result links are all accepted. 'product' is a legacy alias kept only so an old saved Task that already used it keeps working; new tasks should use 'url' instead. |
queriesarray | Only used when mode = search, ignored in every other mode. One or more keywords to search, for example 'leche' (milk) or 'cerveza' (beer). Each keyword is searched separately. |
categoriesarray | Only used when mode = category, ignored in every other mode. A category page link, OR a plain category name such as 'leche' or 'Vinos' (resolved against Carrefour Spain's own category names, an unmatched name is reported, never guessed; paste the category's own link if your name doesn't resolve). To get a link: open carrefour.es, browse to the category you want, and copy the address from your browser, a category address ends in /catNNNNN/c (or /F-/c for an "Ofertas" promotions category), for example https://www.carrefour.es/supermercado/lacteos-huevos/leche/cat20093/c |
urlsarray | Only used when mode = url, ignored in every other mode. Mix freely: product pages under /R-/p , marketplace / non-food product pages under ///p or //VC4A-/p , bare product ids such as 521007071 , category pages under /catNNNNN/c , "Ofertas" promotions categories under /F-/c , or a pasted search-result link (?q=... or #!q=...). Multiple entries supported. |
productsarray | Legacy alias, only used when mode = product, ignored in every other mode. Carrefour product page links (or bare product ids), for example https://www.carrefour.es/supermercado/leche-semidesnatada-la-cantara-brik-1-l/R-VC4AECOMM-700248/p . Multiple entries supported. New tasks should use 'url' mode + the 'urls' field instead; this field exists only so a Task saved before 2026-07-17 keeps validating and running. |
sortBystring | How to order the collected products. Price sorts on a keyword search are done by the store's own search, so the run stops as soon as it has enough; the other orderings are applied over the products gathered in the run before they are returned. 'Top rated first' and 'Promotions first' need product-page data (rating, promotion), so they order the products the run collects after reading their product pages, the cheapest Max products window, not the whole catalogue. |
minRatingstring | Optional. Only keep products whose average rating is at least this many stars. Requires details (ratings are collected during 'Fetch product details'). Products with no rating are excluded when this is set. |
Show 27 more inputs
| Input | What it controls |
|---|---|
onPromotionOnlyboolean | Optional. Keep only products currently on promotion, a cut price (was-price shown) or a multi-buy / basket promotion such as '3x2', 'Comprando 12' or '2ª unidad -50%'. Works in every mode. A keyword search does not carry promotion data, so its product pages are read to check (billed as detail-enriched for the products returned, even with 'Fetch product details' off). |
inStockOnlyboolean | Optional. Keep only products currently in stock. Works in every mode. A keyword search does not carry stock data, so its product pages are read to check (billed as detail-enriched for the products returned, even with 'Fetch product details' off). A product whose stock the store does not publish is kept, and counted in the run log. |
minPriceinteger | Optional. Only keep products priced at or above this amount. Narrows a keyword search (filtered by the store's own search, so fewer pages are read), a category, or a pasted category link, a pasted product link is always returned as asked for, regardless of this filter. |
maxPriceinteger | Optional. Only keep products priced at or below this amount. Narrows a keyword search (filtered by the store's own search, so fewer pages are read), a category, or a pasted category link, a pasted product link is always returned as asked for, regardless of this filter. |
brandsarray | Optional. Keep only products of these brands (e.g. 'Carrefour', 'Central Lechera Asturiana'; not case-sensitive, exact brand name). A keyword search is narrowed by the store's own search, so fewer pages are read; a category or pasted category link is narrowed on the listing. A pasted product link is always returned as asked for, regardless of this filter. |
fetchDetailsboolean | Collect each product's full detail (barcode / EAN, ingredients, allergens, nutrition panel, extra images, description, category path, origin, manufacturer, net content, storage and usage instructions, Nutri-Score, marketplace seller) plus its aggregate rating and customer reviews (see Max reviews per product), and, for keyword-search results, the promotion, was-price, unit price and stock that the search listing does not carry. Turn off for a faster, lighter run that returns only the listing-level fields (name, brand, price, unit price, image; plus promotion and stock in a category). |
maxReviewsinteger | With Fetch product details on, the most recent customer reviews collected for each product that has any (star rating, title, review text, date and the reviewer's public display name), nested in the product's reviews list, never as separate rows. Default 20; 0 skips review reads entirely. Products without reviews cost no extra request. Reviews are included in the per-product price with no separate review charge. |
maxItemsinteger | Maximum number of products to return across the whole run. This is the run's cap. Use 0 for unlimited. |
maxPagesinteger | Maximum result pages walked per keyword / category / link. 0 = unlimited (walk all pages), the run then stops only at Max products or when a page repeats no new products. |
resumeFromRunIdstring | Paste a previous run ID or dataset ID to continue a large crawl of products without returning or charging for products already collected there. Use this after an interrupted run, or when continuing a product catalogue pull in another run. For recurring daily monitoring of the same search, use Incremental mode below instead. |
incrementalModeboolean | Turn this on for daily or recurring monitoring. The first run returns all matching products as NEW. Later runs normally return only NEW, UPDATED, and REAPPEARED products. Turn on "Emit unchanged" or "Emit expired" only when you also want those products returned (and billed). State is kept separately for each search/category/URL and detail-mode setup; use State key when you want to name or deliberately share a monitoring campaign. To continue one specific interrupted run instead, use Resume from a previous run above. |
stateKeystring | Optional. Name this monitoring campaign to keep its state stable, or to deliberately share state across differently-configured runs. Leave empty to let the actor derive a key automatically from the search/category/URL and detail settings, different searches then never mix state with each other. |
emitUnchangedboolean | Off by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. This returns, and bills, extra rows you already have, so leave it off unless you specifically want the full snapshot every run. |
emitExpiredboolean | Off by default. Turn on to also return products that were present in a previous run but are no longer found, marked EXPIRED. Only produced once a run has fully scanned the tracked search, not when Max products capped it or when Resume was used. This returns, and bills, extra synthetic rows, so leave it off unless you need expiry tracking. |
ignoreFieldsForChangesarray | Optional. Field names to exclude from change detection in Incremental mode, those fields are still returned in every row, they just never cause a product to be classified UPDATED or appear in changedFields. Use a plain name for a top-level field (e.g. "stock"), "parent.child" for one field nested inside another (e.g. "offer.price"), "parent." for every field nested inside another, or "field[]" for a list field (e.g. "images[]"). Empty by default, nothing is excluded unless you add it here. (The nested reviews list is never compared: its length depends on Max reviews per product, so a new review shows up as a change in reviewCount / rating instead.) If you exclude stock-type fields, "inStock" (true/false) still changes on a real stock-out/restock, so you keep a stable signal for that. |
mcpConnectorsarray | Optionally send results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize one under Apify, Settings, API & Integrations, then select it here. Notion gets a rich page-per-item export; other connectors get a best-effort write/digest. Leave empty to skip; never changes the dataset output. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com). |
notionParentPageUrlstring | URL or id of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors. |
maxNotifyListingsinteger | Cap on items written to each connector per run. Does not affect the dataset. |
searchQuerystring | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'queries'. |
searchQueriesarray | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'queries'. |
categoryUrlstring | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'categories'. |
categoryUrlsarray | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'categories'. |
startUrlsarray | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'urls'. |
productUrlsarray | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'urls'. |
maxResultsinteger | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'maxItems'. |
maxResultsPerScrapeinteger | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'maxItems'. |
promotionsOnlyboolean | Alternative spelling accepted for compatibility with other Carrefour Spain scrapers; prefer 'onPromotionOnly'. |
Fields in the output
The documented dataset includes the fields below. Availability can depend on the source page and selected mode.
nameNamechangeTypeChange type (incremental mode) (text)brandBrandpricePriceregularPriceWasunitPriceUnit priceonPromotionPrice cut (boolean)promotionLabelPromotion (text)inStockIn stock (boolean)eanEANratingRatingreviewCountReviewsShow 49 more fields
categoryCategory (text)categoryIdCategory IDproductIdProduct IDimageImage (image)urlURL (link)changedFieldsChanged fields (incremental mode) (array)firstSeenAtFirst seen (incremental mode) (date)lastSeenAtLast seen (incremental mode) (date)skuSKUcurrencyCurrencyunitPriceMeasureUnit price measuremeasureUnitMeasure unitdiscountPercentageDiscount percentage (percentage)stockStock quantity (number)sellPackUnitSell pack unit (number)imagesAdditional images (array)ingredientsIngredients (textarea)allergensAllergens (array)nutritionNutrition information (object)manufacturerAddressOperator address (text)packagingFormatPackaging (text)healthRegistrationNumberHealth registration no. (text)alcoholByVolumeABV (% vol) (number)hasReviewsHas reviews (boolean)reviewsFetchedReviews returned (number)reviewsCustomer reviews (array)searchModeSearch mode usedsourceData sourcescrapedAtScraped at timestamp (datetime)offerOffer details (object)tastingNoteTasting note (wines) (array)wineInfoWine information (array)moreInfoAdditional information (array)promotionDescriptionPromotion details (textarea)breadcrumbsCategory path (array)descriptionDescription (textarea)packSizePack sizenetContentNet content (weight / volume)countryOfOriginCountry of originmanufacturerManufacturer / packerlegalNameLegal product namestorageInstructionsStorage instructions (textarea)usageInstructionsUsage instructions (textarea)nutriScoreNutri-ScoreclaimsProduct claims (e.g. Sin lactosa) (array)isMarketplaceSold by a marketplace seller (boolean)sellerNameMarketplace sellersellerIdMarketplace seller IDsellerRatingMarketplace seller rating (number)Example output
An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.
{
"productId": "520661336",
"name": "Leche semidesnatada marca ejemplo brik 1 L",
"brand": "Marca Ejemplo",
"ean": "8400000000000",
"sku": "1895370000",
"price": 0.99,
"regularPrice": 1.19,
"discountPercentage": 17,
"onPromotion": true,
"currency": "EUR",
"unitPrice": 0.99,
"unitPriceMeasure": "l",
"stock": 240,
"inStock": true,
"ingredients": "Leche de vaca semidesnatada.",
"allergens": [
"Leche"
],
"nutrition": {
"main_nutritional_values": [
{
"nombre": "Proteínas (g)",
"valor": "3 g"
}
]
},
"rating": 4.5,
"reviewCount": 12,
"reviewsFetched": 1,
"reviews": [
{
"reviewId": "example-review-1",
"rating": 5,
"title": "Muy buena",
"text": "Texto de ejemplo de una opinión.",
"date": "2026-01-01T10:00:00.000+01:00",
"reviewerName": "Cliente Ejemplo"
}
],
"image": "https://static.carrefour.es/example/000000.jpg",
"images": [
"https://static.carrefour.es/example/000000.jpg"
],
"url": "https://www.carrefour.es/supermercado/example/R-520661336/p",
"searchMode": "category",
"source": "category",
"scrapedAt": "2026-01-01T00:00:00Z"
}Ways to use this data
- Grocery price monitoring: track price, promotion and unit price changes across a shopping basket over time.
- Catalog and range research: build a structured view of Carrefour Spain's assortment by category for pricing or assortment analysis.
- Nutrition and ingredient research: collect ingredients, allergens and the full nutrition panel for dietary, labeling or compliance projects.
- Deal and promotion tracking: filter to promoted or in-stock products only, and get notified of new deals on a recurring schedule.
- Wine and specialty catalog research: pull tasting notes and wine-specific detail fields alongside standard product data.
Before you run
Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.
Questions about this actor
What data does Carrefour Spain Scraper return?
The documented output for Carrefour Spain Scraper includes name, change type (incremental mode), brand, price, was, unit price, price cut and promotion. Availability of each field depends on the source page and the selected mode.
How much does Carrefour Spain Scraper cost?
It costs $2.00 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.
Can I get only new or changed products on a schedule?
Yes. Schedule the actor from the Schedules tab and turn on Incremental mode. Each run then returns only new and updated products, and unchanged ones are not billed. Products only ever come back marked REAPPEARED if emitExpired was previously turned on and a full scan had already marked them EXPIRED; with emitExpired off, expect only NEW and UPDATED.
What's the difference between Resume and Incremental mode?
Resume (resumeFromRunId) continues one specific interrupted or earlier run, so you paste an id and get the remaining new products from that same crawl. Incremental mode is for scheduling the same search repeatedly and getting only what changed since last time, with the actor tracking state on its own. Use Resume for a one-off continuation; use Incremental mode for recurring monitoring.
Can I use it with AI agents or MCP?
Yes. Call it from any Apify integration or MCP client, and use the connector field to push results into Notion, Linear or Airtable.
