Scrape Carrefour grocery prices and drive availability
Shelf price, price per kilo, the promotion in force and whether an item is available at a given Drive from carrefour.fr. Product pages need no browser; search does.
Measured on Crawlbase
92.4% success in August 2026. 11.0% of successful calls used the JavaScript token, and those are the search and category pages, which render client-side. Product pages do not, and account for most of the volume.
The call
# Product page, no browser curl "https://api.crawlbase.com/?token=YOUR_TOKEN&country=FR&url=https%3A%2F%2Fwww.carrefour.fr%2Fp%2Flait-demi-ecreme-carrefour-3270190002185" # Category page, browser + wait for the grid curl "https://api.crawlbase.com/?token=YOUR_JS_TOKEN&country=FR&page_wait=2500&ajax_wait=true&url=https%3A%2F%2Fwww.carrefour.fr%2Fr%2Fproduits-laitiers-oeufs%2Flait"
from crawlbase import CrawlingAPI api = CrawlingAPI({'token': 'YOUR_TOKEN'}) r = api.get('https://www.carrefour.fr/p/lait-demi-ecreme-carrefour-3270190002185', {'country': 'FR'}) # price, unit price and promo are in the ld+json Product block
const { CrawlingAPI } = require('crawlbase'); const api = new CrawlingAPI({ token: 'YOUR_TOKEN' }); const r = await api.get('https://www.carrefour.fr/p/lait-demi-ecreme-carrefour-3270190002185', { country: 'FR' });
Parameters that matter
| Parameter | Set it to | Why |
|---|---|---|
country | FR | carrefour.fr serves a consent wall to non-French exits and the price block is empty behind it. |
javascript | product pages: unset · search: JS token | Product pages carry a ld+json block with the price. Category and search grids are rendered client-side and need the browser. |
page_wait / ajax_wait | 2500 · true | With the browser, the grid arrives after a request the page fires on load. Without the wait you get an empty grid. |
cookies | storeId=<drive id> | Sets the Drive whose stock and prices you want. Without it prices are national and availability is blank. |
Fields you get, from the ld+json block
stringstring (EAN)numberEURstring, per kg or Lstring | nullInStock | OutOfStockstringWhat breaks, and the fix
/r/ or /s?q=.Run it on a schedule
Price tracking per Drive multiplies the product count by the store count. Use the Crawler with one job per product and store, and read from Cloud Storage. 10,000 products across 20 Drives is 400,000 credits a run at two credits a page.
Questions
Why is the success rate lower than other recipes?
Search pages fetched without a browser fail. Product pages fetched the way this recipe shows run well above the site-wide number. Follow the recipe and the rate follows.
Can I get prices for a specific Carrefour store?
Yes, by passing the Drive id as a cookie. The locator page lists ids by postcode.