Kleinanzeigen Scraper — Listings, Prices & Sellers
Pricing
from $0.90 / 1,000 listing scrapeds
Kleinanzeigen Scraper — Listings, Prices & Sellers
Scrape Kleinanzeigen.de (eBay Kleinanzeigen) ads from any search URL or keyword + location: price, VB, postcode, date, attributes, images, seller type, optional full details.
Pricing
from $0.90 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
Trevor Ortega
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Kleinanzeigen Scraper
Scrape Kleinanzeigen.de (formerly eBay Kleinanzeigen), Germany's largest classifieds site: title, price, price type (VB / Festpreis / zu verschenken), postcode and town, posting date, category, attribute chips (mileage, first registration, m², rooms, ...), shipping option, all image URLs, seller type (private or commercial) and shop name, from any search URL or from a keyword + location + category. Turn on Include ad details to also get the full description, the complete attribute table, equipment features, region and the seller's display name, member-since date and badges.
Paste the Kleinanzeigen URL you see in your browser, with whatever filters and sort you picked, or type a keyword and a city and get every ad as clean JSON, CSV or Excel, or straight into your app through the API. It reads the structured data Kleinanzeigen embeds in its own pages, so the output is complete and stable, runs are fast (25 ads per request) and you pay only for the listings you get.
What data does Kleinanzeigen Scraper extract?
Every ad on a results page gives you:
| Field | Description |
|---|---|
id, url | Kleinanzeigen ad id and the ad URL |
title | Ad title |
price, currency, priceText | Numeric price in EUR and the text as shown ("1.250 € VB") |
priceType | FIXED (Festpreis), NEGOTIABLE (VB), GIVE_AWAY (zu verschenken) |
originalPrice | Previous price when the seller reduced it |
adType | OFFER (Angebot) or WANTED (Gesuch) |
postcode, district, locationText, locationId | e.g. "79117", "Freiburg im Breisgau", "Baden-Württemberg - Freiburg im Breisgau" |
date, time, dateText | Posting / bump date as ISO date, time for today's and yesterday's ads, and the raw text ("Heute, 04:46") |
categoryId, categoryName, parentCategoryId, parentCategoryName | e.g. 173 Smartphones in Elektronik |
attributes | Attribute chips from the card: ["177.000 km", "EZ 07/2018"], ["59 m²", "3 Zi."] (a name/value object when details are on) |
shippingAvailable, buyNowEnabled | "Versand möglich" and "Direkt kaufen" flags |
onlineViewing | Property ads offering an online viewing |
descriptionSnippet | The description preview from the results page |
imageUrls, imageCount, hasVideos | All photo URLs in large size |
sellerType | private or commercial |
sellerId | Kleinanzeigen user id |
sellerName, sellerShopUrl | Shop / company name for commercial sellers (Pro shops, dealers, agents) |
isTopAd, isHighlighted, isPriorityAd | Paid placement flags |
searchUrl, scrapedAt | The search the ad came from and when |
With Include ad details on, each ad also gets:
| Field | Description |
|---|---|
description | Full description text with line breaks |
attributes | Every attribute as name/value: {"Marke": "BMW", "Kilometerstand": "177.000 km", "Erstzulassung": "Juli 2018", ...} |
features | Equipment list, e.g. ["Klimaanlage", "Navigationssystem", "Sitzheizung"] |
categoryPath | e.g. ["Auto, Rad & Boot", "Autos"] |
region | Federal state, e.g. "Bayern" |
shipping | Shipping text as shown: "Versand möglich", "Nur Abholung", "+ Versand ab 1,99 €" |
sellerName, sellerProfileName, sellerShopName | Seller display name as shown on the ad (for shops: the shop name, plus the contact name shown) |
sellerActiveSince, sellerBadges, sellerAdsOnline | Member since, badges ("TOP Zufriedenheit", "Freundlich", "Zuverlässig") and number of active ads |
latitude, longitude | Ad location. Exact for commercial sellers, rounded to about 1 km for private sellers |
street | Business address street, commercial sellers only |
detailsFetched | true when the ad page was read |
How to scrape Kleinanzeigen listings
- Open kleinanzeigen.de, search, and set the filters you want (category, location, radius, price, private/commercial, sort).
- Copy the URL from the address bar into Start URLs. Add as many searches as you like.
- Or skip the browser: fill in Search keyword, Location (city or postcode), Radius and Category.
- Set Max items and click Start. Download the results as JSON, CSV, Excel or HTML, or read them through the API.
Input example
{"startUrls": [{ "url": "https://www.kleinanzeigen.de/s-autos/muenchen/preis:1000:5000/c216l6411" }],"searchQuery": "iphone 15","location": "Berlin","radiusKm": 20,"categoryId": "173","sellerType": "private","maxItems": 200,"includeDetails": false}
Output example
{"id": "3532637537","url": "https://www.kleinanzeigen.de/s-anzeige/iphone-12-13-pro-max-magsafe-huelle-kamera-linsenschutz/3532637537-173-9365","title": "iPhone 12/13 Pro Max MagSafe Hülle + Kamera Linsenschutz","price": 29.0,"priceType": "NEGOTIABLE","priceText": "29 € VB","originalPrice": null,"currency": "EUR","adType": "OFFER","postcode": "79117","district": "Freiburg im Breisgau","locationText": "Baden-Württemberg - Freiburg im Breisgau","date": "2026-10-05","time": "04:46","dateText": "Heute, 04:46","categoryId": 173,"categoryName": "Smartphones","parentCategoryName": "Elektronik","attributes": [],"shippingAvailable": true,"buyNowEnabled": false,"descriptionSnippet": "Ich verkaufe Zubehör für das iPhone 12 oder 13 Pro Max. Enthalten sind: ...","imageUrls": ["https://img.kleinanzeigen.de/api/v1/prod-ads/images/ab/ab799396-6b48-4601-b204-384056be460f?rule=$_59.AUTO","https://img.kleinanzeigen.de/api/v1/prod-ads/images/c0/c099fe0f-defb-452b-9c29-62dc71edcc07?rule=$_59.AUTO"],"imageCount": 2,"sellerType": "private","sellerId": "25331230","sellerName": null,"isTopAd": false,"searchUrl": "https://www.kleinanzeigen.de/s-iphone/k0","scrapedAt": "2026-10-05T03:01:12+00:00"}
With details on, a car ad adds for example "attributes": {"Marke": "BMW", "Modell": "520", "Kilometerstand": "177.000 km", "Erstzulassung": "Juli 2018", "Kraftstoffart": "Diesel", "Leistung": "197 PS", "Getriebe": "Automatik", ...}, "features": ["Anhängerkupplung", "Klimaanlage", ...], "region": "Bayern", "sellerName": "Krasniqi", "sellerActiveSince": "2022-04-09".
How many listings can I get per search?
Kleinanzeigen shows 25 ads per page (plus up to 2 top ads) and at most 50 pages, so about 1,250 ads per search. That is a limit of the site, not of the scraper. To collect more, split the search: by subcategory, by city or postcode with a radius, or by price band (minPrice / maxPrice), and add each as its own start URL. Ads that appear in several of your searches are saved and charged only once per run. For "new ads" monitoring, keep the default newest-first sort and set Max pages per search to 1-3.
Does it work for cars, apartments and jobs, not just items for sale?
Yes. Any Kleinanzeigen category works: Autos, Fahrräder, Elektronik, Mietwohnungen, Häuser, Jobs, Dienstleistungen, Haustiere, Zu verschenken and the rest. Category-specific values (mileage, first registration, living space, rooms, condition, type) come in attributes; turn on details for the full table.
Does it collect phone numbers or require a login?
No login is needed. The scraper reads only what any visitor sees on the public pages. Phone numbers are hidden behind a login or click on Kleinanzeigen and are never collected. Seller display names are exported as shown on the ad. For private sellers the street address is never exported and coordinates are rounded to about 1 km.
Do I need a proxy?
The defaults just work. Search result pages load fine through Apify's datacenter proxy (the default). Kleinanzeigen blocks many datacenter IP ranges on individual ad pages, so when Include ad details is on, an ad page that is blocked is retried through the Proxy for ad pages (residential Germany by default). In our tests about 1 in 4 ad pages needed the fallback, each about 0.17 MB of residential traffic. You can switch the fallback off, but then some ad pages may come back without details.
Typical platform usage (billed by Apify on top of the result price): about $0.01 per 1,000 listings without details and about $0.40 per 1,000 listings with details.
Monitor changes on a schedule
Turn on Only new or changed items to watch a search: each run remembers what earlier runs returned and outputs only ads that are new or whose price, price type (VB / fixed / free) or crossed-out old price changed. Unchanged ads are dropped before any ad page is opened, so they are not charged (top ads that Kleinanzeigen rotates into the results are reported once, the first time they appear). Max items then sets how many listings are checked per run (keep the newest-first sort, e.g. 50-100 for the newest ads in a city). Save the input as a task and add a Schedule in Apify (for example every hour or daily); give each watch its own Monitoring key if several schedules use the same search. Every output item has changeType (new or changed), and changed items have previousValues with the old values, e.g. {"price": 450, "priceType": "NEGOTIABLE"}.
Pricing
Pay per result: you are charged per listing saved to the dataset, plus a small extra per ad page when Include ad details is on. See the Pricing tab for the current prices. Platform usage is minimal because each request returns 25 listings.
Integrations and API
Run it from the Apify API, schedule it (e.g. every hour for new ads in your area), and send results to Google Sheets, Slack, Make, Zapier, n8n or a webhook. Use maxItems to cap cost per run.
Is it legal to scrape Kleinanzeigen?
This Actor collects publicly visible ad data that anyone can see without logging in. It does not log in, does not collect phone numbers or any data behind a click or login, and does not export private sellers' street addresses. Seller display names are personal data under the GDPR when they belong to private individuals: you are responsible for having a legitimate purpose and a legal basis for processing them, and for respecting Kleinanzeigen's terms of use. If in doubt, ask a lawyer.
Support
Found a bug or need a field that is not there? Open an issue on the Issues tab with the input you used and the run link.