Kleinanzeigen Scraper for German Property Listings

Kleinanzeigen is where German private landlords post rooms and flats that never reach the paid property portals, priced by negotiation. We turn those adverts into structured rows.

Plans from €169/month · Free project assessment · Reply within 1 business day

Kleinanzeigen Scraper
Solutions

Blocking, Personal Data and Delivery

Kleinanzeigen needs no login to browse, but it blocks by IP range without warning. One request during research returned a page reading IP-Bereich vorübergehend gesperrt - IP range temporarily blocked - with a reference code and the calling IP; the same URL answered normally on retry. Handling that is our side of the job: rotating proxies, low request rates, CAPTCHA solving where challenges appear, and adaptive crawling when markup shifts. We stay out of anything behind a login.

Almost every seller here is a private individual. Output is limited to advert and commercial data. Seller names, profile links, phone numbers and message routes are excluded by default rather than on request, which keeps the delivered dataset clear of personal data under the GDPR.

What a Kleinanzeigen Scraper Can Extract, and What It Cannot

The fields below were read from a live Mietwohnung advert in Berlin on 4 September 2026. This is what the pages render, not a wish list.

  • Headline price and its marker - shown as 1.295 € VB. VB is Verhandlungsbasis, meaning the figure is a negotiating position rather than a fixed price. A numeric column that drops the VB flag reports a firm rent that does not exist.
  • Zu verschenken (free to a good home) - these adverts carry an empty price element, not a zero. Coercing that blank to 0 mixes giveaways into genuine prices and drags every average down.
  • Wohnfläche (living area) in m² - 63 m² on that advert - plus Zimmer (rooms), Schlafzimmer and Badezimmer where the seller filled them in.
  • Nebenkosten (service charges) and Warmmiete (rent including service charges) - 265 € and 1.560 € against a 1.295 € headline. The headline is the Kaltmiete, the cold rent, and it is not what the tenant pays.
  • Kaution (deposit) - rendered as Kaution / Genoss.-Anteile, 3.885 € on that advert.
  • Etage, Wohnungstyp and Verfügbar ab - floor, dwelling type and the date the property comes free.
  • Feature tags - Balkon, Aufzug, Einbauküche, Neubau, Möbliert/Teilmöbliert, Stufenloser Zugang.
  • Location - postcode, city and district, rendered as 12489 Berlin - Köpenick.
  • Advert id, canonical URL, publication date, image URLs and the full free-text description.

Kaufpreis (purchase price) adverts under Häuser zum Kauf carry a different attribute block, and WG-Zimmer (rooms in a shared flat) different again. We map each category to its own schema instead of forcing one shape over all of them.

What a Kleinanzeigen Scraper Can Extract, and What It Cannot
What Kleinanzeigen Scraping Has To Handle

What Kleinanzeigen Scraping Has To Handle

Some of the difficulty here is not in any field. It is in how the site answers a crawler.

The result cap is real and low. A search for rental flats in Berlin reported 7,141 matches on 4 September 2026. Results come 25 to a page, and paging stops at page 50 - a request for page 51 lands back on page 50. That is 1,250 adverts reachable out of 7,141. Full coverage means splitting one query into many narrower ones - by PLZ, by Umkreis (search radius), by price band, by room count - until every slice fits under the cap and the slices reassemble without gaps or duplicates. That partitioning is most of the engineering on this site.

A dead advert does not simply disappear. An unknown advert id redirects to a category search page rather than showing a not-found page. A crawler that follows redirects without reading the page will store a search page as though it were a listing. Expired adverts have to be detected from the page content itself.

Search cards carry relative dates. They show strings such as Heute, 20:11 rather than a date, so they only mean anything once resolved against the moment of the crawl.

URLs are stable enough to build on. An advert sits under /s-anzeige/ with a cosmetic slug followed by a numeric advert id, a category code and a subcode. The numeric id is what identifies a listing across runs.

What Kleinanzeigen Is, and What Changed

The site traded as eBay Kleinanzeigen for years. Adevinta completed its acquisition of eBay Classifieds Group in June 2021, and in May 2023 the brand dropped the eBay name and moved to kleinanzeigen.de. Adevinta's own announcement said the previous domain would stay reachable for several more years, which is why old links and archived references still resolve to live pages today.

For data work the ownership matters less than the shape of the inventory. This is a classifieds board, not a retail marketplace. There is no catalogue and no SKU. Each advert is one physical thing in one place, typed by hand, usually by a private individual rather than a shop. Sellers expect to negotiate and expect the buyer to turn up in person, so Abholung - collection by the buyer - runs through the whole site and shapes how adverts are written.

The Immobilien (real estate) section is substantial on its own. A request to the Immobilien root on 4 September 2026 reported 572,432 adverts across Germany, with 109,998 of those in Mietwohnungen (rental flats). Those counts move daily.

One practical wrinkle: the site is mid-migration between frontends. Real estate results still render in older server-side markup, while the Zu verschenken section is served by a newer Astro build with entirely different class names. A single parser does not cover both, and we maintain them separately.

Get a Quote
dev_w
25

Developers

customers
500+

Customers worldwide

pages
1 500 000 000+

Pages extracted

stime
15000+

Hours saved for our clients

Plans

Kleinanzeigen Scraping Plans and Pricing

Airplane

€199 / one-time

setup fee - included

Data limits100,000
Frequencyone-time
Run timeup to 5 days
Data storing7 days

Helicopter

€169 / mo

setup fee €499

Data limits250,000
Frequencymonthly
Run timeup to 5 days
Data storing14 days

Glasses

€229 / mo

setup fee €499

Data limits1,000,000
Frequencyweekly
Run timeup to 5 days
Data storing30 days

DNA

€549 / mo

setup fee €799

Data limits3,000,000
Frequency3 times daily
Run timesame day
Data storing90 days

Delivery: CSV, JSON or XLSX files, our API or a JSON feed. MCP server on request.

Full plan details →

Why a Kleinanzeigen Rent Is Never the Headline Number

The reason to scrape Kleinanzeigen is that much of its housing supply is not anywhere else. A private landlord with one spare room posts here because it is free and takes five minutes, and often never pays to appear on a dedicated property portal. A market picture built only from the paid portals is missing that private tail, and scraping the public pages is what fills it in.

Three things become measurable. Asking rents by postcode, including negotiable ones, once VB is kept as a flag rather than discarded. The spread between Kaltmiete and Warmmiete, which is where German service charges sit and where cost pressure tends to surface before headline rents move. And supply turnover - how long a room in a given district stays listed before it disappears.

WG-Zimmer deserve their own series. Shared-flat rooms have shorter listing lifetimes, smaller deposits and heavy seasonality around the start of university terms. Averaged into a general rent index, they quietly distort it.

The non-property categories are collectable through the same pipeline - Auto, Elektronik, Möbel, Zu verschenken - and clients do ask for them. We will not pretend they answer housing questions, but the extraction work is the same.

Related Case Studies

Homegate Data: A Daily Snapshot of Two Cantons with 46K Photos

Homegate Data: A Daily Snapshot of Two Cantons with 46K Photos

Every day, a full snapshot of all active Homegate listings in one Swiss region, with photos and PDFs, for a company's own listing-history database.

Learn More about Homegate Data: A Daily Snapshot of Two Cantons with 46K Photos
imobiliare.ro Data and imoradar24: 420K Listings Archived with 2.2M Photos

imobiliare.ro Data and imoradar24: 420K Listings Archived with 2.2M Photos

A real-estate analytics company got two portals archived listing by listing: the saved page, a JSON file and every photo, 420K+ listings in all.

Learn More about imobiliare.ro Data and imoradar24: 420K Listings Archived with 2.2M Photos
Agent Data from MLS Portals: 50K+ Agent Rosters and Two Referred Clients

Agent Data from MLS Portals: 50K+ Agent Rosters and Two Referred Clients

US real-estate investors get agent lists for their markets from MLS portals under their own 2FA logins, plus realtor.com and Zillow directories.

Learn More about Agent Data from MLS Portals: 50K+ Agent Rosters and Two Referred Clients
Our Blog

Reads Our Latest News & Blog

Learn how to use web scraping to solve data problems for your organization

Scraping Property Portals by Region: Best Real Estate Platforms That Actually Matter

Scraping Property Portals by Region: Best Real Estate Platforms That Actually Matter

Real estate teams work in a fragmented data landscape. The sites that drive demand in Boston look nothing like the ones that matter in Berlin, São Paulo, Dubai, or Mumbai.

7 Real Estate Websites to Scrape in 2026: Plus 2 Hidden Gems

7 Real Estate Websites to Scrape in 2026: Plus 2 Hidden Gems

Real estate teams are operating in a data environment that is bigger, faster, and more fragmented than ever. Listings go live and disappear in hours, price cuts happen quietly, and the portals that matter most in each country are rarely the same global “top 5.”

Benefits of Web Scraping for Real Estate: 6 Use Cases From Our Projects

Benefits of Web Scraping for Real Estate: 6 Use Cases From Our Projects

October 16, 1180

Six jobs that scraped property data does, each backed by a ScrapeIt project: seller leads, listing monitoring, image datasets, weekly market supply, sold records and unit-level rentals. For every use case - the fields it needs and how often to refresh them.

scrapeit logo

How ScrapeIt Runs It

ScrapeIt is a managed service. We build the crawler, run it on your schedule, watch it when Kleinanzeigen changes, and hand over the output as CSV, JSON, XLSX or an API endpoint. You name the categories, the regions and the frequency. We extract a sample first so you can check the fields before the full run, then keep the pipeline healthy as the site moves. No tools for you to learn and no scripts to maintain. We reply to enquiries within one business day.

FAQ

Do you offer a Kleinanzeigen API for listings data?

Yes. The ScrapeIt Kleinanzeigen API returns Miete, Kaufpreis, Wohnfläche, Nebenkosten, Kaution and the VB flag as JSON from an endpoint we host, refreshed on the schedule you set. The same data also comes as CSV or XLSX files or straight into your database.

How do you handle VB prices and Zu verschenken adverts?

As flags, not as numbers. VB (Verhandlungsbasis) marks a price as a negotiating position, so we keep the figure and a separate boolean beside it. Zu verschenken adverts render an empty price element rather than a zero, so we record them as giveaways and leave the price null. Folding either into a plain price column produces averages that do not describe anything real, which is the most common defect we see in Kleinanzeigen data collected elsewhere.

Can I get the full street address of a property?

No, because Kleinanzeigen does not publish it. An advert shows postcode, city and district - for example 12489 Berlin - Köpenick - and nothing finer. Anything more precise would have to be read out of the free-text description, where a seller may or may not have typed it, and we do not present that as a structured address field. You get the location the portal actually renders.

Can you scrape all Kleinanzeigen listings for a city?

Not from one search, because pagination is capped. A Berlin rental search reported 7,141 matches but stops at page 50 of 25 results, which is 1,250 adverts; page 51 redirects back to page 50. We reach the remainder by splitting the query into narrower slices - postcode, radius, price band, room count - so each slice returns fewer results than the cap, then deduplicating by advert id. You get the full set, assembled from many requests rather than one.

How fresh is the Kleinanzeigen data you deliver?

As fresh as the schedule you choose. We run scheduled crawls - daily, weekly, or several times a day - rather than a live feed, and every row carries the timestamp of the run that produced it. For rental stock in a busy city a daily run catches most adverts inside their listing life. Because search cards show relative dates such as Heute, we resolve those against the crawl time before delivery so the dates mean something later.

How does it Work?

Step 1 - Make a Request

You share your needs, expectations, and desired timeframe. We’ll suggest the best solution based on your request and budget.

Step 2 - Configuring Custom Web Crawlers

Our specialists configure the crawlers and extract a sample dataset for your review before proceeding with the full-scale extraction.

Step 3 - Collect and Deliver

Once you approve the sample, we launch the project and start full data collection. We gather, filter, and structure the data for easy use, delivering it on time in your preferred format.

Step 4 - Maintain and Support

Our team manages ongoing processes, monitors website changes, and supports all data extraction cycles. We can also help integrate data into your systems or create dashboards to simplify analysis.

Request a Quote

Tell us more about you and your project information.
Which sites, which fields, how often. A couple of lines is enough.

This form is protected by Google reCAPTCHA, which loads when you start filling it in. If you prefer not to use it, email us at info@scrapeit.io. Privacy & Cookie Policy

We reply within 1 business day. No obligation.

Kleinanzeigen data from €169/month. Free project assessment, reply within 1 business day.

scrapiet

Scrapeit Sp. z o.o.
10/208 Legionowa str., 15-099, Bialystok, Poland
NIP: 5423457175
REGON: 523384582