Kleinanzeigen.de Scraper avatar

Kleinanzeigen.de Scraper

Pricing

from $3.50 / 1,000 results

Go to Apify Store
Kleinanzeigen.de Scraper

Kleinanzeigen.de Scraper

Kleinanzeigen scraper & API (Germany classifieds): search listings by keyword and category and export title, price, description, location, seller, attributes, photos, date and URL. German marketplace and second-hand market data plus seller lead gen — fast, no login.

Pricing

from $3.50 / 1,000 results

Rating

0.0

(0)

Developer

Haketa

Haketa

Maintained by Community

Actor stats

0

Bookmarked

22

Total users

1

Monthly active users

a day ago

Last modified

Features

Limited permissions

Share

Kleinanzeigen.de Scraper — German Classifieds Data Extractor for Cars, Real Estate, Electronics & Marketplace Leads

Extract structured classified listings from Kleinanzeigen.de — Germany's largest online marketplace (formerly eBay Kleinanzeigen) with 50M+ active ads. Pull normalized EUR prices, price types (VB / Festpreis / Zu verschenken), 5-digit German postal codes (PLZ), ISO posting dates, seller profiles (Privat vs. Gewerblich), vehicle specifications (Kilometerstand, Erstzulassung, Kraftstoff, Leistung), real estate metrics (Wohnfläche, Zimmer, Kaltmiete, Nebenkosten), view counts, and full photo galleries. Built for DACH price intelligence, used-car arbitrage, rental market analytics, reseller sourcing, and commercial dealer lead generation.

Apify Actor


⚡ At a glance

CapabilityDetails
Target PlatformKleinanzeigen.de (Germany's #1 classifieds platform, formerly eBay Kleinanzeigen)
Input ModesCategory dropdown · City dropdown (Berlin, München, Hamburg, etc.) · Search keyword · Custom searchUrls
Core Data ExtractedlistingId, title, price (EUR), priceType (VB/Festpreis), location, postalCode (PLZ), postedDate, imageUrl, listingUrl
Detail Enrichment (scrapeDetails)Full description, all gallery photos, viewCount, sellerName, sellerType (Privat/Gewerblich), phone, vehicle & property specs
Category-Specific SchemasVehicles (c216): kilometerstand, erstzulassung, kraftstoff, getriebe, leistung, fahrzeugtyp, hubraum
Real Estate (c195/c203/c208): wohnflaeche, zimmer, kaltmiete, nebenkosten, etage, verfuegbarAb
Pagination & ScaleAutomatic /seite:N pagination (maxPages: 0 = unlimited, governed by maxListings up to 1,000+ listings)
DeduplicationAutomatic cross-page deduplication by listingId (data-adid) — 0% duplicate records
Export FormatsJSON, JSONL, CSV, Excel (XLSX), XML, HTML Table, REST API, Webhooks

🔎 Why scrape Kleinanzeigen.de?

With over 50 million active listings and 35+ million monthly users, Kleinanzeigen.de is the pulse of the German consumer and small-business economy. It is the primary marketplace where Germans buy and sell used cars, rent apartments, trade smartphones and electronics, furnish homes, and advertise local services.

However, turning Kleinanzeigen into structured business data is challenging without a purpose-built extractor:

  • German formatting conventions: Prices use dots as thousands separators and commas for decimals (18.990,50 € VB), while dates are written in relative German natural language (Heute, 14:20, Gestern, vor 3 Tagen, 28.04.2026).
  • Postal codes embedded in strings: The 5-digit German Postleitzahl (PLZ) is concatenated inside the location label (80331 München) and must be parsed cleanly for geo-analytics.
  • Category-specific attribute tables: A used BMW in Autos (c216) exposes Kilometerstand, Erstzulassung, and Kraftstoffart, whereas a Berlin apartment in Mietwohnungen (c203) exposes Wohnfläche, Zimmer, Kaltmiete, and Nebenkosten.

This Kleinanzeigen scraper normalizes all of these signals automatically into a unified, flat JSON schema — allowing you to run fast list-level sweeps across thousands of ads or enable scrapeDetails: true for deep per-listing enrichment.


✨ Key features of this Kleinanzeigen data extractor

  • 🗂️ Zero-Code Dropdowns + Custom Search URLs: Pick a category (Cars, Apartments for rent, Houses for sale, Phones, Electronics, Home & garden, Fashion, Jobs, etc.), select a German city (Berlin, Hamburg, München, Köln, Frankfurt, Stuttgart, Düsseldorf, Leipzig, etc.), and type an optional keyword — or paste any pre-filtered Kleinanzeigen URL into searchUrls.
  • 🔓 Unlocked 1,000+ Deep Pagination: With maxPages: 0 by default, the scraper walks /seite:1, /seite:2, /seite:3... automatically until maxListings is reached, scaling seamlessly to 1,000+ listings across categories and cities.
  • 💶 German Price & Price-Type Normalization: Converts 1.990 € VB into numeric price: 1990, currency: "EUR", and priceType: "VB" (VB negotiable, Festpreis fixed, or Zu verschenken free giveaway).
  • 📅 German Relative Date Parser: Normalizes "Heute", "Gestern", "vor 4 Tagen", and "DD.MM.YYYY" strings into standard ISO YYYY-MM-DD dates (postedDate).
  • 🚗 Complete Automotive Schema (Autos): Extracts kilometerstand (even on search cards!), plus erstzulassung, kraftstoff, getriebe, leistung, fahrzeugtyp, and hubraum on detail pages.
  • 🏢 Complete Real Estate Schema (Immobilien): Extracts wohnflaeche (m²), zimmer (room count), kaltmiete (base rent in EUR), nebenkosten (utilities in EUR), etage (floor), and verfuegbarAb (move-in date).
  • 👤 Seller & Commercial Dealer Signals: Distinguishes Privat (private C2C seller) from Gewerblich (commercial dealer), extracts sellerName, sellerMemberSince, viewCount, and captures phone numbers published by commercial sellers.

🎯 High-value use cases & DACH market intelligence

1. Used-Car Arbitrage & Automotive Dealer Intelligence

Monitor s-autos/c216 across Germany or specific metros. Combine price, kilometerstand, erstzulassung, kraftstoff, and getriebe to spot underpriced vehicles within minutes of posting, benchmark dealer inventory, and build B2B lead lists of Gewerblich car dealerships.

2. German Real Estate Rental & Purchase Comps

Track s-wohnung-mieten/c203 and s-haus-kaufen/c208 across Berlin, München, Hamburg, Frankfurt, and Köln. Compute live Kaltmiete per m² by 5-digit postalCode (PLZ) and monitor nebenkosten trends.

3. E-Commerce Reselling, Recommerce & Flipping

Sweep high-demand consumer electronics (iPhone, PlayStation 5, MacBook, Nintendo Switch, Rolex, Lego) or Zu verschenken giveaways. Filter downstream on priceType == "VB" and sellerType == "Privat" to source high-margin second-hand inventory.

4. Brand Protection, Grey-Market & Counterfeit Monitoring

Run automated keyword sweeps for luxury goods, power tools, and branded apparel. Use sellerType, images, description, and scrapedAt timestamps to audit unauthorized commercial sellers.

5. Demand Velocity & View-Count Analytics

With scrapeDetails: true, every listing includes its live viewCount. Combine viewCount with postedDate to calculate views-per-day and identify the fastest-moving product categories in Germany.


📥 Input parameters

All input fields are optional. Running with empty filters automatically collects a balanced multi-category sample across Germany's top classified categories.

ParameterTypeDefault / PrefillDescription
categorystring"" (All categories)Category preset from the dropdown (s-autos/c216, s-immobilien/c195, s-wohnung-mieten/c203, s-haus-kaufen/c208, s-handy-telekommunikation/c173, s-multimedia-elektronik/c161, s-haus-garten/c80, s-mode-beauty/c153, s-jobs/c102, etc.).
locationstring"" (All of Germany)German city from the dropdown (berlin, hamburg, muenchen, koeln, frankfurt, stuttgart, duesseldorf, leipzig, dortmund, essen, bremen, dresden, hannover, nuernberg, etc.).
keywordstring""Optional search keyword (e.g., "bmw 320d", "iphone 15", "balkon"). Works standalone or combined with category and location.
locationCustomstring""Advanced: Custom Kleinanzeigen city slug if not in the dropdown (e.g., "regensburg", "freiburg").
searchUrlsarray<string>[]Advanced: Direct Kleinanzeigen search or category URLs (e.g., "https://www.kleinanzeigen.de/s-autos/c216"). Overrides category, location, and keyword when provided.
scrapeDetailsbooleanfalseOpen each listing's detail page to extract full description, complete image gallery, viewCount, seller profile (Privat/Gewerblich), phone, and full vehicle/property attribute tables.
maxListingsintegerDefault 0 (Prefill 50)Maximum total listings to collect (0 = unlimited). Set to 1000+ for deep multi-page extraction.
maxPagesinteger0Maximum search result pages per task (~25 listings/page). 0 = unlimited (governed by maxListings).
requestDelayinteger2000Delay between requests in milliseconds (0 to 15000).
proxyConfigurationobject{ "useApifyProxy": false }Optional Apify Proxy configuration. Enable Apify Proxy for very large multi-thousand-listing runs.

🛠️ Input recipes & examples

Recipe 1: Fast 1,000+ used-car search sweep (Autos)

Extract 1,000 used-car listings across Germany with price, location, postal code, and mileage (kilometerstand) directly from search cards:

{
"category": "s-autos/c216",
"location": "",
"scrapeDetails": false,
"maxListings": 1000,
"maxPages": 0,
"requestDelay": 1500
}

Recipe 2: Deep vehicle specs & dealer enrichment in München

Pull BMW listings in Munich with full detail-page enrichment (erstzulassung, kraftstoff, getriebe, leistung, sellerType, viewCount):

{
"category": "s-autos/c216",
"location": "muenchen",
"keyword": "bmw 320d",
"scrapeDetails": true,
"maxListings": 150,
"maxPages": 0
}

Recipe 3: Berlin apartment rentals (Mietwohnungen) with m² & Kaltmiete

Scrape Berlin rental apartments with full property attributes (wohnflaeche, zimmer, kaltmiete, nebenkosten, etage):

{
"category": "s-wohnung-mieten/c203",
"location": "berlin",
"scrapeDetails": true,
"maxListings": 250,
"maxPages": 0
}

📤 Output schema & field reference

Every record shares a consistent flat JSON structure so vehicles, apartments, electronics, and general classifieds can be stored in a single table.

🏷️ Core Listing & Price Fields (Search Card + Detail)

FieldTypeCoverageDescription
listingIdstring🟢 High (100%)Unique Kleinanzeigen ad ID (data-adid).
titlestring🟢 High (100%)Listing title as displayed on Kleinanzeigen.
pricenumber🟢 High (~92%)Numeric price in EUR (parsed from German format 1.990,50 € → 1990.5). null on free giveaways or price-on-request ads.
priceTypestring🟢 High (~80%)"VB" (negotiable), "Festpreis" (fixed price), "Zu verschenken" (free), or null.
currencystring🟢 High (~92%)"EUR" whenever a numeric price is present.
categorystring🟢 High (~90%)Category label from card tags or detail breadcrumbs.
locationstring🟢 High (100%)Postal code and city/district string (e.g., "80331 München", "10405 Berlin").
postalCodestring🟢 High (~99%)Extracted 5-digit German postal code (PLZ, e.g., "80331").
postedDatestring🟢 High (~95%)Normalized ISO date (YYYY-MM-DD) parsed from "Heute", "Gestern", or "DD.MM.YYYY".
imageUrlstring🟢 High (~96%)Primary thumbnail/card image URL.
listingUrlstring🟢 High (100%)Canonical URL to the listing on kleinanzeigen.de.
scrapedAtstring🟢 High (100%)ISO-8601 UTC timestamp of extraction.

👤 Seller & Engagement Fields (scrapeDetails: true)

FieldTypeCoverage (Detail Mode)Description
sellerNamestring🟢 High (~95%)Seller display name or commercial dealership name.
sellerTypestring🟢 High (~95%)"Privat" (private individual) or "Gewerblich" (commercial business/dealer).
sellerMemberSincestring🟢 High (~90%)Date the seller joined Kleinanzeigen (e.g., "März 2017", "12.05.2019").
sellerRatingstring🟡 ConditionalSeller satisfaction badge when exposed on the profile block.
descriptionstring🟢 High (~98%)Full listing description text (up to 2,000 characters).
imagesarray<string>🟢 High (~96%)Complete array of full-resolution gallery image URLs.
viewCountnumber🟢 High (~99%)Total ad view counter (Aufrufe).
conditionstring🟡 ConditionalItem condition ("Neu", "Gebraucht", "Defekt", "Generalüberholt").
phonestring🟡 Conditional (Gewerblich)Direct phone number when published by commercial (Gewerblich) sellers.

🚗 Automotive Fields (s-autos/c216)

FieldTypeCoverage (Autos)Description
kilometerstandnumber🟢 High (~98% Card & Detail)Vehicle mileage in kilometers (e.g., 112400). Extracted on both search cards and detail pages!
erstzulassungstring🟢 High (~95% Detail)First registration date (EZ, e.g., "06/2018", "Dezember 2019").
kraftstoffstring🟢 High (~95% Detail)Fuel type ("Benzin", "Diesel", "Elektro", "Hybrid", "LPG").
getriebestring🟢 High (~95% Detail)Transmission ("Automatik", "Manuell").
leistungstring🟢 High (~90% Detail)Engine power output (e.g., "190 PS").
fahrzeugtypstring🟢 High (~90% Detail)Body style ("Kombi", "Limousine", "SUV/Geländewagen", "Kleinwagen", "Cabrio").
hubraumstring🟡 Conditional (Detail)Engine displacement when provided by seller.

🏠 Real Estate Fields (s-immobilien/c195, c203, c208)

FieldTypeCoverage (Immo Detail)Description
wohnflaechestring🟢 High (~95% Detail)Living area in square meters (e.g., "82 m²").
zimmernumber🟢 High (~95% Detail)Total room count (e.g., 3).
kaltmietenumber🟢 High (Rentals Detail)Base monthly rent in EUR excluding utilities.
nebenkostennumber🟡 Conditional (Detail)Monthly utility/service charges (Nebenkosten) in EUR.
etagestring🟡 Conditional (Detail)Floor number (e.g., "3", "Erdgeschoss", "Dachgeschoss").
verfuegbarAbstring🟡 Conditional (Detail)Available move-in date (e.g., "01.07.2026", "sofort").

📋 Sample JSON output

{
"listingId": "2123456789",
"title": "BMW 320d Touring M-Sport Pano LED Navi",
"price": 18990,
"priceType": "VB",
"currency": "EUR",
"category": "Autos",
"condition": "Gebraucht",
"location": "80331 München",
"postalCode": "80331",
"postedDate": "2026-11-09",
"sellerName": "Auto Bayern GmbH",
"sellerType": "Gewerblich",
"sellerMemberSince": "März 2017",
"description": "BMW 320d Touring, M-Sportpaket, Panoramadach, LED-Scheinwerfer, Professional Navi, beheizbare Sitze, 1. Hand, scheckheftgepflegt...",
"imageUrl": "https://img.kleinanzeigen.de/api/v1/prod-ads/images/ab/abc123.jpg",
"images": [
"https://img.kleinanzeigen.de/api/v1/prod-ads/images/ab/abc123.jpg"
],
"viewCount": 432,
"phone": "+49891234567",
"kilometerstand": 112400,
"erstzulassung": "06/2018",
"kraftstoff": "Diesel",
"getriebe": "Automatik",
"leistung": "190 PS",
"fahrzeugtyp": "Kombi",
"hubraum": "1995 ccm",
"wohnflaeche": null,
"zimmer": null,
"kaltmiete": null,
"nebenkosten": null,
"etage": null,
"verfuegbarAb": null,
"listingUrl": "https://www.kleinanzeigen.de/s-anzeige/bmw-320d-touring/2123456789-216-5941",
"scrapedAt": "2026-11-10T02:30:00.000Z"
}

🔁 Pagination, scale & performance

  • Automatic /seite:N Deep Pagination: Each Kleinanzeigen search page returns ~25 listings. When maxPages is 0 (the default), the actor automatically walks /seite:1, /seite:2, /seite:3... until totalSaved reaches your maxListings target (including 1,000+ listings) or the search results end.
  • Multi-Category & Multi-URL Scaling: When running with multiple searchUrls or in multi-category discovery mode, the scraper processes each search sequentially and deduplicates every ad by listingId.
  • Speed Tip: List-only mode (scrapeDetails: false) is 5–8× faster than detail mode and already captures title, price, priceType, location, postalCode, postedDate, imageUrl, listingUrl, and kilometerstand (for cars). Enable scrapeDetails: true when you specifically need full descriptions, seller profiles, view counts, or full vehicle/apartment attribute tables.

💻 API & integration examples

Python (apify-client)

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("haketa/kleinanzeigen-scraper").call(run_input={
"category": "s-autos/c216",
"location": "berlin",
"keyword": "golf 8",
"scrapeDetails": False,
"maxListings": 500,
"maxPages": 0,
})
for ad in client.dataset(run["defaultDatasetId"]).iterate_items():
print(ad["listingId"], ad["title"], ad["price"], ad["kilometerstand"], ad["postalCode"])

Node.js (apify-client)

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('haketa/kleinanzeigen-scraper').call({
searchUrls: ['https://www.kleinanzeigen.de/s-wohnung-mieten/muenchen/c203l6411'],
scrapeDetails: true,
maxListings: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(`Extracted ${items.length} Munich rental listings`);

🗺️ German categories & city slugs reference

Supported Category Dropdown Presets (category)

Category ValueEnglish LabelGerman Marketplace Section
""All categoriesNationwide or city-wide search across all 50M+ ads
s-autos/c216Cars (Autos)Used & dealer passenger cars (kilometerstand, erstzulassung, kraftstoff, leistung)
s-auto-rad-boot/c210Vehicles: car, bike & boatFull automotive, motorcycle, camper, boat & parts vertical
s-immobilien/c195Real estate (all)All residential and commercial real estate listings
s-wohnung-mieten/c203Apartments for rentRental apartments (wohnflaeche, zimmer, kaltmiete, nebenkosten, etage)
s-haus-kaufen/c208Houses for saleSingle-family and multi-family houses for sale
s-handy-telekommunikation/c173Phones & telecomSmartphones (iPhone, Samsung, Xiaomi), tablets & accessories
s-multimedia-elektronik/c161Electronics & multimediaLaptops, PCs, gaming consoles, cameras, TVs & audio gear
s-haus-garten/c80Home & gardenFurniture, kitchen appliances, DIY tools & garden equipment
s-mode-beauty/c153Fashion & beautyApparel, sneakers, watches, luxury handbags & cosmetics
s-familie-kind-baby/c17Family, kids & babyStrollers, children's clothing, nursery furniture & baby gear
s-musik-filme-buecher/c73Music, films & booksMusical instruments, vinyl records, books & media
s-spielzeug/c23ToysLego sets, board games, action figures & collectibles
s-sport-camping/c230Sport & campingFitness gear, bicycles, outdoor & camping equipment
s-haustiere/c130PetsPet supplies, accessories & animal listings
s-eintrittskarten-tickets/c231Tickets & eventsConcert, festival, theater & Bundesliga sports tickets
s-zu-verschenken-tauschen/c272Free stuff / giveawaysZu verschenken zero-cost pickup items & local swaps
s-jobs/c102JobsLocal full-time, part-time, mini-job & trade vacancies

Major German City Presets (location)

City SlugGerman MetroState (Bundesland)Primary Market Signals
berlinBerlinBerlinLargest listing volume in Germany, high-velocity apartment rentals & electronics
muenchenMünchen (Munich)BayernHighest property & rental prices, premium used-car and luxury resale market
hamburgHamburgHamburgNorthern Germany hub for autos, apartments, furniture & maritime goods
koelnKöln (Cologne)Nordrhein-WestfalenDense Rhineland consumer marketplace & student rental market
frankfurtFrankfurt am MainHessenFinancial hub, high-income electronics, automotive & expat housing
stuttgartStuttgartBaden-WürttembergCore automotive region (Mercedes-Benz / Porsche) with deep used-car inventory
duesseldorfDüsseldorfNordrhein-WestfalenFashion, luxury goods, commercial dealers & Rhine-Ruhr real estate
leipzig / dresdenLeipzig / DresdenSachsenFast-growing Eastern German rental, residential investment & auto markets
dortmund / essen / duisburg / bochumRuhrgebiet MetrosNordrhein-WestfalenHigh-density C2C goods, used vehicles & affordable housing comps
hannover / bremen / nuernbergRegional CapitalsNI / HB / BYMajor regional trade, logistics, automotive & residential hubs

🔌 Workflow automation & BI integrations

  1. Automated Used-Car & Arbitrage Alerts (Make / Zapier / n8n): Schedule the scraper to run every 30–60 minutes on your target category or searchUrls, filter new records where price is 15%+ below category median, and push instant notifications with title, price, kilometerstand, postalCode, and listingUrl to Slack or Telegram.
  2. Real Estate Rent-Index Dashboards (Power BI / Looker / Tableau): Export s-wohnung-mieten/c203 daily across German cities to compute median kaltmiete per m² (wohnflaeche) grouped by 5-digit postalCode (PLZ).
  3. CRM Dealer Enrichment (HubSpot / Pipedrive / Salesforce): Run with scrapeDetails: true on commercial categories, filter for sellerType == "Gewerblich", and sync sellerName, phone, location, and postalCode into your B2B sales pipeline.

⚠️ Known limitations

  • Private seller phone numbers: Kleinanzeigen hides phone numbers for Privat (consumer) sellers behind its internal messaging relay; phone is populated only when a Gewerblich (commercial) seller publishes a direct tel: number on the ad.
  • Detail mode runtime: Because scrapeDetails: true opens each listing's individual page in a browser context, keep maxListings moderate (50–300) when detail enrichment is enabled, or use scrapeDetails: false for fast 1,000+ listing sweeps.

❓ Frequently Asked Questions

How many listings can I scrape in a single run?

Set maxListings: 1000 (or 0 for unlimited) and leave maxPages: 0. The scraper will paginate through result pages (/seite:N) until your target count is reached.

Can I use custom Kleinanzeigen filter URLs (price range, radius, seller type)?

Yes! Configure any filter directly on kleinanzeigen.de (e.g., price range preis:1000:5000, commercial sellers anbieter:gewerblich, radius search), copy the browser URL, and paste it into searchUrls.

Why are vehicle or real-estate fields null when scrapeDetails is false?

Search result cards only display summary data (title, price, location, postalCode, postedDate, and kilometerstand for cars). Full attribute tables (erstzulassung, kraftstoff, wohnflaeche, kaltmiete, sellerName, viewCount) live on the detail page and populate when scrapeDetails: true.



📋 Changelog

VersionDateHighlights
v1.22026-11Unlocked 1,000+ deep pagination & faster prefill: Changed maxPages default from 10 to 0 (unlimited, governed by maxListings), removed EMPTY_RUN_ITEM_CAP clamping when users request maxListings > 100, optimized default prefill to maxListings: 50 for rapid execution, and added maxItems/maxRecords input alias support.
v1.12026-11Updated search-card and detail-page selectors for Kleinanzeigen's latest markup, added hydration-aware detail waiting for .addetailslist--detail, and refined zimmer and vehicle attribute extraction.
v1.02026-05Initial release with German price/date normalization, vehicle (c216) and real estate (c195/c203) schemas, and searchUrls support.
⌂ 换网址