Auchan France Scraper - Products, Local Prices & Reviews avatar

Auchan France Scraper - Products, Local Prices & Reviews

Pricing

from $1.00 / 1,000 product results

Go to Apify Store
Auchan France Scraper - Products, Local Prices & Reviews

Auchan France Scraper - Products, Local Prices & Reviews

Scrape Auchan.fr products: grocery, drinks, household and general merchandise. Real price scoped to your drive/delivery point, genuine was-price and discount % when on offer, unit price, brand, shopper ratings and reviews. Search by keyword or paste product/search/category links.

Pricing

from $1.00 / 1,000 product results

Rating

0.0

(0)

Developer

Abot API

Abot API

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

7 days ago

Last modified

Share

Auchan France Scraper: Prices, Promotions, Stock & Shopper Reviews

Auchan France Scraper turns Auchan.fr into a clean grocery data feed. Pull French hypermarket products across food, drinks, household goods and general merchandise, with the current price scoped to a drive, click and collect or delivery point you choose by postal code, a genuine strike through was price and discount percent whenever an item is really on offer, unit pricing, stock, images and Auchan's own shopper ratings and reviews. Search by keyword with brand and on offer filters, or paste any product, search or category link directly, then export to JSON, CSV or Excel, or pull the results straight into your app through the API.

Why This Scraper?

  • Real, store-scoped prices. Resolves a drive, click and collect or delivery point from a postal code you provide, the same way the site's own "Choisir vos courses" flow does, so prices, promotions and stock match what a real shopper at that address would see.
  • Was-price captured only when it's real. Reads the site's own strike-through price element per item and only ever fills a was-price and discount when it is genuinely present and higher than the current price. Full-price items simply get null, never a fabricated markdown.
  • Loyalty cashback kept separate from a real discount. Auchan's "Avantages Waaoh" badge is a loyalty rewards-points percentage, not a price cut, so it is surfaced under its own loyaltyCashbackPercent field and never mistaken for a genuine promotion.
  • Real shopper reviews, straight from Auchan's own product pages. Ratings and reviews come from Auchan's own on-site review widget: overall rating, star-by-star breakdown, and per-review author, date, rating, title and body, included on request.
  • Unit pricing included. The site's own price-per-kilo or price-per-litre is read directly, never guessed from a pack size.
  • Two ways in. Keyword search with brand and "on offer" filters and sort, or paste any product, search, or category link directly.
  • Resume and recurring updates. Continue one interrupted crawl with resumeFromRunId, or monitor a search on a schedule with Incremental mode: later runs return only new and updated products by default; expired products need Emit expired on for that specific run plus a complete scan, and a product previously marked expired can then come back as reappeared.

Use Cases

  • Grocery price tracking and deal hunting: watch a shopping list or category for genuine promotions and price drops at a specific drive or delivery point.
  • Comparison shopping: build a store-scoped grocery price feed alongside other retailers you track.
  • Loyalty and rewards analysis: separate real discounts from Auchan's own loyalty cashback percentage across a catalogue.
  • Product and review research: pull shopper ratings, rating breakdowns and full review text for a brand or category.
  • Recurring stock and price monitoring: schedule a daily run against the same search and get back only what changed.

Data You Get

FieldExample
productId / title"a1b2c3d4-1111-4fff-9999-000000000001", "SAMPLE BRAND Riz basmati parfume 1kg"
brand"SAMPLE BRAND"
category / categoryPath"Riz, pates et legumes secs", ["Epicerie salee", "Riz, pates et legumes secs"] (with Fetch product detail or a pasted product URL, null otherwise)
productUrlhttps://www.auchan.fr/sample-brand-riz-basmati-parfume-1kg/pr-C0000001
packSize"1kg"
price / currency3.49, "EUR"
wasPrice / discountAmount / discountPercent4.99, 1.5, 30.1 (only when genuinely on offer, otherwise all null)
isOnSpecialtrue
loyaltyCashbackPercent5.0 (Waaoh loyalty cashback, kept separate from a real discount)
unitPrice / unitOfMeasure3.49, "€/kg"
availability / stock"InStock", 42
deliveryPromise / deliveryChannel"Dans mon drive", "PICK_UP"
averageRating / reviewCount4.2, 87
imagesone card image by default; full-resolution gallery with Fetch product detail or a pasted product URL
ean"3400000000019" (with Fetch product detail or a pasted product URL, null otherwise)
reviews{"averageRating": 4.3, "reviewCount": 12, "ratingBreakdown": {"5": 7, "4": 3, "3": 1, "2": 1, "1": 0}, "items": [...]} (empty shape by default, full feed with Fetch product detail or a pasted product URL)

Sample shape: values above are illustrative placeholders, not from a live product.

reviews is always an object, even when detail fetching is off or a product genuinely has no shopper reviews: averageRating and ratingBreakdown come back null and items comes back empty until fetchDetails (or a pasted product URL) pulls the real feed, and even then a product with zero shopper reviews still returns that same empty shape rather than an error. When Incremental mode is on, every returned record also carries changeType (NEW, UPDATED, UNCHANGED, REAPPEARED or EXPIRED), changedFields, firstSeenAt and lastSeenAt; REAPPEARED and EXPIRED only ever appear once emitExpired has been used on a run that fully scanned the search, which tombstones a missing product so a later run that finds it again can classify it as REAPPEARED. See How to Use for the full walkthrough.

How to Use

  1. Pick a mode: search (by keyword) or url (paste links).
  2. Set your postal code or city so prices and stock match a real shopper at that address, and choose drive/click&collect or home delivery.
  3. For search mode, add a keyword, brand, "on offer" filter and sort as needed; for url mode, paste one or more product, search or category links.
  4. Set Max products and Max search pages to control run size and cost, then click Start.

1. Keyword search (default):

{
"mode": "search",
"postalCode": "75001",
"searchTerm": "lait",
"maxItems": 20
}

2. Offers only, biggest discount first, home delivery instead of drive:

{
"mode": "search",
"postalCode": "69001",
"deliveryMode": "shipping",
"specialsOnly": true,
"sortBy": "BIGGEST_DISCOUNT",
"maxItems": 50
}

3. One brand, with full detail and reviews:

{
"mode": "search",
"postalCode": "75001",
"searchTerm": "lait",
"brand": "LACTEL",
"fetchDetails": true,
"maxItems": 20
}

4. Paste product, search or category links directly:

{
"mode": "url",
"postalCode": "75001",
"urls": [
"https://www.auchan.fr/lactel-lait-demi-ecreme-bio-uht/pr-C1177205",
"https://www.auchan.fr/oeufs-produits-laitiers/cremerie-oeufs-laits/ca-n0101"
],
"maxItems": 50
}

Run it from your code

Python:

from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("abotapi/auchan-fr-scraper").call(run_input={"mode": "search", "postalCode": "75001", "searchTerm": "lait"})
for product in client.dataset(run["defaultDatasetId"]).iterate_items():
print(product["title"], product["price"], product["currency"])

JavaScript:

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('abotapi/auchan-fr-scraper').call({ mode: 'search', postalCode: '75001', searchTerm: 'lait' });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Or connect it to Make, Zapier, n8n, Google Sheets or webhooks from the Integrations tab.

Limits, resume and recurring updates

NeedUse
A crawl stopped and should continueresumeFromRunId
Run the same search on a schedule and receive only changesincrementalMode
Keep separate monitoring campaigns for similar searchesdistinct stateKey values
Run a normal full snapshotleave both off

Resume (resumeFromRunId) continues one specific interrupted or previous crawl: paste a run id or dataset id and this run skips products already collected there, returning only the remaining new products.

Incremental mode (incrementalMode) is for a schedule, for example daily: the actor remembers the previous run of the same search itself, so you never paste a run id. The first run returns everything as NEW. Later runs return only NEW and UPDATED products by default; duplicates and unchanged products are suppressed and not charged. Turn on emitUnchanged to also get and pay for unchanged rows, or emitExpired to also get and pay for products from a previous run that a complete, uncapped, non-resumed scan of the search no longer found, marked EXPIRED. Only once a run with emitExpired on has found a product missing (marking it gone) can a later run classify it as REAPPEARED if it shows up again; without ever turning on emitExpired, REAPPEARED cannot occur. State is isolated per postal code, delivery mode, search or URL and detail-mode setup automatically, since Auchan scopes the price itself to the postal code and delivery point; set stateKey to name or deliberately share a monitoring campaign.

maxItems (0 = unlimited) caps total products returned; maxPages (empty = unlimited) caps result pages fetched (shared across pasted search links, per category link in url mode). A capped run still returns everything found up to that point, and Incremental mode's EXPIRED detection is skipped for any run that was capped, resumed, or otherwise did not reach the natural end of the tracked search.

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, and use maxNotifyListings to cap how many items are exported per connector per run. Supported connectors: Notion, Linear, Airtable, and Apify. Leave the field empty to skip; it never changes the dataset output.

Input Parameters

ParameterTypeDefaultDescription
modestringsearchsearch browses by keyword with brand and on-offer filters and sort; url scrapes any product, search, or category link you paste.
postalCodestring75001French postal code or city used to resolve a drive, click and collect or delivery point, the same way the site's own picker does. Applies to every mode.
deliveryModestringdrivedrive for a drive or click and collect point, or shipping for a home delivery point at the postal code above.
searchTermstring(none; prefill lait)Keyword against the site's own search index. Leave empty to browse the store-wide catalogue and narrow with Brand or On offer only instead. Search mode only.
brandstring(none)Keep only this brand, as shown on the site. Leave empty for all brands. Best-effort match against the site's own brand facet. Search mode only.
specialsOnlybooleanfalseKeep only products carrying a genuine current promotion. Search mode only.
sortBystringRELEVANCESort order, using the site's own real sort options. Search mode only.
urlsarray(no schema default; prefill only, one sample product URL)One or more product, search, or category listing links to scrape. Search filters (keyword, brand, on offer, sort) are ignored in this mode; postal code and delivery mode still apply.
fetchDetailsbooleanfalseFetch the full category breadcrumb, barcode, complete image gallery and native shopper review feed for each product. Current price, was-price and discount, unit price, rating and one image are already included without this toggle. Always on for a pasted product URL.
maxPagesinteger(none; empty = unlimited)Stop after fetching this many result pages. Leave empty for no limit; the run still stops at Max products total.
maxItemsinteger20Hard cap on total products returned across the run. 0 = unlimited, still bounded by Max search pages.
resumeFromRunIdstring(none)Continue one specific previous run or dataset: products already collected there are skipped, so this run only returns the remaining new products. For recurring monitoring of the same search, use Incremental mode instead.
incrementalModebooleanfalseTurn on for recurring monitoring of this same search. The first run returns everything as NEW. Later runs return only NEW and UPDATED products by default, plus REAPPEARED/EXPIRED once emitExpired has been used on a fully scanned run. See How to Use.
stateKeystring(none)Name this monitoring campaign to keep its state stable, or to deliberately share state across differently configured runs. Leave empty to derive a key automatically from the postal code, delivery mode, search/URL and filter settings.
emitUnchangedbooleanfalseAlso return products unchanged since the last run, marked UNCHANGED. Returns and bills extra rows you already have. Incremental mode only.
emitExpiredbooleanfalseAlso return products from a previous run no longer found, marked EXPIRED, once a run has fully scanned the tracked search (not capped, not a resume). Returns and bills extra synthetic rows, and is required before a later REAPPEARED classification can ever occur. Incremental mode only.
proxyobject{"useApifyProxy": true}Connection settings used to route requests. The default works out of the box.
mcpConnectorsarray(none)Optional connectors to export results into (Notion, Linear, Airtable, Apify).
notionParentPageUrlstring(none)Notion connector only: page under which item pages are created.
maxNotifyListingsinteger50Cap on items exported to each connector per run. Does not affect the dataset.

Output Example

{
"productId": "a1b2c3d4-1111-4fff-9999-000000000001",
"title": "SAMPLE BRAND Riz basmati parfume 1kg",
"brand": "SAMPLE BRAND",
"packSize": "1kg",
"productUrl": "https://www.auchan.fr/sample-brand-riz-basmati-parfume-1kg/pr-C0000001",
"price": 3.49,
"currency": "EUR",
"unitPrice": 3.49,
"unitOfMeasure": "€/kg",
"wasPrice": 4.99,
"discountAmount": 1.5,
"discountPercent": 30.1,
"isOnSpecial": true,
"loyaltyCashbackPercent": 5.0,
"availability": "InStock",
"deliveryPromise": "Dans mon drive",
"deliveryChannel": "PICK_UP",
"stock": 42,
"averageRating": 4.2,
"reviewCount": 87,
"images": [
"https://cdn.auchan.fr/media/sample/0000?width=2048&height=2048&fit=pad&format=rw&quality=75",
"https://cdn.auchan.fr/media/sample/0001?width=2048&height=2048&fit=pad&format=rw&quality=75"
],
"categoryPath": ["Epicerie salee", "Riz, pates et legumes secs"],
"category": "Riz, pates et legumes secs",
"ean": "3400000000019",
"reviews": {
"averageRating": 4.3,
"reviewCount": 12,
"ratingBreakdown": { "5": 7, "4": 3, "3": 1, "2": 1, "1": 0 },
"items": [
{ "reviewId": "0000000001", "author": "Sample Shopper", "date": "01/01/26", "rating": 5.0, "title": "Sample review title", "body": "Sample review text.", "verifiedPurchase": true }
]
}
}

Sample shape: values above are illustrative placeholders, not from a live product.

Plan Requirement

The default connection setting works out of the box for typical run sizes. When a request is refused, the run backs off and retries automatically before moving on; if refusals keep happening, retries stop for the rest of that run and whatever was already collected is kept and returned rather than lost. For large or frequent runs, the residential proxy group under Connection gives more headroom, with a choice of country.

FAQ

How much does it cost?

You pay per product returned, a one-time actor start fee, and a separate detail-enrichment fee for each product that is returned after its full detail page was fetched, whether because Fetch product detail was switched on or because it came from a pasted product URL, which always fetches full detail. A product that Incremental mode suppresses as unchanged is never charged the detail fee even if its detail page had to be fetched to check for changes. The Pricing tab shows current rates. Use Max products to cap the cost of any run.

This actor collects only publicly available grocery product data. You are responsible for how you use it: follow Auchan's terms and the laws that apply to you, and get legal advice if you plan commercial redistribution. Product names, images and review text may be subject to third-party rights.

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 by default; unchanged ones are not billed unless you turn on Emit unchanged.

What is the difference between Resume and Incremental mode?

Resume continues one specific interrupted or previous crawl using a pasted run or dataset id; you use it once, for one run. Incremental mode is for running the exact same search again and again on a schedule: the actor remembers the previous run itself, so you never paste an id, and it classifies every product as new, updated or unchanged against what it saw last time (reappeared and expired only after you turn on Emit expired for a complete scan).

Why did my run finish with an empty dataset instead of failing?

If the postal code cannot be matched to a real address, the run still finishes and products still come back, but prices and stock may come back empty (identity, rating and image fields still populate) since no store is selected. If requests keep being refused instead, the actor logs a warning and still finishes as a completed run, just with fewer or no products, rather than an errored run. Check the run log for what was skipped and try again. The run only stops early with an explicit error for a small number of input problems, such as an unresolvable Resume id or turning on Resume while Incremental mode already has saved state for that search.

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.

🔗 Want more grocery data?

Pair this actor with these related scrapers from the same team:

🥦 E.Leclerc Scraper
Scrape E.Leclerc France (e.leclerc) grocery and retail products. Search by keyword or...
🥦 Lidl.es Products, Weekly Offers, Prices & Reviews Scraper
Scrape Lidl.es grocery and non-food products across weekly offers, tools, home, garden...
🥦 Mercadona Scraper
Scrape Mercadona products by delivery-area postal code. Search by keyword or category, or...
🥦 Kaufland.de Scraper
Scrape Kaufland.de, Germany's hypermarket and online marketplace: keyword/category/brand...
🥦 Instacart Scraper
Scrape Instacart grocery catalogs with per-store prices. Run keywords across several...
🥦 FoodHero Scraper
Scrape FoodHero surplus grocery deals across Canada by area, store or offer ID. Extract...

👉 Browse all abotapi scrapers

💬 Support & custom scrapers

  • 🐞 Found a bug or a missing field? Open a ticket on the Issues tab. We usually reply within hours.
  • 🛠️ Need another site, extra fields or a private build? Email abotapi@proton.me or message Telegram @abotapi.
  • ⭐ Enjoying it? A quick review on the actor page helps other users find it.