Kleinanzeigen Scraper 💚
Pricing
from $0.90 / 1,000 results
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
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
18 hours ago
Last modified
Categories
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?
| Goal | How |
|---|---|
| Be first on new ads | Turn on Only new listings, save a task and schedule it every few minutes. |
| Find underpriced items | Search a product, sort by Cheapest first, compare price with attributes such as condition. |
| Hunt for cars or flats | Paste a search with mileage, year, size or rooms filters; read them back as numbers in attributes. |
| Compare cities | Add several Locations and group the results by search, city or state. |
| Separate private from shops | Filter on sellerType, sellerName and storeName. |
| Map supply | Plot latitude and longitude. |
How it compares
| What you need | Kleinanzeigen Scraper | Manual copy-paste | Page-by-page scrapers |
|---|---|---|---|
| Website filters kept | Yes, read from the URL | Yes | Often only keyword |
| Search without a URL | Keywords × locations × category | No | Usually one keyword |
| Full description and seller | Yes, optional | Typed by hand | Extra page per listing |
| Only-new-listings runs | Built in | No | You build the diff |
| Attributes as typed fields | Labelled, numbers as numbers | Typed by hand | Often 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 case | Frequency | Cron expression |
|---|---|---|
| Catch new ads quickly | Every 15 minutes | */15 * * * * |
| Price tracking | Daily | 0 6 * * * |
| Market research | Weekly (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:
priceperidover 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.
| Field | Type | Default | Effect |
|---|---|---|---|
searchUrls | Array of strings | Empty | kleinanzeigen.de/s-... search URLs. All filters in the URL are kept. The filters below do not change them. |
keywords | Array of strings | Empty | Search terms. Each one is searched in every location. |
category | String | All categories | Category ID from the list, such as 216 for cars. |
locations | Array of strings | All of Germany | Cities, districts or ZIP codes. Unknown places stop the run with suggestions. |
radiusKm | Integer | Empty | Distance around each location, 0 to 200 km. |
minPrice/maxPrice | Integer | Empty | Price range in EUR. |
sellerType | String | all | all, private or commercial. |
adType | String | all | all, offer (Angebote) or wanted (Gesuche). |
shipping | String | all | all, yes (shipping possible) or no (pickup only). |
buyNowOnly | Boolean | false | Only listings with Direkt kaufen. |
sortBy | String | newest | newest, cheapest, mostExpensive, recommended or nearest. |
maxItems | Integer | 100 | Maximum listings per search. Each URL, and each keyword and location pair, is one search. |
includeDetails | Boolean | true | Load full description, seller name, member-since and edit date. Off: faster, descriptions cut at about 250 characters. |
onlyNewListings | Boolean | false | Save only listings posted since the previous run of this task. Needs a saved task. |
proxyConfiguration | Object | German residential | Proxy 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
- Create a task with your searches and turn on Only new listings.
- Run it once. The first run saves the newest listings, up to the maximum per search.
- 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"}
priceTypeisfixed,negotiable(VB) orfree;priceisnullwhen a negotiable ad has no amount.cityis the place or district the seller entered,statethe German federal state.sellerName,sellerSinceandeditedAtneed Full listing details; they arenullwithout it, anddescriptionis shortened.attributeskeys are the labels shown on Kleinanzeigen, with the unit in brackets where there is one.searchtells you which URL or keyword and location found the listing.postedDateisDD-MM-YYYYandpostedTimeisHH:MM, both taken frompostedAt.
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.
Is scraping Kleinanzeigen legal?
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.
Related Actors
- Njuškalo Scraper: Croatian classifieds.
- Subito Scraper: Italian classifieds.
- Wallapop Seller Scraper: Spanish seller listings.
- Vinted Search Scraper: second-hand fashion.
- AutoScout24 Scraper: used cars in Europe.
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.