Kleinanzeigen Scraper | German Classifieds & Immobilien avatar

Kleinanzeigen Scraper | German Classifieds & Immobilien

Pricing

from $0.75 / 1,000 listings

Go to Apify Store
Kleinanzeigen Scraper | German Classifieds & Immobilien

Kleinanzeigen Scraper | German Classifieds & Immobilien

Scrape kleinanzeigen.de classifieds by keyword, category, city and radius, or paste a search URL. Get prices, sellers, photos and dates, with optional full details and rent fields for apartments. Each unique listing is charged once.

Pricing

from $0.75 / 1,000 listings

Rating

0.0

(0)

Developer

Philip Kirkbride

Philip Kirkbride

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Features

Limited permissions

Share

Kleinanzeigen Listings Scraper

Collect public listings from kleinanzeigen.de, Germany's classifieds marketplace, with pagination and optional listing details. Search across categories or focus on Immobilien rentals and purchases. Each result is a unique listing; missing source fields remain null.

Use cases

  • Price research: what do bikes, cars or electronics actually sell for in Germany? Collect a category or keyword and compare asking prices, VB offers and free items.
  • Apartment hunting: pull Berlin (or any city) rentals with rooms, living area and warm/cold rent parsed from the listing when includeDetails is on.
  • Market monitoring: re-run the same search on a schedule and watch new listings arrive, priced and dated, ready to export or feed an alert.
  • Resale and arbitrage: shortlist under-priced items by keyword and price range, with photos and seller type, before anyone else messages the seller.

Quick start

Run with empty input to collect 20 bicycle listings across Germany. Details are off by default, and a small run typically finishes within five minutes when the source is available.

{"keyword":"fahrrad","maxResults":20,"includeDetails":false}

For Berlin apartment rentals:

{"category":"apartments-rent","location":"Berlin","radiusKm":"10","maxResults":20,"includeDetails":true}

You can supply a kleinanzeigen.de search URL instead of keyword, category, location and radius. Price limits can constrain either mode. Use an exact city name; ambiguous locations fail with a short message so a similarly named place is never silently substituted. Advanced categories, postal locations and source-specific filters are supported through search URLs.

Input

FieldPurpose
keywordSearch phrase; empty input searches for fahrrad
categoryAll, Immobilien, apartments or houses for rent/buy, cars, bicycles, electronics, home/garden or fashion
location, radiusKmExact city and optional radius (0, 5, 10, 20, 30, 50, 100, 150 or 200 km)
priceFrom, priceToInclusive EUR bounds; unknown prices excluded when constrained
searchUrlHTTPS search page URL; replaces search construction inputs
maxResultsUnique listing limit, 1–1250; default 20
includeDetailsInclude full listing details; slower, default false
proxyConfigurationOptional proxy settings; disabled by default
maxTotalChargeUsdOptional additional spending ceiling; the platform run charge limit also applies

Output

Results appear in the default dataset and can be exported as JSON, CSV or Excel. The output links to that dataset; the OUTPUT record contains counts, request totals, stop reason and source issues.

Fields: id, url, title, price, currency, priceType (fixed, VB, free), categoryPath, location (postcode, city, district), postedAt, sellerType (private or commercial), descriptionExcerpt, imageUrls, rooms, livingAreaM2, transactionType (rent or buy), warmRent, coldRent, detailsParsed, and detailsError.

sellerName contains the seller's display name when available on the fetched listing page, otherwise null. Public titles and descriptions are retained, including names, introductions, sign-offs, contact details and street addresses. Descriptions are not truncated. Locality labels reflect source geography; the source sometimes supplies a district without its enclosing city, and outside the city states the state name in the locality is dropped so city stays the town. Rent fields exist only for rentals (transactionType rent) and are populated from explicitly labelled source values, or from the displayed price when its label, the attribute list or the title names the kind — the full words Kaltmiete/Warmmiete/Kosten insgesamt, or a bare Kalt/Warm sitting directly next to an amount (2200 Kalt, 1036 warm); an unlabelled, contradictory or non-rental price leaves both null. Relative dates use the observation date in UTC; dates have day precision.

Output example

A row from a real fahrrad search (image links shortened):

{
"id": "3567141454",
"url": "https://www.kleinanzeigen.de/s-anzeige/herren-26-mtb/3567141454-217-3381",
"title": "Herren 26\" MTB",
"categoryPath": ["Auto, Rad & Boot", "Fahrräder & Zubehör"],
"location": {"postcode": "12679", "city": "Marzahn", "district": null},
"postedAt": "2026-11-10",
"sellerType": "private",
"sellerName": null,
"descriptionExcerpt": "Herren MTB 26\", 21 Gänge, V-Brakes, sehr gute Räder und Bereifung, fahrbereit.",
"imageUrls": ["https://img.kleinanzeigen.de/api/v1/prod-ads/images/…"],
"rooms": null,
"livingAreaM2": null,
"transactionType": null,
"detailsParsed": false,
"detailsError": null,
"warmRent": null,
"coldRent": null,
"price": 59.0,
"currency": "EUR",
"priceType": "VB"
}

With includeDetails on, detailsParsed is true and descriptionExcerpt carries the full description; for rentals the rooms, livingAreaM2, warmRent and coldRent fields are filled from the detail page.

Limits and source availability

The public search interface exposes at most 50 pages (about 1250 organic listings, with promoted cards and duplicates reducing coverage). Narrow your search to obtain additional coverage. External sponsored cards are excluded and promoted listings are deduplicated by listing ID. Listings can change or disappear between search and details; failed details retain the search result with detailsError.

Unavailable listings produce a status message and retain results already delivered. Slow or unavailable sources may leave partial coverage.

FAQ

How many listings can one run collect? The public search exposes at most 50 pages per search, about 1,250 organic listings; promoted cards and duplicates reduce coverage. Narrow your search (keyword, city, radius or price range) or run several searches to cover more.

Why are some prices null? Sellers can post items without a price (Zur Verschenken, giveaways) or with VB only where a number is absent. priceType says which case it is: fixed, VB or free.

What do I need includeDetails for? The search card carries title, price, location, date, seller type and an excerpt. Details add the full description and, for rentals, rooms, living area and warm/cold rent. Details are slower (one extra page per listing) and cost the same per listing.

Why did my run stop early? The run stops at your maxResults, the charge limit, the time budget, or when the source stops returning new listings; the status message and OUTPUT.issues always say which, and every delivered listing is kept.

Can I search one city only? Yes: set location to the exact city name and optionally radiusKm. An ambiguous name fails with a short message instead of silently substituting a similarly named place; use a searchUrl from the site for anything more specific.

Can I run it daily? Yes. Schedule the run with the same input and read the dataset through the Apify API, exported as JSON, CSV or Excel. Sorting is newest-first, so each run's first rows are the freshest listings.

Pricing

$0.005 per run start plus $0.00075 per delivered listing. A start event is charged per GB of memory with a one-GB minimum, so the default 512 MB run is one start. The start charge applies to every run, including a search with zero results. A listing costs the same with or without includeDetails; there is no separate details charge. Examples: 20 listings = $0.020, 1,000 listings in one run = $0.755. Each unique delivered listing is charged once. Blocked, empty, malformed and duplicate cards produce no listing charge. The optional input spending ceiling includes the start charge. Larger runs may finish early at the time, source or charge limit, and any run that stops before the requested limit says so in its status message and in the OUTPUT issues; a search that returns no listings finishes with zero results and a plain no-results message.