Kleinanzeigen.de Scraper
Pricing
from $3.50 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
22
Total users
1
Monthly active users
a day ago
Last modified
Categories
Features
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 (Privatvs.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.
⚡ At a glance
| Capability | Details |
|---|---|
| Target Platform | Kleinanzeigen.de (Germany's #1 classifieds platform, formerly eBay Kleinanzeigen) |
| Input Modes | Category dropdown · City dropdown (Berlin, München, Hamburg, etc.) · Search keyword · Custom searchUrls |
| Core Data Extracted | listingId, 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 Schemas | Vehicles (c216): kilometerstand, erstzulassung, kraftstoff, getriebe, leistung, fahrzeugtyp, hubraumReal Estate ( c195/c203/c208): wohnflaeche, zimmer, kaltmiete, nebenkosten, etage, verfuegbarAb |
| Pagination & Scale | Automatic /seite:N pagination (maxPages: 0 = unlimited, governed by maxListings up to 1,000+ listings) |
| Deduplication | Automatic cross-page deduplication by listingId (data-adid) — 0% duplicate records |
| Export Formats | JSON, 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)exposesKilometerstand,Erstzulassung, andKraftstoffart, whereas a Berlin apartment inMietwohnungen (c203)exposesWohnfläche,Zimmer,Kaltmiete, andNebenkosten.
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 intosearchUrls. - 🔓 Unlocked 1,000+ Deep Pagination: With
maxPages: 0by default, the scraper walks/seite:1,/seite:2,/seite:3... automatically untilmaxListingsis reached, scaling seamlessly to 1,000+ listings across categories and cities. - 💶 German Price & Price-Type Normalization: Converts
1.990 € VBinto numericprice: 1990,currency: "EUR", andpriceType: "VB"(VBnegotiable,Festpreisfixed, orZu verschenkenfree giveaway). - 📅 German Relative Date Parser: Normalizes
"Heute","Gestern","vor 4 Tagen", and"DD.MM.YYYY"strings into standard ISOYYYY-MM-DDdates (postedDate). - 🚗 Complete Automotive Schema (
Autos): Extractskilometerstand(even on search cards!), pluserstzulassung,kraftstoff,getriebe,leistung,fahrzeugtyp, andhubraumon detail pages. - 🏢 Complete Real Estate Schema (
Immobilien): Extractswohnflaeche(m²),zimmer(room count),kaltmiete(base rent in EUR),nebenkosten(utilities in EUR),etage(floor), andverfuegbarAb(move-in date). - 👤 Seller & Commercial Dealer Signals: Distinguishes
Privat(private C2C seller) fromGewerblich(commercial dealer), extractssellerName,sellerMemberSince,viewCount, and capturesphonenumbers 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.
| Parameter | Type | Default / Prefill | Description |
|---|---|---|---|
category | string | "" (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.). |
location | string | "" (All of Germany) | German city from the dropdown (berlin, hamburg, muenchen, koeln, frankfurt, stuttgart, duesseldorf, leipzig, dortmund, essen, bremen, dresden, hannover, nuernberg, etc.). |
keyword | string | "" | Optional search keyword (e.g., "bmw 320d", "iphone 15", "balkon"). Works standalone or combined with category and location. |
locationCustom | string | "" | Advanced: Custom Kleinanzeigen city slug if not in the dropdown (e.g., "regensburg", "freiburg"). |
searchUrls | array<string> | [] | Advanced: Direct Kleinanzeigen search or category URLs (e.g., "https://www.kleinanzeigen.de/s-autos/c216"). Overrides category, location, and keyword when provided. |
scrapeDetails | boolean | false | Open each listing's detail page to extract full description, complete image gallery, viewCount, seller profile (Privat/Gewerblich), phone, and full vehicle/property attribute tables. |
maxListings | integer | Default 0 (Prefill 50) | Maximum total listings to collect (0 = unlimited). Set to 1000+ for deep multi-page extraction. |
maxPages | integer | 0 | Maximum search result pages per task (~25 listings/page). 0 = unlimited (governed by maxListings). |
requestDelay | integer | 2000 | Delay between requests in milliseconds (0 to 15000). |
proxyConfiguration | object | { "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)
| Field | Type | Coverage | Description |
|---|---|---|---|
listingId | string | 🟢 High (100%) | Unique Kleinanzeigen ad ID (data-adid). |
title | string | 🟢 High (100%) | Listing title as displayed on Kleinanzeigen. |
price | number | 🟢 High (~92%) | Numeric price in EUR (parsed from German format 1.990,50 € → 1990.5). null on free giveaways or price-on-request ads. |
priceType | string | 🟢 High (~80%) | "VB" (negotiable), "Festpreis" (fixed price), "Zu verschenken" (free), or null. |
currency | string | 🟢 High (~92%) | "EUR" whenever a numeric price is present. |
category | string | 🟢 High (~90%) | Category label from card tags or detail breadcrumbs. |
location | string | 🟢 High (100%) | Postal code and city/district string (e.g., "80331 München", "10405 Berlin"). |
postalCode | string | 🟢 High (~99%) | Extracted 5-digit German postal code (PLZ, e.g., "80331"). |
postedDate | string | 🟢 High (~95%) | Normalized ISO date (YYYY-MM-DD) parsed from "Heute", "Gestern", or "DD.MM.YYYY". |
imageUrl | string | 🟢 High (~96%) | Primary thumbnail/card image URL. |
listingUrl | string | 🟢 High (100%) | Canonical URL to the listing on kleinanzeigen.de. |
scrapedAt | string | 🟢 High (100%) | ISO-8601 UTC timestamp of extraction. |
👤 Seller & Engagement Fields (scrapeDetails: true)
| Field | Type | Coverage (Detail Mode) | Description |
|---|---|---|---|
sellerName | string | 🟢 High (~95%) | Seller display name or commercial dealership name. |
sellerType | string | 🟢 High (~95%) | "Privat" (private individual) or "Gewerblich" (commercial business/dealer). |
sellerMemberSince | string | 🟢 High (~90%) | Date the seller joined Kleinanzeigen (e.g., "März 2017", "12.05.2019"). |
sellerRating | string | 🟡 Conditional | Seller satisfaction badge when exposed on the profile block. |
description | string | 🟢 High (~98%) | Full listing description text (up to 2,000 characters). |
images | array<string> | 🟢 High (~96%) | Complete array of full-resolution gallery image URLs. |
viewCount | number | 🟢 High (~99%) | Total ad view counter (Aufrufe). |
condition | string | 🟡 Conditional | Item condition ("Neu", "Gebraucht", "Defekt", "Generalüberholt"). |
phone | string | 🟡 Conditional (Gewerblich) | Direct phone number when published by commercial (Gewerblich) sellers. |
🚗 Automotive Fields (s-autos/c216)
| Field | Type | Coverage (Autos) | Description |
|---|---|---|---|
kilometerstand | number | 🟢 High (~98% Card & Detail) | Vehicle mileage in kilometers (e.g., 112400). Extracted on both search cards and detail pages! |
erstzulassung | string | 🟢 High (~95% Detail) | First registration date (EZ, e.g., "06/2018", "Dezember 2019"). |
kraftstoff | string | 🟢 High (~95% Detail) | Fuel type ("Benzin", "Diesel", "Elektro", "Hybrid", "LPG"). |
getriebe | string | 🟢 High (~95% Detail) | Transmission ("Automatik", "Manuell"). |
leistung | string | 🟢 High (~90% Detail) | Engine power output (e.g., "190 PS"). |
fahrzeugtyp | string | 🟢 High (~90% Detail) | Body style ("Kombi", "Limousine", "SUV/Geländewagen", "Kleinwagen", "Cabrio"). |
hubraum | string | 🟡 Conditional (Detail) | Engine displacement when provided by seller. |
🏠 Real Estate Fields (s-immobilien/c195, c203, c208)
| Field | Type | Coverage (Immo Detail) | Description |
|---|---|---|---|
wohnflaeche | string | 🟢 High (~95% Detail) | Living area in square meters (e.g., "82 m²"). |
zimmer | number | 🟢 High (~95% Detail) | Total room count (e.g., 3). |
kaltmiete | number | 🟢 High (Rentals Detail) | Base monthly rent in EUR excluding utilities. |
nebenkosten | number | 🟡 Conditional (Detail) | Monthly utility/service charges (Nebenkosten) in EUR. |
etage | string | 🟡 Conditional (Detail) | Floor number (e.g., "3", "Erdgeschoss", "Dachgeschoss"). |
verfuegbarAb | string | 🟡 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:NDeep Pagination: Each Kleinanzeigen search page returns ~25 listings. WhenmaxPagesis0(the default), the actor automatically walks/seite:1,/seite:2,/seite:3... untiltotalSavedreaches yourmaxListingstarget (including 1,000+ listings) or the search results end. - Multi-Category & Multi-URL Scaling: When running with multiple
searchUrlsor in multi-category discovery mode, the scraper processes each search sequentially and deduplicates every ad bylistingId. - Speed Tip: List-only mode (
scrapeDetails: false) is 5–8× faster than detail mode and already capturestitle,price,priceType,location,postalCode,postedDate,imageUrl,listingUrl, andkilometerstand(for cars). EnablescrapeDetails: truewhen 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 ApifyClientclient = 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 Value | English Label | German Marketplace Section |
|---|---|---|
"" | All categories | Nationwide or city-wide search across all 50M+ ads |
s-autos/c216 | Cars (Autos) | Used & dealer passenger cars (kilometerstand, erstzulassung, kraftstoff, leistung) |
s-auto-rad-boot/c210 | Vehicles: car, bike & boat | Full automotive, motorcycle, camper, boat & parts vertical |
s-immobilien/c195 | Real estate (all) | All residential and commercial real estate listings |
s-wohnung-mieten/c203 | Apartments for rent | Rental apartments (wohnflaeche, zimmer, kaltmiete, nebenkosten, etage) |
s-haus-kaufen/c208 | Houses for sale | Single-family and multi-family houses for sale |
s-handy-telekommunikation/c173 | Phones & telecom | Smartphones (iPhone, Samsung, Xiaomi), tablets & accessories |
s-multimedia-elektronik/c161 | Electronics & multimedia | Laptops, PCs, gaming consoles, cameras, TVs & audio gear |
s-haus-garten/c80 | Home & garden | Furniture, kitchen appliances, DIY tools & garden equipment |
s-mode-beauty/c153 | Fashion & beauty | Apparel, sneakers, watches, luxury handbags & cosmetics |
s-familie-kind-baby/c17 | Family, kids & baby | Strollers, children's clothing, nursery furniture & baby gear |
s-musik-filme-buecher/c73 | Music, films & books | Musical instruments, vinyl records, books & media |
s-spielzeug/c23 | Toys | Lego sets, board games, action figures & collectibles |
s-sport-camping/c230 | Sport & camping | Fitness gear, bicycles, outdoor & camping equipment |
s-haustiere/c130 | Pets | Pet supplies, accessories & animal listings |
s-eintrittskarten-tickets/c231 | Tickets & events | Concert, festival, theater & Bundesliga sports tickets |
s-zu-verschenken-tauschen/c272 | Free stuff / giveaways | Zu verschenken zero-cost pickup items & local swaps |
s-jobs/c102 | Jobs | Local full-time, part-time, mini-job & trade vacancies |
Major German City Presets (location)
| City Slug | German Metro | State (Bundesland) | Primary Market Signals |
|---|---|---|---|
berlin | Berlin | Berlin | Largest listing volume in Germany, high-velocity apartment rentals & electronics |
muenchen | München (Munich) | Bayern | Highest property & rental prices, premium used-car and luxury resale market |
hamburg | Hamburg | Hamburg | Northern Germany hub for autos, apartments, furniture & maritime goods |
koeln | Köln (Cologne) | Nordrhein-Westfalen | Dense Rhineland consumer marketplace & student rental market |
frankfurt | Frankfurt am Main | Hessen | Financial hub, high-income electronics, automotive & expat housing |
stuttgart | Stuttgart | Baden-Württemberg | Core automotive region (Mercedes-Benz / Porsche) with deep used-car inventory |
duesseldorf | Düsseldorf | Nordrhein-Westfalen | Fashion, luxury goods, commercial dealers & Rhine-Ruhr real estate |
leipzig / dresden | Leipzig / Dresden | Sachsen | Fast-growing Eastern German rental, residential investment & auto markets |
dortmund / essen / duisburg / bochum | Ruhrgebiet Metros | Nordrhein-Westfalen | High-density C2C goods, used vehicles & affordable housing comps |
hannover / bremen / nuernberg | Regional Capitals | NI / HB / BY | Major regional trade, logistics, automotive & residential hubs |
🔌 Workflow automation & BI integrations
- 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 wherepriceis 15%+ below category median, and push instant notifications withtitle,price,kilometerstand,postalCode, andlistingUrlto Slack or Telegram. - Real Estate Rent-Index Dashboards (Power BI / Looker / Tableau): Export
s-wohnung-mieten/c203daily across German cities to compute mediankaltmieteperm²(wohnflaeche) grouped by 5-digitpostalCode(PLZ). - CRM Dealer Enrichment (HubSpot / Pipedrive / Salesforce): Run with
scrapeDetails: trueon commercial categories, filter forsellerType == "Gewerblich", and syncsellerName,phone,location, andpostalCodeinto your B2B sales pipeline.
⚠️ Known limitations
- Private seller phone numbers: Kleinanzeigen hides phone numbers for
Privat(consumer) sellers behind its internal messaging relay;phoneis populated only when aGewerblich(commercial) seller publishes a directtel:number on the ad. - Detail mode runtime: Because
scrapeDetails: trueopens each listing's individual page in a browser context, keepmaxListingsmoderate (50–300) when detail enrichment is enabled, or usescrapeDetails: falsefor 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.
🔗 Related scrapers
- Marktplaats.nl Scraper (Netherlands) — Dutch classifieds marketplace data extractor.
- OLX Poland Classifieds Scraper — Poland's #1 classifieds platform.
- Kijiji.ca Scraper (Canada) — Canadian classifieds, autos, and real estate.
- Chotot.com Scraper (Vietnam) — Vietnam's largest classifieds & property marketplace.
- Immoweb.be Scraper (Belgium) — Belgian real estate listings.
📋 Changelog
| Version | Date | Highlights |
|---|---|---|
| v1.2 | 2026-11 | Unlocked 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.1 | 2026-11 | Updated 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.0 | 2026-05 | Initial release with German price/date normalization, vehicle (c216) and real estate (c195/c203) schemas, and searchUrls support. |