Carrefour Spain Scraper — Grocery Prices & EAN Data avatar

Carrefour Spain Scraper — Grocery Prices & EAN Data

Pricing

from $1.20 / 1,000 result scrapeds

Go to Apify Store
Carrefour Spain Scraper — Grocery Prices & EAN Data

Carrefour Spain Scraper — Grocery Prices & EAN Data

Scrape products, prices, unit prices, EAN barcodes, and images from carrefour.es, Carrefour's Spanish grocery storefront. Search any grocery keyword and export clean structured supermarket data.

Pricing

from $1.20 / 1,000 result scrapeds

Rating

0.0

(0)

Developer

Studio Amba

Studio Amba

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

19 hours ago

Last modified

Categories

Share

Scrape grocery products, prices, unit prices, and EAN barcodes from carrefour.es, Carrefour's Spanish supermarket storefront. Search any grocery keyword and export clean, structured data.

Why use this actor?

Carrefour is one of the biggest grocery chains in Spain, and its prices, promotions, and product catalogue are valuable for price monitoring, competitor benchmarking, product matching, and market research. This actor turns a grocery keyword into a structured dataset you can drop straight into a spreadsheet, database, or price-comparison pipeline.

How to scrape Carrefour Spain data

  1. Enter a search query in Spanish (for example leche, pan, cafe, or huevos).
  2. Set Max Results to how many products you want.
  3. Provide a Bright Data API key (see "Anti-bot" below).
  4. Run the actor. Results stream into the dataset and can be exported as JSON, CSV, Excel, or via the API.

Optionally enable Fetch product details to visit each product page and confirm the brand, EAN, rating, review count, and full description from structured data. This is slower and more expensive because it makes one extra request per product.

About the search field

carrefour.es has no working free-text search page of its own — its search box is a client-side widget with no public results URL (confirmed live, see Limitations). So Search Query is matched against carrefour.es's own category list, and the best-matching category is scraped. leche resolves to the "Leche" category, pan to bread, and so on. If you already know the exact category you want, pass its URL directly in Category URL instead (e.g. https://www.carrefour.es/supermercado/la-despensa/lacteos/leche/cat20093/c) — that always wins over Search Query.

Input

FieldTypeRequiredDescription
searchQueryStringNoSpanish grocery keyword, matched to the closest carrefour.es category (default: leche)
categoryUrlStringNoExact carrefour.es category URL — overrides searchQuery when set
maxResultsIntegerNoMaximum products to return, 1–10000 (default: 100)
fetchDetailsBooleanNoVisit each product page for a confirmed brand/EAN/rating/description (default: false)
brightDataApiKeyStringYesBright Data Web Unlocker API key (or set BRIGHT_DATA_API_KEY env var)
proxyConfigurationObjectNoKept for schema compatibility; fetching is handled by Bright Data

Output

Each result contains:

FieldTypeExampleCoverage
productNameString"Leche entera Pascual brik 1 l."100%
brandString"PASCUAL"~85–90% from the listing tile; 100% with Fetch product details
priceNumber1.29100%
currencyString"EUR"100%
unitPriceString"1,29 €"100%
originalPriceNumber1.43 (only when on promotion)
discountString"-10%" (only when on promotion)
categoryString"Leche"100%
productIdString"8410128010096"100%
eanString"8410128010096"~10–15% from the listing tile; 100% with Fetch product details
inStockBooleantrue100% (never guessed — see Limitations)
ratingNumber4.630% from the listing (carrefour.es never shows it there); populated with Fetch product details
reviewCountInteger22Only with Fetch product details
imageUrlStringPrimary product image URL100%
productDescriptionStringFull descriptionOnly with Fetch product details
urlStringFull product page URL100%
scrapedAtStringISO 8601 timestamp100%

Example output

{
"productName": "Leche entera Pascual brik 1 l.",
"price": 1.29,
"currency": "EUR",
"unitPrice": "1,29 €",
"originalPrice": 1.43,
"discount": "-10%",
"category": "Leche",
"productId": "8410128010096",
"ean": "8410128010096",
"inStock": true,
"imageUrl": "https://static.carrefour.es/hd_350x_/img_pim_food/003629_00_1.jpg",
"url": "https://www.carrefour.es/supermercado/leche-entera-pascual-brik-1-l/R-521006986/p",
"scrapedAt": "2026-08-27T09:43:52.807Z"
}

With fetchDetails: true, the same product also carries a confirmed brand, rating, reviewCount, and productDescription:

{
"productName": "Leche semidesnatada Carrefour pack de 9 briks de 1 l.",
"brand": "CARREFOUR",
"price": 7.65,
"currency": "EUR",
"unitPrice": "0,85 €",
"category": "Leche",
"productId": "VC4AECOMM-481229",
"ean": "8431876357585",
"inStock": true,
"rating": 5,
"reviewCount": 10,
"imageUrl": "https://static.carrefour.es/hd_350x_/img_pim_food/481229_00_1.jpg",
"productDescription": "Comprar Leche semidesnatada Carrefour pack de 9 briks de 1 l. Descubre las mejores ofertas del supermercado online Carrefour ¡15€ de descuento en tu primera compra online!",
"url": "https://www.carrefour.es/supermercado/leche-semidesnatada-carrefour-pack-de-9-briks-de-1-l/R-VC4AECOMM-481229/p",
"scrapedAt": "2026-08-27T09:36:45.201Z"
}

Anti-bot: Bright Data Web Unlocker required

carrefour.es is protected by Cloudflare Bot Management. Plain HTTP requests receive a 403 and a __cf_bm cookie instead of the real content. To fetch pages reliably, this actor uses the Bright Data Web Unlocker (zone web_unlocker1).

You need a Bright Data account with a Web Unlocker zone. Provide the API key either:

  • in the input field Bright Data API Key, or
  • as the environment variable BRIGHT_DATA_API_KEY.

Bright Data bills per request. carrefour.es's listing pages only server-render about 8 real products per request (the rest are placeholders that need client-side scrolling — see Limitations), so the anti-bot cost per product is still low: roughly one request per 8 products in the default mode.

Cost estimate

  • Listing only (default): roughly one Bright Data request (~$0.0015) per 8 products, plus Apify compute — around $0.0002 in Bright Data cost per product. Scraping 100 products is about 13 page requests.
  • With Fetch product details: one extra request per product, so a 100-product run costs roughly 13 + 100 = 113 requests. Only enable it when you need a confirmed brand, EAN, rating, or description on every row.

A run's usage cost only settles after it reaches the SUCCEEDED state — a run you abort partway through is billed for what it already used, not a flat per-item rate.

How search and pagination work

carrefour.es doesn't expose a working free-text search results page (its search box is a client-side widget with no public JSON API, and the classic ?q= query route returns a genuine server error, not a Cloudflare block). So Search Query is matched against a snapshot of carrefour.es's own category list to find the closest category, which is then scraped directly. Within that category, carrefour.es paginates via an offset step; the actor keeps requesting further offsets until it reaches Max Results or runs out of products.

For long runs with Fetch product details enabled, the actor persists its progress (the offset cursor and every product URL already seen). If Apify migrates the run to another host, it resumes where it left off instead of restarting, so you never get duplicate rows or a half-finished catalogue.

Limitations

  • No free-text search. searchQuery picks the closest matching category rather than running a live keyword search — for full control, pass an exact categoryUrl instead.
  • brand and ean are inconsistently exposed on the listing. carrefour.es's own listing tiles carry these attributes for some products and not others (confirmed live — not a scraper bug, the site's own markup). Enable Fetch product details for a confirmed value on every row.
  • rating/reviewCount/productDescription only exist on the product detail page, never on the listing — they require Fetch product details.
  • inStock is only ever true (an active "add to cart" control) or false (an explicit "Agotado"/sold-out marker) — never guessed when genuinely unclear.
  • Prices reflect the national online catalogue and may differ from a specific physical store.
  • Data is scraped from the public website and may change without notice.
  • Respect the website's terms of service and use responsibly.

Build a complete view of Spanish and European grocery retail with these sibling scrapers from Studio AMBA:

Need this data on a schedule, or a custom version?

We run this scraper as a managed service for businesses: scheduled runs, deduplication, delta detection, and delivery to your inbox, Google Sheets, or API — maintenance included. We can also build a custom version with your exact fields and filters, or combine multiple sources into one feed.

See studioamba.dev/services or email hello@studioamba.dev for a free data sample. We maintain 300+ European web scrapers and answer within one business day.