Kaufland.de Scraper icon

Kaufland.de Scraper

Scrape Kaufland.de, Germany's hypermarket and online marketplace: keyword/category/brand search or paste links. Current price, UVP was-price and…

Start using this actor on Apify ↗Need a custom scraper?Contact us ↗

Kaufland.de Scraper at a glance

Kaufland.de Scraper is a ready-to-run Apify actor from abotapi for collecting ecommerce data. Its documented output includes product id, title, price, currency and uvp / was price, which you can export as JSON, CSV or Excel or read through the Apify API. It costs $2.20 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify.

Runs on
Apify cloud: console, API, schedules and integrations
Data type
Ecommerce, Automation, Developer Tools
Region
Europe
Pricing
$2.20 per 1,000 results (Free plan), from $1.50 on paid plans
Output
Documented below · JSON, CSV, Excel
Inputs
24 options

Scrape Kaufland.de, Germany's hypermarket and online marketplace: keyword/category/brand search or paste links. Current price, UVP was-price and discount on Angebote deals, grocery unit price, brand, breadcrumb path, EAN, marketplace seller, variant matrix, per-category specs, and native reviews.

What Kaufland.de Scraper can do

  • UVP was-price and discount, never fabricated. When a product is reduced against its manufacturer's recommended price (UVP), the current price, the strike-through original price, and the computed discount amount and percentage come back structured. A full-price item simply returns null for these fields.
  • A dedicated deals mode. specialsOnly scrapes Kaufland's own Angebote facet directly, store-wide or scoped to a keyword and/or category.
  • Grocery unit pricing. EUR per kg, litre or other unit comes back as a structured value, not buried inside a price string.
  • Marketplace-aware. Kaufland.de is a multi-seller marketplace: every listing carries the selling partner's name, and full detail adds the seller's id, return period and the number of competing offers on the same listing.
  • Rich product identity on demand. Brand and manufacturer, full breadcrumb category path, EAN/GTIN, manufacturer part number, and flattened per-category technical specifications, which vary by product type and are never hardcoded to one vertical.
  • Complete native review history. Overall rating, review count, and every individual review with author, date, rating, title and body text, straight from Kaufland's own review system.

Choose what to collect

These inputs let you configure Kaufland.de Scraper - Marketplace Price, Deals & Reviews. Open the actor on Apify to enter your values and review the current options.

Supported input fields
InputWhat it controls
modestring · required'search' finds products by keyword and/or category with Kaufland's own filters, including Angebote/deals items. 'url' scrapes any product, category, or search-result page URL you paste, walking pagination forward automatically.

Choices: search, url

searchTermstringFree-text keyword, e.g. 'kaffee' or 'klimaanlage'. Combine with Category below to narrow, or leave empty and set only Category (and/or Specials only) to browse a whole department.
categorystringA Kaufland category id, e.g. '5801' (Kaffeebohnen). Find it as the trailing number in a category page URL: kaufland.de/c//~/. Narrows a keyword search, or browses the whole category when Search keyword is left empty.
brandstringOnly return products from this brand, e.g. 'Jacobs' or 'Bosch'. Matched against Kaufland's own brand filter for this search (exact match preferred, falls back to a partial match); ignored if the brand has no matching results for this search/category.
specialsOnlybooleanOnly return items currently in Kaufland's own deals facet (Angebote) -- vouchers, best-price badges, and UVP strike-through discounts. Combine with a keyword and/or category, or leave those empty to browse all current deals. Applies in both search and URL mode, but not as a plain override: for a pasted search-result url, this is OR'd with the url's own all_deals=true (turns on if either is set; a url that already carries all_deals=true can't be turned off by this input); for a pasted category url, only this input's value is used and the url's own parameters are dropped.
minPriceintegerOnly return products priced at or above this amount.
maxPriceintegerOnly return products priced at or below this amount.
Show 17 more inputs
More input fields
InputWhat it controls
sortBystringOrder of the returned results. Applies in both search and URL mode: the input is applied to the rebuilt listing request either way, and a pasted url's own sort parameter is not preserved.

Choices: natural, price-asc, price-desc, customer-reviews, newest-arrivals, bestsellers

urlsarrayPaste one or more Kaufland product pages (/product//), category pages (/c//~/), or search-result pages (/s/?search_value=). Pagination continues forward automatically from any page number already in the URL. Search keyword and Category are read from the pasted link instead of the fields above; brand, price range, Specials only and sort are still applied to category and search links. A pasted product link ignores all filters.
fetchDetailsbooleanAdds brand, full breadcrumb category path, EAN/GTIN, manufacturer part number, flattened technical specifications (varies per category), energy label, media gallery, per-variant matrix, marketplace seller detail, and competing-offer count. Current price, UVP was-price/discount, grocery unit price, and rating are already included without this toggle on search/category results.
fetchReviewsbooleanFetch each product's full native review history: overall rating, review count, and per-review author/date/rating/title/body. Products with no reviews simply return an empty list.
maxReviewsPerProductintegerCap on reviews kept per product when 'Fetch reviews' is on. 0 = all available, up to a ceiling of 500 per product; values above 500 are capped at 500.
keywordReviewsstringWhen 'Fetch reviews' is on, keep only reviews whose title or text contains this keyword (case-insensitive). Applied before the per-product cap. Leave empty to keep all reviews.
maxPagesintegerStop after this many result pages per search/category/URL entry. Leave empty for as many pages as needed (bounded by Max products total).
maxItemsintegerHard cap on total products returned across every search/category/URL entry. 0 = unlimited (still bounded by Max pages per search). Values above 100000 are capped at 100000.
resumeFromRunIdstringPaste a previous run ID or dataset ID to continue a large pull without returning or charging for products already collected there. For recurring monitoring of the same search, use Incremental mode below instead.
incrementalModebooleanTurn this on for daily or recurring monitoring. The first run returns every matching product as NEW. Later runs return only NEW, UPDATED and REAPPEARED products (a price cut, a new seller offer). Turn on Emit unchanged only when you also want unchanged rows returned. State is kept separately per search, filter and detail setup; use State key to name or share a campaign.
stateKeystringOptional. 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 search, filters and detail settings.
emitUnchangedbooleanOff by default. Turn on to also return products that have not changed since the last run, marked UNCHANGED. Unchanged rows are returned and charged like any other row.
emitExpiredbooleanOn by default. Returns products that were present in an earlier run but are no longer found, marked EXPIRED. Only produced after a run fully scanned the tracked search (never when Max products or Max pages cut it short, or when Resume was used), and never beyond Max products.
ignoreFieldsForChangesarrayOutput field names that should NOT make a product count as UPDATED, for example sellerCount or rating. Use a dotted path (for example seller.name) for a field inside a nested object. Ignored fields are still returned in the output. The per-fetch delivery cut-off countdown (delivery.cutOffTime) and the review ranking score and translation (reviews.items.score, reviews.items.translation) are always ignored.
mcpConnectorsarrayOptionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify -> Settings -> Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON; the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com).
notionParentPageUrlstringURL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors.
maxNotifyListingsintegerCap on items written to each connector per run. Does not affect the dataset.

Fields in the output

The documented dataset includes the fields below. Availability can depend on the source page and selected mode.

productIdProduct ID (text)
titleTitle (text)
pricePrice (number)
currencyCurrency (text)
originalPriceUVP / was price (number)
discountPercentDiscount % (number)
isOnSpecialOn special (boolean)
unitPriceUnit price (per kg/l) (object)
sellerSeller (text)
ratingRating (number)
reviewCountReviews (number)
urlURL (link)
Show 14 more fields
imageImage (image)
reviewsReviews (object)
brandBrand (text)
breadcrumbCategory path (array)
eanEAN (text)
gtinGTIN (text)
mpnMPN (text)
otherOffersInfoOther offers (object)
energyLabelEnergy label (object)
voucherVoucher (object)
changeTypeChange (text)
changedFieldsChanged fields (array)
firstSeenAtFirst seen (text)
lastSeenAtLast seen (text)

Example output

An example from this actor’s documentation. Values are illustrative; this is not a fresh live result.

{
  "productId": "500000001",
  "title": "Sample Coffee Machine, 1200W, Black",
  "url": "https://www.kaufland.de/product/500000001/",
  "image": "https://media.cdn.kaufland.de/product-images/400x400/sample.webp",
  "price": 54.95,
  "currency": "EUR",
  "originalPrice": 79.9,
  "discountAmount": 24.95,
  "discountPercent": 31.2,
  "isOnSpecial": true,
  "unitPrice": {
    "value": 54.95,
    "unit": "1kg"
  },
  "brand": "Sample Brand",
  "breadcrumb": [
    "Startseite",
    "Küche & Haushalt",
    "Haushaltsgeräte",
    "Kaffeevollautomaten"
  ],
  "ean": "4000000000001",
  "gtin": "4000000000001",
  "specifications": {
    "Gewicht": "3.5 kg",
    "Lautstärke": "65 dB",
    "Fernbedienung": "Ja"
  },
  "seller": {
    "name": "Sample-Handel",
    "id": "90000001",
    "returnPeriod": "P14D"
  },
  "rating": 4.7,
  "reviewCount": 331,
  "reviews": {
    "averageRating": 4.7,
    "totalReviewCount": 331,
    "items": [
      {
        "reviewId": 7000001,
        "author": "hm-1234567890",
        "rating": 5,
        "date": "23.06.2026",
        "title": "Sample review title",
        "body": "Sample review text describing the purchase experience.",
        "text": "Sample review text describing the purchase experience.",
        "isVerifiedPurchase": true
      }
    ]
  }
}

Ways to use this data

  • Price monitoring and repricing: track current price, UVP discount and unit price across a category or a list of competitors' listings.
  • Deal and promotion tracking: watch Kaufland's Angebote facet, store-wide or for a specific department, for new and ending discounts.
  • Marketplace research: compare sellers, return periods and the number of competing offers on the same product.
  • Catalog and PIM enrichment: pull brand, breadcrumb category path, EAN/GTIN, part number and structured specifications for product matching.
  • Reputation and review analysis: aggregate a product's full native review history, ratings and verified-purchase flags.
  • Grocery price-per-unit comparisons: collect structured EUR per kg/l unit pricing for basket comparisons.

Before you run

Start with a small input and check the resulting records against your expected fields. Source content and actor options can change; the current Apify listing is the reference for availability and pricing.

Questions about this actor

What data does Kaufland.de Scraper return?

The documented output for Kaufland.de Scraper includes product id, title, price, currency, uvp / was price, discount %, on special and unit price (per kg/l). Availability of each field depends on the source page and the selected mode.

How much does Kaufland.de Scraper cost?

It costs $2.20 per 1,000 results on the Apify Free plan and from $1.50 on paid plans, with smaller per-run or optional feature charges listed on Apify. The Apify listing shows the current rate for every plan.

Why did my run fail instead of returning an empty dataset?

No. If no page can be read, for example because your plan has no residential access or the connection setting was changed away from residential, the run ends as FAILED with a clear message in the log, so an empty dataset is never reported as a successful run. If the connection is lost partway through, the actor stops retrying for the rest of that run and keeps whatever was already collected; check the run log for a note about this. If the message does not explain the failure, write to contact@abotapi.com.

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 a summary of results into Notion, Linear or Airtable.

Ready to collect with Kaufland.de Scraper?

Run it on Apify with your own input and export the results as JSON, CSV or Excel.