Carrefour.es Grocery Products, Prices & EAN Scraper
Pricing
from $1.50 / 1,000 product results
Carrefour.es Grocery Products, Prices & EAN Scraper
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.
Pricing
from $1.50 / 1,000 product results
Rating
0.0
(0)
Developer
Abot API
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Carrefour Spain Product Scraper
Scrape products from Carrefour Spain (carrefour.es) — the supermarket and
general‑retail catalog. Search by keyword, browse a category, fetch specific
products, or paste links. Every product comes back as one flat record with price,
unit price, promotion, stock and category; enable details to add the barcode
(EAN), ingredients, allergens, the full nutrition panel, extra images and the
product's aggregate rating.
What you can do
- Search by keyword — e.g.
leche(milk),cerveza(beer),pañales(diapers) — with price, promotion, stock and rating filters, plus sorting. - Browse a category — paste a Carrefour category page link and walk it across all its pages.
- Paste links or ids — mix product links, bare product ids and category links in one list and let the actor route each entry. Product links return full detail.
- Resume & recurring updates — turn on Incremental mode to get only NEW,
UPDATED, and REAPPEARED products on every scheduled run, or resume one
specific interrupted crawl with
resumeFromRunId.
Input
| Field | Description |
|---|---|
| Mode | search, category or url. |
| Search keywords | Keywords to search (search mode). Each is searched separately. |
| Category links | Carrefour category page links to browse (category mode). |
| Carrefour Spain links or product ids | Product links, bare product ids and category links to scrape directly, mixed freely (url mode). Product links return full detail. |
| Sort by | Relevance, price ↑/↓, unit price ↑/↓, or name. Applied over the collected products. |
| Minimum average rating | Keep only products rated at least N stars (needs details). |
| Only on promotion | Keep only products with a reduced price. |
| Only in stock | Keep only products currently in stock. |
| Min / Max price (EUR) | Keep only products within a price range. |
| Fetch product details | Add barcode, ingredients, allergens, nutrition, extra images and rating. On by default. |
| Max products | The run's cap on how many products to return. Default 20; 0 = unlimited. |
| Max pages per keyword / category | Result pages walked per keyword / category / link. Default 0 = unlimited — walks every page until Max products is hit or a page repeats no new products. |
| Resume from a previous run | Continue one specific previous run/dataset: products already collected there are skipped, so this run only appends new products. For recurring daily monitoring of the same search, use Incremental mode instead — see "Resume & recurring updates" below. |
| Incremental changes for scheduled runs | Daily/recurring monitoring of this same search. First run returns everything as NEW; later runs return only NEW/UPDATED/REAPPEARED by default. See "Resume & recurring updates" below. |
| State key | Optional name for a monitoring campaign, so its incremental state stays stable or is deliberately shared. Auto-derived from your search/detail settings when left empty. |
| Emit unchanged products | Incremental mode only. Also return products unchanged since the last run, marked UNCHANGED. Adds and bills extra rows you already have. |
| Emit expired products | Incremental mode only. Also return products from a previous run no longer found, marked EXPIRED, once a run has fully scanned the search (not capped, not a resume). Adds and bills extra synthetic rows. |
| Proxy | Apify Proxy — a Spanish residential exit by default (required, see below). |
mcpConnectors | Optional MCP connectors to export results into (Notion, Linear, Airtable, Apify). |
notionParentPageUrl | Notion connector only: page under which item pages are created. |
maxNotifyListings | Cap on items exported to each connector per run. Does not affect the dataset. |
Output
One record per product. With details off you get the listing‑level fields; with details on you also get barcode, ingredients, allergens, nutrition and rating. Example (illustrative values):
{"productId": "520661336","name": "Leche semidesnatada marca ejemplo brik 1 L","brand": "Marca Ejemplo","ean": "8400000000000","price": 0.99,"regularPrice": 1.19,"unitPrice": 0.99,"unitPriceMeasure": "l","currency": "EUR","onPromotion": true,"discountPercentage": 17,"inStock": true,"stock": 240,"categoryId": "cat00000","ingredients": "Leche de vaca semidesnatada.","allergens": ["Leche"],"nutrition": [{ "name": "Valor energético", "value": "46 kcal" }],"rating": 4.5,"reviewCount": 12,"reviews": [],"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": "search","scrapedAt": "2026-01-01T00:00:00Z"}
Ratings & reviews. Products carry an aggregate rating (rating,
reviewCount) where the catalog exposes one. Individual customer review text is
not published in the catalog, so the reviews array is present but empty on rated
products, and rating fields are simply absent on products with no rating (never
fabricated zeros).
Incremental mode only. When incrementalMode is on, every returned record also
carries:
| Field | Description |
|---|---|
changeType | NEW | UPDATED | UNCHANGED | REAPPEARED | EXPIRED |
changedFields | Top-level fields that changed since last seen; non-empty only for UPDATED |
firstSeenAt | When this product was first observed by this monitoring campaign |
lastSeenAt | When this product was last observed |
Resume & recurring updates
There are two different things here — pick the one that matches what you're doing:
| Need | Use |
|---|---|
| A crawl stopped and should continue | resumeFromRunId / automatic checkpoint recovery |
| Run the same search every day and receive only changes | incrementalMode |
| Keep separate daily campaigns for similar searches | distinct stateKey values |
| Run a normal full snapshot | leave both off |
Resume (resumeFromRunId) continues one specific interrupted or previous large crawl: paste a run ID or dataset ID and this run skips products already collected there, returning only the remaining new products. An automatic same-run checkpoint also protects against platform migrations/Resurrects without any input needed.
Incremental mode (incrementalMode) is for a schedule (for example, daily): the actor remembers the previous run of the same search by itself, so you never paste a run ID. The first run returns everything as NEW. Later runs return only NEW, UPDATED, and REAPPEARED products by default — duplicates and unchanged products are suppressed (and not charged). Turn on emitUnchanged or emitExpired only when you also want those rows returned (and billed for). State is isolated per search/category/URL and detail-mode setup automatically; set stateKey to name or deliberately share a monitoring campaign.
Scheduled-run example — same search, run daily:
Day 1 (first run ever for this search):
{ "mode": "search", "queries": ["leche"], "incrementalMode": true }
→ every product comes back with "changeType": "NEW".
Day 2 (the schedule fires again, identical input):
{ "mode": "search", "queries": ["leche"], "incrementalMode": true }
→ products whose price/promotion/stock/etc. changed come back as "changeType": "UPDATED" with changedFields listing what changed, brand-new products come back as "changeType": "NEW", products that vanished and came back come back as "changeType": "REAPPEARED" — and products that are still there, unchanged, are not returned at all (suppressed, not charged) unless emitUnchanged is on.
Proxy & connection
Apify Proxy is required. Carrefour Spain serves its catalog only to Spanish residential connections, so the actor uses a Spanish residential exit by default. On the Free plan (no residential proxy access) results may be empty — enable Apify Proxy or upgrade your plan at https://apify.com/pricing.
Send results into your apps (MCP connectors)
Optionally pipe results into the apps you already use through Model Context Protocol (MCP) connectors. Authorize a connector once under Apify, Settings, Integrations, then select it in the mcpConnectors field. Each connector receives a condensed, human-readable summary per product (title plus key fields), while the complete record always stays in the Apify dataset. For Notion, set notionParentPageUrl to the page the item pages should be created under. Supported connectors: Notion, Linear, Airtable, and Apify. Leave the field empty to skip; it never changes the dataset output.
Notes
- Search and category result pages are walked forward one page at a time until Max products is reached, the storefront runs out of pages, or (with the default unlimited Max pages) a page repeats no new products.
- Long runs survive an Apify server migration or a manual Resurrect: progress is checkpointed, so a resumed run continues without re-scraping or double-charging products already collected.
searchModeon each record reports how it was found:search,category, orproductwhen it came from a pasted product link or id.- Prices are in EUR. Spanish price strings are normalized to numbers.
- Duplicate products (same id) are returned once per run.