The Tool Desk
Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →The reliable way to scrape Carrefour is to treat every price and stock result as contextual. Save the country site, postal code or selected store, fulfillment mode (shop, Drive, Click & Collect, or delivery), seller, product identifier, promotion state, availability text, timestamp, and source URL with every observation. Product pages often expose price data in JSON-LD and can be fetched with ordinary HTTP; search and category pages may need a JavaScript-capable browser. Never compare values from different stores, countries, or services as if they were one catalog.
Why a Carrefour price is not a single global value
Carrefour operates a country-specific online service connected to local stores, Drive pickup, Click & Collect, and delivery. Carrefour France’s terms state that displayed prices depend on the delivery location or pickup location selected by the customer and cannot be assumed to apply elsewhere. A scraper that records only price=3.99 has lost the most important part of the observation.
| # | Preview | Product | Price | |
|---|---|---|---|---|
| 1 |
|
Albertsons eGift Card - $100 - Standard | $100.00 | Buy on Amazon |
| 2 |
|
Visa Physical Gift Card $200 (plus $6.95 Purchase Fee) | $206.95 | Buy on Amazon |
| 3 |
|
DoorDash eGift Card | $50.00 | Buy on Amazon |
| 4 |
|
Albertsons Companies Physical Gift Card - $100 | $100.00 | Buy on Amazon |
| 5 |
|
$500 Apple Gift Card—Email Delivery - Season's greetings | $500.00 | Buy on Amazon |
- Country and site: France, Spain, Belgium, and other country sites can have different catalogs, currencies, tax presentation, and URLs.
- Location: a postal code, delivery zone, or selected store can change both price and availability.
- Fulfillment: in-store shopping, Drive pickup, Click & Collect, and home delivery are separate contexts.
- Seller: a Carrefour-operated offer and a third-party marketplace offer are not interchangeable.
- Time: promotions and stock change, so every result needs an observation timestamp.
Carrefour also says that offers and prices are valid while visible and available. Adding an item to a cart does not guarantee that it will still be available when the order is finally validated. Treat a catalog response as a time-stamped indication, not a reservation.
Design the record before making requests
Use a structured record so later comparisons remain honest. A practical minimum schema is:
Outdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchWindows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstall#1 Best Overall
- Redemption Steps: Customer must present eGift QR code payment either printed, or on mobile device to Checker as tender.
- Albertsons Companies gift cards can be redeemed at any of our store locations or for online transactions. For online purchases, gift cards must first be loaded to the applicable Albertsons Companies banner wallet (example Safeway, Jewel, Vons, etc).
- Checker Instructions: Total order, Press EFT FULL, Scan QR code (printed or mobile version) with handheld scanner.
- Self-checkout Instructions: Select "Pay with Scan" when prompted for payment type, then scan QR code with handheld scanner."
- Visit ALBERTSONS.THEGIFTCARDSHOP.COM/RETAIL to find a store location near you
| Field group | Fields to retain | Why it matters |
|---|---|---|
| Site and context | Country, locale, selected store ID/name, postal code or delivery zone, fulfillment mode | Explains geographic and service-specific differences. |
| Product | Product ID (EAN/GTIN or site ID), name, brand, pack size, source URL | Prevents comparing different sizes or similarly named products. |
| Price | Shelf price, currency, unit price or price per kilogram/litre, promotion text, promotion end date when shown | Separates a temporary offer from a regular or unit price. |
| Availability | Displayed availability text, boolean interpretation, substitution or quantity note | Catalog visibility is not guaranteed stock at checkout. |
| Channel | Carrefour or marketplace seller, seller name, offer condition, stock quantity when exposed | Marketplace offers can have different sellers and conditions. |
| Audit | UTC timestamp, HTTP status, raw response or rendered evidence, parser version | Lets you explain a change and reprocess data after a markup update. |
Keep store, Drive, and delivery observations in separate rows even when the product ID is identical. For comparisons, use these axes together: country/site, selected location, fulfillment mode, seller/channel, product identifier and pack size, shelf versus unit price, promotion state, availability state, timestamp, and any substitution or fulfillment note.
Step-by-step collection workflow
1. Select the country site and establish context normally
- Choose the Carrefour domain for the country you intend to measure and store that locale in your job configuration.
- Use the site’s normal store, postal-code, Drive, or delivery selector. Do not assume the first store or an anonymous default is representative.
- Record the selected store or zone and the service mode before fetching products. If the site stores context in cookies or local storage, preserve the session for subsequent requests.
For a cross-country project, run the same product list separately per country. Do not normalize currencies and then present the result as a worldwide Carrefour price without retaining the original country and currency.
2. Start with product pages and JSON-LD
Carrefour product pages generally expose product and offer information in JSON-LD, making them the simplest target for an HTTP client. Parse the visible page as well as JSON-LD because the visible text often contains the exact availability wording and promotion explanation.
import json
import re
from datetime import datetime, timezone
from urllib.parse import urljoin
import requests
from bs4 import BeautifulSoup
PRODUCT_URL = "https://www.carrefour.fr/p/replace-with-a-product"
HEADERS = {"User-Agent": "price-monitor/1.0 (contact: [email protected])"}
r = requests.get(PRODUCT_URL, headers=HEADERS, timeout=30)
r.raise_for_status()
soup = BeautifulSoup(r.text, "html.parser")
jsonld_items = []
for tag in soup.select('script[type="application/ld+json"]'):
try:
value = json.loads(tag.string or tag.get_text())
jsonld_items.extend(value if isinstance(value, list) else [value])
except json.JSONDecodeError:
continue
product = next((x for x in jsonld_items if isinstance(x, dict) and x.get("@type") in ("Product", ["Product"])), {})
offers = product.get("offers", {})
if isinstance(offers, list):
offers = offers[0] if offers else {}
text = soup.get_text(" ", strip=True)
record = {
"source_url": PRODUCT_URL,
"observed_at": datetime.now(timezone.utc).isoformat(),
"product_id": product.get("sku") or product.get("gtin13") or product.get("gtin").strip() if product.get("gtin") else None,
"name": product.get("name"),
"price": offers.get("price"),
"currency": offers.get("priceCurrency"),
"availability_jsonld": offers.get("availability"),
"page_text_availability": re.search(r"(en stock|indisponible|disponible|rupture de stock)", text, re.I).group(1) if re.search(r"(en stock|indisponible|disponible|rupture de stock)", text, re.I) else None,
"raw_html_saved": True,
}
print(json.dumps(record, ensure_ascii=False, indent=2))
Replace the example URL with a real product URL and add your recorded store, service, seller, pack size, unit price, and promotion fields. JSON-LD availability values are useful signals, but preserve the original on-page text instead of reducing everything to a guessed boolean.
Rank #2
- Gift Cards are shipped active and ready for use.
- This card is non-reloadable. No cash or ATM access. Funds do not expire. If available funds remain on your card after the valid thru date has passed, please call customer service for a replacement card. A one-time purchase fee applies at the time of checkout. No fees after purchase.
- To access your card information safely, type the complete website address shown on your Gift Card (MyGift.GiftCardMall.com) directly into your browser's address bar. Don't use search engines or shortened versions of the website address, as these may lead you to fake or fraudulent sites. Do not provide any Gift Card details (example: Card Number) to someone you do not know or trust. If you believe you've reached an illegitimate website, contact cardholder service at 1-888-524-1283. Be cautious of phishing sites, there are a variety of scams in which fraudsters try to trick others into paying with gift cards.
- To report your Lost or Stolen Physical Visa Card, call Customer Service 24/7 at 1 (888) 524-1283 to cancel your Gift Card as soon as you can. You will be asked to provide the Gift Card number and other identifying information.
- Use your Visa Gift Card in the U.S. everywhere Visa debit cards are accepted, including online.
3. Use a browser only where rendering requires it
Search and category pages can render their product grids client-side. A browser session is appropriate when a normal request returns an empty shell, when the location selector runs in JavaScript, or when you need the rendered evidence shown to a shopper.
import asyncio
from datetime import datetime, timezone
from playwright.async_api import async_playwright
async def main():
async with async_playwright() as p:
browser = await p.chromium.launch(headless=True)
context = await browser.new_context(locale="fr-FR")
page = await context.new_page()
await page.goto("https://www.carrefour.fr/s?q=coffee", wait_until="domcontentloaded", timeout=60000)
# Use the site's normal controls; selectors change by country and redesign.
# Example: await page.get_by_role("button", name="Choisir un magasin").click()
await page.wait_for_selector("[data-testid*='product'], article", timeout=30000)
cards = await page.locator("article").evaluate_all("els => els.map(e => e.innerText)")
print({
"observed_at": datetime.now(timezone.utc).isoformat(),
"url": page.url,
"cards": cards,
})
await browser.close()
asyncio.run(main())
Use stable attributes discovered in the current country site rather than copying selectors from another Carrefour domain. Save a screenshot or HTML snapshot with the same context when an audit trail is important.
4. Check availability for a particular store or Drive point
Availability is a location-specific check. Select the store or Drive point through the public shopping flow, wait for the product page or result grid to update, then capture the displayed status and timestamp. Run one session per store or point; changing a cookie value blindly can leave the UI showing stale context.
Record distinctions such as “available for Drive,” “available for delivery,” “unavailable,” quantity limits, and substitution choices separately. A product visible in a national catalog may be unavailable at the selected store, and a product added to a cart can still fail at final validation.
Rank #3
- Get thousands of restaurants, convenience stores, pet stores, grocery stores, gifts, and more at your fingertips.
- Easy ordering, order customizations, and real-time tracking
- Pickup, group order, and scheduled delivery options available
- No returns and no refunds on gift cards.
5. Preserve marketplace seller information
Carrefour’s marketplace terms describe an offer using a price, promotional price when applicable, product sheet, stock quantity, and condition, while distinguishing third-party sellers from Carrefour-operated sales. Store the seller identity and channel on every offer. If a page displays several sellers, emit one record per offer instead of selecting the cheapest value and discarding the others.
Robots, terms, and operational boundaries
Check the current robots.txt, terms, rate limits, and endpoint behavior for the country site before deployment. A Carrefour-focused technical cookbook reported disallow rules including /set-store, /get-store, and /webview; those paths are a warning not to call internal endpoints directly unless current rules and your authorization permit it. Use the normal public flow, throttle requests, identify your client, and stop when access controls indicate that automated access is not allowed.
There is no stable, cross-country Carrefour scraping API contract established by the official pages. Treat integrations as country- and page-specific, and revalidate after a redesign, domain change, promotion system change, or fulfillment-flow update.
Reliability, performance, and cost decisions
Choose the lightest method that preserves context
- HTTP plus JSON-LD: fastest and least resource-intensive for known product URLs.
- Browser rendering: necessary for client-side search/category grids and interactive location selection, but slower and more expensive to operate.
- Hybrid: establish the location with a browser, then reuse the authenticated/session cookies for product requests where the site permits it.
Cache product URLs only with a short, explicit TTL when freshness matters. Never let a cache key omit country, store or zone, fulfillment mode, seller, or promotion context. Retry transient HTTP failures with exponential backoff, but do not repeatedly retry a bot challenge or a deliberate access denial.
Recommended Free Tools
Rank #4
- Redemption Steps: Customer must present eGift QR code payment either printed, or on mobile device to Checker as tender.
- Albertsons Companies gift cards can be redeemed at any of our store locations or for online transactions. For online purchases, gift cards must first be loaded to the applicable Albertsons Companies banner wallet (example Safeway, Jewel, Vons, etc).
- Checker Instructions: Total order, Press EFT FULL, Scan QR code (printed or mobile version) with handheld scanner.
- Self-checkout Instructions: Select "Pay with Scan" when prompted for payment type, then scan QR code with handheld scanner."
- Visit ALBERTSONS.THEGIFTCARDSHOP.COM/RETAIL to find a store location near you
One vendor cookbook reported a 92.4% success rate for its measured Carrefour calls and said 11.0% of successful calls used a JavaScript token (Crawlbase, August 2026). Those are that vendor’s test metrics, not a universal Carrefour benchmark; your country, page type, rate, and session state can produce different results.
Common failures and fixes
| Symptom | Likely cause | Fix |
|---|---|---|
| Price differs from the shopper’s screen | Different store, postal code, country, or fulfillment mode | Log and reproduce the exact location and service context; compare only like-for-like records. |
Product grid is empty in requests |
Client-side rendering | Use Playwright or another authorized browser-capable session and wait for the grid. |
| Product page has price but no stock | Availability is rendered separately or is volatile | Parse visible availability text, capture the timestamp, and recheck in the selected store context. |
| Session keeps reverting to a default store | Location cookie/local storage was not retained or was overwritten | Use one persistent browser context, select the store through the UI, and verify the displayed store before each batch. |
| HTTP 403, CAPTCHA, or bot-check page | Access control, excessive rate, or disallowed automation | Stop aggressive retries, review current robots and terms, reduce rate, and use an authorized collection method. |
| Marketplace comparison is misleading | Seller, condition, or promotional offer was dropped | Emit separate seller/channel records and retain stock quantity and condition when shown. |
| Parser breaks after a redesign | Selectors or JSON-LD shape changed | Keep raw HTML/rendered evidence, add parser tests, and revalidate every country adapter. |
Or skip the browser setup
ScreenshotNeo can provide a rendered screenshot of a Carrefour page for visual verification or an audit artifact while your parser handles structured fields. It accepts the page URL over one GET request; use the resulting image to confirm that the selected store, price, promotion, and availability text actually appeared together. It is not a substitute for extracting JSON-LD or seller fields from HTML.
Cookie banners, newsletter popups, and chat widgets are removed before the shot. Bot checks, blank pages, failed loads, and timeouts are not billed, and the response identifies the page verdict and billing status. Its MCP server lets AI agents use take_screenshot, get_page_info, and capture_pdf. Every plan includes the features; 1,000 screenshots per month are free with no card, and paid plans start at $5 for 3,000 shots.
cURL
curl -G "https://api.screenshotneo.com/v1/shot"
-d access_key=YOUR_API_KEY
--data-urlencode url=https://www.carrefour.fr/p/replace-with-a-product
-o carrefour.webp
Python
import requests
r = requests.get(
"https://api.screenshotneo.com/v1/shot",
params={
"access_key": "YOUR_API_KEY",
"url": "https://www.carrefour.fr/p/replace-with-a-product",
},
timeout=90,
)
r.raise_for_status()
open("carrefour.webp", "wb").write(r.content)
Node.js
const q = new URLSearchParams({
access_key: 'YOUR_API_KEY',
url: 'https://www.carrefour.fr/p/replace-with-a-product'
});
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);
if (!res.ok) throw new Error(`${res.status} ${res.statusText}`);
const fs = await import('node:fs/promises');
await fs.writeFile('carrefour.webp', Buffer.from(await res.arrayBuffer()));
See the ScreenshotNeo documentation for capture options and response headers. Use a saved screenshot alongside your structured record when you need to prove what the shopper-facing page displayed. Create a free ScreenshotNeo account to get 1,000 screenshots a month with no card.
FAQ
Can I scrape one Carrefour URL and use it for every country?
No. Country sites, catalogs, currencies, fulfillment rules, and location selectors differ. Build a country-specific adapter and retain the locale on every row.
Best Value
- For all things Apple - products, accessories, apps, games, music, movies, TV shows, iCloud+, and more.
- Perfect for App Store purchases and subscriptions—get apps, games, music, movies, TV shows, and more.
- The perfect gift to say happy birthday, thank you, congratulations, and more.
- Available in $15 - 500, Card delivered via email or SMS
- Use it for purchases at any Apple Store location, on the Apple Store app, apple.com, the App Store, iTunes, Apple Music, Apple TV, Apple News+, Apple Books, Apple Arcade, iCloud+, Fitness+, Apple One, and other Apple properties in US only
Does an “in stock” label guarantee I can complete an order?
No. Carrefour states that adding a product to the cart is not order validation. Availability can change before final checkout, so use the label as a time-stamped observation.
Should I compare shelf price or price per kilogram?
Store both. Shelf price answers the checkout question; unit price is the fair comparison when pack sizes differ.
When is a screenshot useful if I already parse JSON-LD?
A screenshot preserves the rendered, location-specific evidence a shopper saw, including banners or availability wording that may not be represented in structured data. Keep it as an audit artifact, not as a replacement for machine-readable extraction.
Free tools Windows power users keep installed
One-click scans. No signup required.
Frequently Asked Questions
Can I scrape one Carrefour URL and use it for every country?
No. Country sites, catalogs, currencies, fulfillment rules, and location selectors differ. Build a country-specific adapter and retain the locale on every row.
Does an “in stock” label guarantee I can complete an order?
No. Carrefour states that adding a product to the cart is not order validation. Availability can change before final checkout, so use the label as a time-stamped observation.
Should I compare shelf price or price per kilogram?
Store both. Shelf price answers the checkout question; unit price is the fair comparison when pack sizes differ.
Quick Recap
When is a screenshot useful if I already parse JSON-LD?
A screenshot preserves the rendered, location-specific evidence a shopper saw, including banners or availability wording that may not be represented in structured data. Keep it as an audit artifact, not as a replacement for machine-readable extraction.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




