Kaufland Scraper — French Marketplace Products & Prices
Pricing
from $1.20 / 1,000 result scrapeds
Kaufland Scraper — French Marketplace Products & Prices
Scrape products from the Kaufland.fr marketplace: names, prices (EUR), sellers, brands, EAN codes, ratings, images and categories. Search by keyword, category or product URLs. No login, no cookies.
Pricing
from $1.20 / 1,000 result scrapeds
Rating
0.0
(0)
Developer
Studio Amba
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
13 hours ago
Last modified
Categories
Share
Kaufland.fr Scraper
Scrape product data from the Kaufland.fr marketplace, the French storefront of the Schwarz Group online marketplace (formerly real.de) with products from Kaufland direct sales and thousands of third-party sellers.
Search by keyword, pull a whole category, or hand it a list of product URLs. Get back clean, structured records with prices in EUR, sellers, brands, EAN codes, ratings, images and categories. Turn on two optional flags to also get every competing offer on a product and the contact details each seller publishes in its imprint (legal name, address, email, phone, VAT id). No login, no cookies.
Why use this actor?
Kaufland runs one marketplace platform across eight European countries (Germany, Austria, Czechia, Slovakia, Poland, Italy, France and the Netherlands) and its French catalogue changes constantly across thousands of independent sellers. This actor turns any keyword or category into a structured product feed you can drop into a spreadsheet, a pricing tool, or a database.
Typical users: brands tracking how their products are priced and sold across marketplace sellers, retailers doing competitive price monitoring, resellers sourcing products, analysts building assortment or market-share reports, and sales teams building lists of marketplace sellers with their published contact details.
What you get
- Real marketplace prices in EUR as numbers (not strings), plus price per
unit (e.g.
20.98 EUR/1kg) and strike-through / RRP where a product is on sale. - Seller name and seller id for every item, or
Kauflandfor direct sales. - Brand, EAN, category, ratings and review counts with high field coverage, because the data comes straight from Kaufland's own product API, not scraped HTML.
- All product images in full resolution.
- Every competing offer on a product (
fetchOffers): price, shipping cost, delivery window, fulfilment type and the seller behind each offer. - Seller contact details (
fetchSellerDetails): the legal name, legal form, address, email, phone, fax, VAT id, register court and register number from the imprint each seller publishes on Kaufland, plus the seller's country. - No login and no cookies. Nothing to configure beyond a keyword.
How to scrape Kaufland.fr data
- Add the actor to your Apify account.
- Enter a Search Query (a French keyword like 'café', 'ordinateur portable', 'casque audio'), or a Category ID, or paste Product URLs.
- Set Max Results to how many products you want.
- Optional: turn on Fetch all competing offers and/or Fetch seller contact details. Both are off by default; see the sections below.
- Run it. Download the results as JSON, CSV, Excel or feed them to an API.
Kaufland.fr sits behind Cloudflare and DataDome, so the actor routes its
requests through the Bright Data Web Unlocker, which
solves the bot challenge and returns the data. You do not need your own Bright
Data account. We supply the key and the actor runs without it. The
brightDataApiKey input exists only if you would rather bill Bright Data usage
to your own account.
Input
| Field | Type | Required | Description |
|---|---|---|---|
searchQuery | String | No | Keyword to search the marketplace (default: café). Products are discovered by keyword and enriched with full data. |
categoryId | Integer | No | A numeric Kaufland category id to pull instead of a keyword. Category ids appear in the category data of any scraped product. |
productUrls | Array | No | One or more https://www.kaufland.fr/product/<id>/ URLs to scrape directly (max 1000). |
maxResults | Integer | No | Maximum number of products to return (default: 100). |
fetchOffers | Boolean | No | Off by default. When off, a product row carries only the buy-box price and seller, not the other sellers' offers. On: adds offers[] with every competing offer. |
fetchSellerDetails | Boolean | No | Off by default. When off, seller is only a display name. On: adds sellerDetails with the seller's published contact record (and one per offer seller when fetchOffers is also on). |
oneRowPerOffer | Boolean | No | Off by default. On: one row per offer instead of one row per product (implies fetchOffers). |
maxOffersPerProduct | Integer | No | Cap on competing offers per product (default 100, max 1000). |
brightDataApiKey | String | No | Optional. Your own Bright Data Web Unlocker key, if you want the usage billed to your account. Leave empty to use ours. |
proxyConfiguration | Object | No | Apify proxy settings for auxiliary requests. |
Leave everything empty and the actor runs a default café search, so an empty
input {} still returns data.
Output
Each product row contains:
| Field | Type | Example |
|---|---|---|
name | String | "Café moulu DEK Intenso 6 x 250 g - Lavazza" |
brand | String | "Lavazza" |
price | Number | 37.38 |
currency | String | "EUR" |
originalPrice | Number | Strike-through price (null if not on sale) |
pricePerUnit | String | "24.92 EUR/1kg" |
discount | String | "-15%" (null if not on sale) |
ean | String | "5905811988330" |
sku | String | Kaufland offer id of the buy-box offer |
productId | String | "537930269" |
seller | String | "Schronisko_Bukowina" |
sellerId | String | "90235878" |
sellerCompanyName | String | Registered company name of the buy-box seller |
inStock | Boolean | true, false, or null when Kaufland does not say |
rating | Number | 4.86 |
reviewCount | Integer | 7 |
url | String | "https://www.kaufland.fr/product/537930269/" |
imageUrl | String | Primary product image URL |
imageUrls | Array | All product image URLs |
category | String | "Cafés moulus" |
scrapedAt | String | ISO 8601 timestamp |
Competing offers (fetchOffers)
With fetchOffers on, each row also carries offerCount and offers[]. One
offer looks like this:
| Field | Type | Example |
|---|---|---|
offerId | String | "388274035566" |
price | Number | 13.59 |
currency | String | "EUR" |
shipping | Number | 3.99 (0 = free shipping) |
totalPrice | Number | 17.58 (price + shipping) |
pricePerUnit | String | "135.90 EUR/1l" |
condition | String | "new" or "used" |
deliveryTime | String | Delivery window as shown on the site |
deliveryFrom / deliveryTo | String | Delivery window as ISO timestamps |
fulfillmentType | String | "seller" (shipped by the seller) or Kaufland fulfilment |
sellerId / sellerName | String | The seller behind the offer |
sellerShopUrl | String | The seller's shop page on Kaufland |
isDirectSeller | Boolean | true when the offer is sold by Kaufland itself |
returnPeriod | String | ISO 8601 duration, e.g. "P30D" |
sellerDetails | Object | The seller's contact record (only with fetchSellerDetails) |
With oneRowPerOffer on, the actor emits one row per offer instead: the product
fields plus a single offer object, and sellerDetails for that offer's seller.
Seller contact details (fetchSellerDetails)
With fetchSellerDetails on, each row carries sellerDetails for the buy-box
seller (and every offer carries its own sellerDetails when fetchOffers is
also on). The record is parsed from the imprint each seller publishes on
Kaufland:
| Field | Type | Example |
|---|---|---|
sellerId | String | "76996843" |
sellerName | String | "Smartpanther" |
legalName | String | "Smartpanther GmbH" |
legalForm | String | "GmbH" |
representatives | String | Managing directors / authorised representatives |
address | String | "Rose-Ausländer-Str. 2, 74523 Schwäbisch Hall" |
email | String | "info@smartpanther.de" |
phone | String | "+49 97816372" |
fax | String | Fax number when published |
vatId | String | "DE301628081" (validated country prefix + digits; null when the seller publishes no valid VAT id) |
registerCourt | String | Commercial register / court |
registerNumber | String | "HRB 87821" |
sellerCountry | String | ISO code of the seller's country, e.g. "DE", "PL", "CZ" |
sellerCountryName | String | Country name as Kaufland shows it |
sellerSince | String | Seller since, when Kaufland publishes it |
shopUrl | String | The seller's shop page on Kaufland |
imprintText | String | The full imprint as plain text, for anything the fields above do not cover |
Every field is nullable. A seller with a thin imprint gives a thin record. On
the runs behind this listing, email and phone were filled on most sellers and
the VAT id on most sellers with a valid EU number; expect fill rates below 100%
and check imprintText for anything the parser left null.
Note that sellers are often foreign to the storefront: a Polish or Czech seller
listing on Kaufland.fr publishes a Polish or Czech address. Use sellerCountry
to filter.
Example output
A real row from a live run with fetchOffers and fetchSellerDetails on
(offers trimmed to two):
{"name": "Café moulu DEK Intenso 6 x 250 g - Lavazza","brand": "Lavazza","price": 37.38,"currency": "EUR","pricePerUnit": "24.92 EUR/1kg","ean": "5905811988330","sku": "392646001965","productId": "537930269","seller": "Schronisko_Bukowina","sellerId": "90235878","sellerCompanyName": "Salon Smaków sp. z.o.o.","inStock": true,"rating": 5,"reviewCount": 1,"url": "https://www.kaufland.fr/product/537930269/","imageUrl": "https://media.cdn.kaufland.de/product-images/original/d04d1dfb5b8552b1d4ffccc29a691010.jpg","category": "Cafés moulus","offerCount": 1,"offers": [{"offerId": "392646001965","price": 37.38,"currency": "EUR","shipping": 4.99,"totalPrice": 42.37,"pricePerUnit": "24.92 EUR/1kg","condition": "new","deliveryTime": "Mi. 23. - Mo. 28. September","deliveryFrom": "2026-09-23T00:00:01+02:00","deliveryTo": "2026-09-28T23:59:59+02:00","fulfillmentType": "seller","sellerId": "90235878","sellerName": "Schronisko_Bukowina","sellerShopUrl": "https://www.kaufland.fr/shops/Schronisko_Bukowina/","isDirectSeller": false,"returnPeriod": "P14D","sellerDetails": {"sellerId": "90235878","sellerName": "Schronisko_Bukowina","legalName": "Salon Smaków","legalForm": "SALON SMAKÓW SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ","address": "ul. Jurgów 256/4, 34-532 Jurgów","email": "sklep@schroniskobukowina.pl","phone": "+48 455450048","vatId": "PL7361726147","registerCourt": null,"registerNumber": null,"sellerCountry": "PL"}}],"sellerDetails": {"sellerId": "90235878","sellerName": "Schronisko_Bukowina","legalName": "Salon Smaków","legalForm": "SALON SMAKÓW SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ","address": "ul. Jurgów 256/4, 34-532 Jurgów","email": "sklep@schroniskobukowina.pl","phone": "+48 455450048","vatId": "PL7361726147","registerCourt": null,"registerNumber": null,"sellerCountry": "PL"},"scrapedAt": "2026-09-21T18:07:02.857Z"}
How it works
Kaufland's own keyword search endpoints are blocked to automated access, so the actor works from Kaufland's public product API:
- Enumeration. A keyword search finds matching product ids across the marketplace; a category id or a list of product URLs skips straight to known products.
- Data. Product ids are sent in batches of 50 to Kaufland's product-tiles API, which returns clean JSON (prices, sellers, brands, EAN codes, ratings and images) with very high field coverage.
- Offers (optional). One request per product returns every competing offer with its seller.
- Seller details (optional). One request per distinct seller returns the published imprint, which is parsed per label into the contact fields. Kaufland obfuscates the published email addresses; the actor decodes them.
Long runs are migration-safe: products already written are not fetched again after a restart, and seller records are cached within the run.
Cost estimate
Per result cost (actor start fee plus per-result fee) depends on your plan and is shown on this page. Bright Data usage on our key is included. Requests per product, measured on live runs:
- Product rows only (default): about 0.05 requests per product (one search request per ~20 products plus one product-tiles request per 50). A run of 1,000 products is roughly 70 requests.
fetchOffers: +1 request per product (+1 per additional 100 offers).fetchSellerDetails: +1 request per distinct seller. With both flags on, a product with 3 competing offers costs about 4 requests. Runs with both flags on 100 products take 10-20 minutes.oneRowPerOffer: the number of result rows equals the number of offers, so a product with 20 offers is 20 billable results.
A run's usage cost only settles after the run reports SUCCEEDED; a cost read
mid-run from a partial dataset is far too low. Size your runs with
maxResults and maxOffersPerProduct.
Limitations
- Kaufland.fr is behind Cloudflare and DataDome; the actor reaches it through the Bright Data Web Unlocker (our key by default).
- Keyword search relevance and coverage depend on what is indexed publicly, so a
keyword run returns the most relevant products rather than a guaranteed
exhaustive list. Use
categoryIdfor category-scoped pulls. originalPriceanddiscountare only present when a product is actually on sale.- Seller contact fields come from what each seller publishes. The parser reads
the imprint labels in the storefront language; a seller who fills the imprint
unusually gets null fields (the raw text is always in
imprintText). Kaufland obfuscates published email addresses and may change how; the decoding is tested but is the part most likely to need maintenance. - Seller imprint data is published by the sellers under EU platform rules. You are responsible for using it lawfully (GDPR applies to sole traders' data).
- Data is scraped from the public marketplace and may change without notice. Respect the website's terms of service and use responsibly.
Related scrapers
The same actor exists for every Kaufland marketplace country:
- Kaufland.de Scraper — kaufland.de German marketplace
- Kaufland.at Scraper — kaufland.at Austrian marketplace
- Kaufland.cz Scraper — kaufland.cz Czech marketplace
- Kaufland.sk Scraper — kaufland.sk Slovak marketplace
- Kaufland.pl Scraper — kaufland.pl Polish marketplace
- Kaufland.it Scraper — kaufland.it Italian marketplace
- Kaufland.nl Scraper — kaufland.nl Dutch marketplace
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.