Kleinanzeigen Scraper 💚 avatar

Kleinanzeigen Scraper 💚

Pricing

from $0.90 / 1,000 results

Go to Apify Store
Kleinanzeigen Scraper 💚

Kleinanzeigen Scraper 💚

Collect Kleinanzeigen search listings with prices, images, locations, seller details, and listing attributes. Keep website search filters, set result limits, and export structured data through datasets, API workflows, schedules, and integrations.

Pricing

from $0.90 / 1,000 results

Rating

0.0

(0)

Developer

Epic Scrapers

Epic Scrapers

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

18 hours ago

Last modified

Share

Kleinanzeigen Scraper: German classifieds with full descriptions, seller details and new-ad monitoring

Kleinanzeigen Scraper turns kleinanzeigen.de searches into a spreadsheet. Paste a search URL, or just type keywords, cities and a category, and get one row per listing: title, price, full description, category, city and state with coordinates, seller name and type, shipping, item attributes such as brand or mileage, and all images. It is for resellers, price researchers, car and flat hunters, and anyone who wants to be first on a new ad.

  • Two ways to search. Paste any search URL and every filter is kept, or type keywords, locations and a category, with no URL needed. Every keyword is searched in every location.
  • Full listings, not search snippets. Full descriptions (search results cut them at about 250 characters), seller name, member-since date and last edit time.
  • Readable attributes. Item details come as "Kilometerstand (km)": 155000, "Marke": "Opel" or "Balkon": true, with numbers as numbers.
  • Only new listings. Save a task, schedule it, and each run saves only ads posted since the last run.
  • Fast and blocking-resistant. Uses the Kleinanzeigen app's JSON API with German residential proxies and parallel requests, about 300 listings with full details in under a minute.
  • No login, no API key. Export to JSON, CSV, Excel, XML or RSS. See the Pricing tab for current rates.

For other classifieds, see Njuškalo Scraper (Croatia), Subito Scraper (Italy), Wallapop Seller Scraper (Spain) and Vinted Search Scraper.

What can you do with Kleinanzeigen Scraper?

GoalHow
Be first on new adsTurn on Only new listings, save a task and schedule it every few minutes.
Find underpriced itemsSearch a product, sort by Cheapest first, compare price with attributes such as condition.
Hunt for cars or flatsPaste a search with mileage, year, size or rooms filters; read them back as numbers in attributes.
Compare citiesAdd several Locations and group the results by search, city or state.
Separate private from shopsFilter on sellerType, sellerName and storeName.
Map supplyPlot latitude and longitude.

How it compares

What you needKleinanzeigen ScraperManual copy-pastePage-by-page scrapers
Website filters keptYes, read from the URLYesOften only keyword
Search without a URLKeywords × locations × categoryNoUsually one keyword
Full description and sellerYes, optionalTyped by handExtra page per listing
Only-new-listings runsBuilt inNoYou build the diff
Attributes as typed fieldsLabelled, numbers as numbersTyped by handOften free text

Quick start

With a URL: open kleinanzeigen.de, search and set your filters, copy the address bar URL and paste it into Search URLs.

Without a URL: type one or more Keywords, optionally Locations (such as Berlin or 80331), a Radius, a Category and a price range.

Set Maximum listings per search to 20 for a first run, click Start, then open the Output tab and export.

Track Kleinanzeigen over time with scheduled runs

Most of the value comes from running the same search again. Apify can run the Actor on a schedule and send the results wherever you need them.

1. Save your input as a task

Open the Actor, set your search, turn on Only new listings, then click Save as a new task. A task is a saved input you can run again with one click or on a schedule. Each task keeps its own memory of saved listings.

2. Schedule the task

In Apify Console, go to Schedules, click Create new, choose how often to run, and add your task. See Schedules and How to create a schedule.

Watch how to schedule an Actor:

Or schedule a saved task:

Common schedules:

Use caseFrequencyCron expression
Catch new ads quicklyEvery 15 minutes*/15 * * * *
Price trackingDaily0 6 * * *
Market researchWeekly (Monday)0 6 * * 1

3. Send the results to a spreadsheet or your phone

Connect Google in the task's Integrations tab to save every run to Google Sheets or Google Drive automatically, or add a Slack or email integration to get new ads as they come in:

4. Compare runs

Every row has id, postedAt and scrapedAt, so runs are easy to join:

  • New ads: turn on Only new listings, or compare ids with the previous run.
  • Price changes: price per id over time (run without Only new listings).
  • Ads that disappeared: ids missing from the latest run.

Input

{
"keywords": ["Bugaboo Fox", "Cybex Priam"],
"locations": ["Berlin", "Hamburg"],
"radiusKm": 20,
"maxPrice": 600,
"sellerType": "private",
"maxItems": 50
}

This runs four searches: each stroller in each city.

FieldTypeDefaultEffect
searchUrlsArray of stringsEmptykleinanzeigen.de/s-... search URLs. All filters in the URL are kept. The filters below do not change them.
keywordsArray of stringsEmptySearch terms. Each one is searched in every location.
categoryStringAll categoriesCategory ID from the list, such as 216 for cars.
locationsArray of stringsAll of GermanyCities, districts or ZIP codes. Unknown places stop the run with suggestions.
radiusKmIntegerEmptyDistance around each location, 0 to 200 km.
minPrice/maxPriceIntegerEmptyPrice range in EUR.
sellerTypeStringallall, private or commercial.
adTypeStringallall, offer (Angebote) or wanted (Gesuche).
shippingStringallall, yes (shipping possible) or no (pickup only).
buyNowOnlyBooleanfalseOnly listings with Direkt kaufen.
sortByStringnewestnewest, cheapest, mostExpensive, recommended or nearest.
maxItemsInteger100Maximum listings per search. Each URL, and each keyword and location pair, is one search.
includeDetailsBooleantrueLoad full description, seller name, member-since and edit date. Off: faster, descriptions cut at about 250 characters.
onlyNewListingsBooleanfalseSave only listings posted since the previous run of this task. Needs a saved task.
proxyConfigurationObjectGerman residentialProxy for API requests.

Keywords, locations and category can be combined freely: leave keywords empty to get every listing in a category or city. A listing found by several searches is saved once.

Search URLs

Everything you can set on the website is read from the URL: category, location and radius, keyword, price, private or commercial seller, offers or wanted ads, shipping or pickup, parcel service, Direkt kaufen, sort order and item filters such as brand, mileage, first registration, living space or rooms.

Only new listings

  1. Create a task with your searches and turn on Only new listings.
  2. Run it once. The first run saves the newest listings, up to the maximum per search.
  3. Add a schedule. Later runs save only listings posted since then, and stop paging as soon as they reach older ones, so frequent runs stay quick and cheap.

Each task keeps its own memory, so a "Nike" task and an "Adidas" task do not share state. Starting it from the Actor page without a task stops with an error.

Output

Every row is one listing:

{
"id": "3543743690",
"url": "https://www.kleinanzeigen.de/s-anzeige/lenovo-thinkpad-t520-core-i7-8gb-ram-128gb-15-fhd-win11/3543743690-278-7887",
"title": "Lenovo Thinkpad T520 - Core i7, 8GB RAM, 128GB, 15\" FHD, Win11",
"price": 110,
"currency": "EUR",
"priceType": "fixed",
"adType": "offer",
"description": "Gebrauchtes Lenovo Thinkpad T520 im guten Zustand.\n\nTechnisch einwandfrei, ...",
"category": "Laptops & Notebooks",
"categoryPath": "Elektronik › Laptops & Notebooks",
"categoryId": "278",
"zip": "15562",
"city": "Rüdersdorf",
"state": "Brandenburg",
"latitude": 52.464584,
"longitude": 13.797602,
"sellerType": "private",
"sellerId": "29278314",
"sellerName": "Lucas",
"sellerSince": "2015-03-27T10:45:08.000+01:00",
"storeName": null,
"shipping": true,
"shippingOptions": ["HERMES_003", "DHL_002"],
"buyNow": false,
"postedAt": "2026-10-17T18:11:50.000+02:00",
"postedDate": "17-10-2026",
"postedTime": "18:11",
"editedAt": "2026-10-17T18:25:49.000+02:00",
"attributes": {
"Marke": "Lenovo",
"Zustand": "Gut",
"Prozessor": "Intel Core i7",
"RAM": "8 GB",
"Versand (€)": "ab 2,99"
},
"mainImage": "https://img.kleinanzeigen.de/api/v1/prod-ads/images/6d/6d22da10-...?rule=$_59.JPG",
"images": ["https://img.kleinanzeigen.de/api/v1/prod-ads/images/6d/6d22da10-...?rule=$_59.JPG"],
"search": "https://www.kleinanzeigen.de/s-notebooks/thinkpad/k0c278",
"scrapedAt": "2026-10-17T17:57:45.173Z"
}
  • priceType is fixed, negotiable (VB) or free; price is null when a negotiable ad has no amount.
  • city is the place or district the seller entered, state the German federal state.
  • sellerName, sellerSince and editedAt need Full listing details; they are null without it, and description is shortened.
  • attributes keys are the labels shown on Kleinanzeigen, with the unit in brackets where there is one.
  • search tells you which URL or keyword and location found the listing.
  • postedDate is DD-MM-YYYY and postedTime is HH:MM, both taken from postedAt.

The Output tab has two views: Overview (image, title, price, place, time) and Details (description, category, seller, shipping, attributes).

FAQ

How many listings can I get?

As many as each search has, up to Maximum listings per search. The Actor stops at that number or when Kleinanzeigen has no more results.

Why did I get fewer listings than the maximum?

The search had fewer matches, a listing was found by an earlier search in the same run, or a listing was deleted between search and loading its details. With Only new listings, there were simply fewer new ads.

Can I get phone numbers or email addresses?

No. Kleinanzeigen does not show them in listings; buyers contact sellers through Kleinanzeigen messages.

Do I need a proxy or login?

No login. A German residential proxy is on by default because Kleinanzeigen blocks most other IPs.

Is there an official API?

Kleinanzeigen does not offer a public API for this data. This Actor uses the same JSON API as the mobile app.

Public listing data is generally collectable, but you are responsible for following Kleinanzeigen's terms and privacy law (GDPR). Seller names are personal data: only keep them if you have a reason to. Do not use the data to send unwanted messages.

Cost

See the Pricing tab for the current rate and your free-plan credit. Proxy traffic is included in Apify usage as shown there. Turning off Full listing details makes runs faster and lighter.

Support

Open the Issues tab and include the run ID and your input. Use the data in line with Kleinanzeigen's terms and applicable law.

Kleinanzeigen is a trademark of its owner. This Actor is not affiliated with or endorsed by Kleinanzeigen.