Kleinanzeigen Listings Scraper avatar

Kleinanzeigen Listings Scraper

Pricing

from $0.75 / 1,000 listings

Go to Apify Store
Kleinanzeigen Listings Scraper

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.

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

a day ago

Last modified

Security

Limited permissions

Share

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.

Quick start

Run with empty input to collect 20 bicycle listings across Germany. Details are off by default, so this typically needs one search request plus its redirect and finishes well 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
includeDetailsFetch one additional page per listing; default false
proxyConfigurationOptional Apify proxy fallback after direct access is blocked; 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.

Seller names, seller IDs, phone numbers and email addresses are never output as fields. The description excerpt is the seller's own text: it is limited to 1000 characters and contact-bearing lines, sign-off blocks (a German closing such as LG, VG, MfG, Viele Grüße or Mit freundlichen Grüßen, at the start of a line or after ., !, ? or ,, together with the rest of its line when that is at most three capitalised words without digits, as in LG Alex; when the closing ends its line, up to three following lines that together form such a name tail go too, and later lines are kept; the abbreviations count in capitals or with only a capital first letter (Lg, as phones autocapitalise), never all-lowercase, and may follow Danke und or Danke & like the spelled-out closings; a bare LG or Lg followed by an all-caps word or a product word such as Monitor, Smart or Gram is the brand and stays; an excerpt that is only a sign-off is dropped), honorific names (Herr, Herrn, Frau or Hr., or Fr. followed by a title, plus up to three capitalised name words with any Dr./Prof./med./Dipl.-Ing. titles before them and von/van/de/zu particles between them; a few common words, such as Größe, Gr. or Holle, never count as a name word, so Frau Größe M stays and Frau Schwarz Gr. 38 keeps Gr. 38) and introduced names (Ich heiße …, mein Name ist …, Ansprechpartner(in): …; a line with such an introduction whose name is not capitalised is dropped) are removed, but other free text may still mention people or a street address the seller wrote in (commercial sellers often give their shop address). 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.

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.

Blocked or changed pages produce a status message and retain results already delivered. Optional proxy fallback requires your explicit configuration; no residential route is enabled by default. Retry-After delays are honored, and the actor stops when the full delay cannot fit. A shared deadline reserves 20 seconds for final delivery and shutdown. A single empty page is fetched again before it is accepted as empty. Forward pagination is followed in whatever form the source renders it, including pages whose forward links are script-driven rather than plain anchors.

Pricing: $0.005 per run start plus $0.00075 per delivered listing. 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. Start events are managed by the platform; each unique stored listing uses the SDK's default dataset item event. Blocked, empty, malformed and duplicate cards produce no listing charge. The optional input spending ceiling includes the planned start charge; the actual platform ledger is checked before each request and emission. 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.