Kleinanzeigen Scraper - Listings, Real Estate, Cars & Sellers avatar

Kleinanzeigen Scraper - Listings, Real Estate, Cars & Sellers

Pricing

from $0.33 / 1,000 listings

Go to Apify Store
Kleinanzeigen Scraper - Listings, Real Estate, Cars & Sellers

Kleinanzeigen Scraper - Listings, Real Estate, Cars & Sellers

Scrape kleinanzeigen.de listings by keyword, category, location, price and filters, or from search, listing and seller URLs: price, location, date, seller, photos. Add-ons: listing details with real-estate and car fields, seller profiles, price stats. Monitor new listings. $0.33 per 1,000 listings.

Pricing

from $0.33 / 1,000 listings

Rating

0.0

(0)

Developer

Top Api

Top Api

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Features

Limited permissions

Share

What does Kleinanzeigen Scraper do?

Kleinanzeigen Scraper extracts listings from kleinanzeigen.de (formerly eBay Kleinanzeigen), Germany's largest classifieds site, in all 160 categories: real estate (Immobilien), cars and motorbikes, jobs, electronics, furniture, fashion and everything else. Search by keyword, category, location, radius, price and the site's own filters, paste any kleinanzeigen.de search URL, or give listing ids, seller ids and PRO shops. One row per listing: price and price type, old price, zip code and district, posting date, seller and shop, top-ad flags, buy-now, shipping, attribute chips and photos.

Kleinanzeigen scraper · Kleinanzeigen API alternative · eBay Kleinanzeigen scraper · Immobilien and Autos export

  • Every category, every filter: keyword, category, location (city, zip code, state) + radius, price range, private / commercial seller, offers / wanted ads, buy-now, shipping, sort order; real-estate rooms and area; car make, model, first registration, mileage, power, fuel and gearbox; any other category filter the site has. Or paste a search URL with your filters already set.
  • Typed columns per vertical with Listing details on: real estate (cold / warm rent, ancillary and heating costs, deposit, house money, purchase price, living area, rooms, plot, floor, year built, house / flat type, balcony, garden, garage, lift ...), vehicles (make, model, first registration, mileage, PS, fuel, gearbox, inspection date, emission class, colour, equipment) and jobs (type, hours, experience, hourly wage), plus the site's raw machine attributes next to the German labels.
  • Sellers and PRO shops: every listing of a seller or shop, and one seller-profile row per seller with rating, badges, reply time, followers, listings online and in total, and for PRO shops the phone, address, opening hours and website shown on the shop page.
  • Past the 1,250-result window: kleinanzeigen.de shows at most 50 pages per search; Deep scan splits a big search by the site's own location list, then by price bands (3,000 sofa listings in one run, measured).
  • Price statistics per search: min, quartiles, median, average and max price, negotiable / reduced / shipping / commercial shares and top locations.
  • Monitor mode: scheduled runs return only new listings (and price drops if you want), with webhook, Slack, Discord or Telegram alerts.
  • No login, cookies or API key. Pay only for delivered rows: no start fee.

What data can you get from Kleinanzeigen?

🏷️ Title, URL, listing id💶 Price, price type (VB, fixed, free)📉 Old price, price reduced
📍 Zip code, district, location line🗓️ Posted date and time🗂️ Category id, location id
👤 Seller id, private / commercial🏪 PRO shop name, link, company logo⭐ Top ad, highlight, priority flags
🛒 Buy now, shipping🏷️ Attribute chips ("438 m²", "EZ 12/2014")📷 Photos and photo count
📝 Full description (details)📋 All attributes + raw attributes (details)🌍 GPS, street, state (details)
👁️ Views, status: active / reserved / sold (details)🏠 Rent, costs, area, rooms, year (details)🚗 Make, model, mileage, PS, fuel (details)
📜 Legal notice with e-mail, phone, website (details)☎️ PRO shop phone, address, hours (seller profiles)📊 Median / quartile prices (price summary)

How to scrape Kleinanzeigen

  1. Type keywords in Search keywords (for example iphone 15), or pick a Category and a Location, or paste kleinanzeigen.de URLs.
  2. Narrow it with the Filters (price, seller type, radius, rooms, car make ...) or paste a search URL that already has them.
  3. Set Max listings, switch on any add-on you need, and press Start.
  4. Download the dataset as JSON, CSV or Excel, or connect it to your tools.

⬇️ Input

InputWhat it does
searchQueriesKeywords, one per line (kleinanzeigen.de URLs also work here). Each keyword is searched with the filters below.
startUrlskleinanzeigen.de search / category pages with their filters, listing pages (/s-anzeige/...), seller pages (/s-bestandsliste.html?userId=...) and PRO shops (/pro/...).
listingIdsAnzeigen-IDs or listing URLs: each returns the full listing page (details included, one listing charge).
sellerIdsSeller user ids, seller page URLs or PRO shop names: every listing they have online.
urlsFromFileMany URLs at once, one per line, or a link to a .txt / .csv file.
categoryOne of the site's 160 categories (id or name). Empty = all.
location, zipCodes, radiusCity, district, zip code or state (matched with the site's own location list), several zip codes, and the radius (1-200 km).
minPrice, maxPricePrice range in euros.
sellerTypeall, private, commercial.
adTypeall, offered (Angebote), wanted (Gesuche).
buyNowOnly, shippingOnly "Direkt kaufen" listings; shipping possible or pickup only.
sortingnewest, price_asc, price_desc, distance, relevance.
minRooms, maxRooms, minArea, maxAreaReal-estate filters (the category's own zimmer_d / qm_d filters). Without a category, Mietwohnungen is searched.
carMake, carModel, minYear, maxYear, minMileage, maxMileage, minPowerPs, maxPowerPs, fuel, transmissionVehicle filters. Without a category, Autos is searched.
filtersAny other category filter as the site names it, e.g. {"versand_s": "ja"}, {"autos.schaden_s": "f"}.
includeKeywords, excludeKeywordsKeep / drop listings by words in the title or description.
postedWithinHours, postedAfterOnly recent listings; a newest-first search stops at the first older page.
includeTopAds, onlyPriceReduced, photosOnlyDrop paid top ads, keep only price-reduced listings, drop listings without a photo.
includeDetailsAdd-on: open each listing page (full description, attributes, GPS, views, status, seller, legal notice, typed columns).
includeSellerDetailsAdd-on: one seller-profile row per unique seller.
priceSummaryAdd-on: one price-statistics row per search.
monitorMode, monitorStoreName, alertOnPriceDrop, minPriceDropPct, skipFirstRun, resetMonitorOnly listings not delivered by earlier runs; optional price drops.
webhookUrl, webhookHeaders, slackWebhookUrl, discordWebhookUrl, telegramToken + telegramChatId, notificationLimitAlerts with the new listings after each run.
maxResults, maxResultsPerSearch, maxListingsPerSellerCaps (0 = no limit).
deepScanRead past the 1,250-listing window.
compactCore fields only (for AI agents, sheets, MCP).
proxyConfiguration, maxConcurrencyNot needed; see Limits.

Input JSON

{
"category": "208",
"location": "Hamburg",
"radius": "30",
"maxResults": 100,
"includeDetails": true,
"includeSellerDetails": true,
"priceSummary": true
}

Set every filter on kleinanzeigen.de in your browser, copy the address (for example https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331r10+wohnung_mieten.zimmer_d:2,3) and paste it into startUrls. The actor reads it with its own filters; page numbers in the link are ignored and every page is read.

kleinanzeigen.de shows at most 50 pages of 25 listings per search. With Deep scan on, a bigger search is split by the site's own location list (states, then cities, then districts) and, where that does not help, by price bands, until every slice fits. Measured: "sofa" (204,923 results) → 3,976 listings from 186 pages; "schrank" → 2,000 listings in 76 s. Listings without a price drop out of a price-band slice, as on the website.

⬆️ Output

A listing from a search ("fahrrad", prefill run):

{
"record_type": "listing",
"id": 3554625768,
"url": "https://www.kleinanzeigen.de/s-anzeige/scott-damen-fahrrad-in-sehr-gutem-zustand/3554625768-217-8019",
"title": "Scott Damen Fahrrad in sehr gutem Zustand",
"description": "Ich verkaufe hier mein gepflegtes Damen-Fahrrad der Marke Scott, das sich in einem sehr guten...",
"price": 30,
"price_text": "30 €",
"price_type": "FIXED",
"price_currency": "EUR",
"original_price": null,
"price_reduced": false,
"zip_code": "74842",
"city": "Billigheim",
"location": "Baden-Württemberg - Billigheim",
"posted_at": "2026-10-28T10:51:00+01:00",
"posted_date": "2026-10-28",
"posted_text": "Heute, 10:51",
"category_id": 217,
"location_id": 8019,
"seller_id": "71088613",
"poster_type": "PRIVATE",
"is_top_ad": false,
"buy_now": false,
"tags": [],
"image_url": "https://img.kleinanzeigen.de/api/v1/prod-ads/images/61/61573469-5302-4a94-a62f-f2ec746f3b28?rule=$_59.AUTO",
"image_count": 3,
"search_query": "\"fahrrad\"",
"position": 3,
"details_fetched": false
}

The same row with Listing details on (a house for sale in Hamburg, excerpt):

{
"id": 3477133875,
"title": "Lukratives MFH mit Zusatzpotenzial in Hamburg",
"price": 995000,
"price_type": "FIXED",
"zip_code": "22143",
"city": "Hamburg Rahlstedt",
"region": "Hamburg",
"latitude": 53.5974121536285,
"longitude": 10.158718835781924,
"views": 1400,
"status": "active",
"category": "Häuser zum Kauf",
"vertical": "real_estate",
"property_type": "buy_house",
"purchase_price": 995000,
"size": 298.75,
"rooms": 14,
"lot_area": 658,
"year_constructed": 1979,
"house_type_label": "Mehrfamilienhaus",
"provision": true,
"balcony": true,
"garage": true,
"seller_name": "KAPVEST Real Estate GmbH",
"seller_account_type": "Gewerblicher Anbieter",
"seller_since": "27.07.2021",
"seller_followers": 168,
"store_url": "https://www.kleinanzeigen.de/pro/kapvest",
"imprint_emails": ["info@kapvest.de"],
"imprint_phones": ["0171 2687041"],
"posted_via": "openimmo",
"image_count": 40,
"details_fetched": true
}

A seller-profile row (Seller profiles on):

{
"record_type": "seller",
"seller_id": "86985015",
"seller_name": "KAPVEST Real Estate GmbH",
"poster_type": "COMMERCIAL",
"seller_since": "27.07.2021",
"seller_followers": 168,
"seller_online_listings": 38,
"seller_total_listings": 669,
"is_pro_shop": true,
"store_phone": "0991 27098638",
"store_address": "Hafenstraße 26\n94469 Deggendorf - Einkind",
"store_opening_hours": ["Mo - Do: 09:00 - 18:00", "Fr: 09:00 - 14:00"],
"store_website": "http://www.kapvest.de"
}

A price-summary row (Price summary on): listings_analysed 100, total_results_on_site 5,737, min_price 180,000, median_price 718,900, avg_price 939,262.9, max_price 9,149,000, commercial_share_pct 95, top_locations [{"name": "Hamburg Schnelsen", "count": 8}, ...].

Fields and how often they are filled

Measured on real runs (513 search-result rows from 19 searches across 12 categories; 100 house listings with details and 41 sellers from the Hamburg run above):

FieldFilled
id, url, title, zip_code, city, posted_date, category_id, location_id, seller_id, poster_type100%
price84% (the rest are "VB" without a number, free items or jobs; price_type still says so)
image_url96%
store_name (commercial sellers with a shop)37%
details: description, attributes, attributes_raw, images, latitude, longitude, views, category_path, seller_name, seller_since, posted_via100%
details on houses for sale: purchase_price 99%, size 100%, rooms 95%, lot_area 96%, house_type 97%, year_constructed 31%as the sellers fill them
details: imprint (commercial sellers' legal notice)95% of these house listings
seller profiles: seller_followers 100%, seller_online_listings 95%, store_address 71%, store_phone 59%, store_website 59%

Empty means the listing or seller does not show it: the actor writes null, never a made-up value.

How much does it cost to scrape Kleinanzeigen?

Pay per event, no start fee:

EventPriceWhen
Listing$0.00033 ($0.33 per 1,000)every listing row delivered
Listing details$0.00033each listing page read with Listing details on (a listing URL / id input includes its page in the listing price)
Seller profile$0.0018each unique seller with Seller profiles on
Price summary$0.009each search with Price summary on

Listings removed by a filter, duplicates and listings delivered by earlier monitor runs are never charged. Measured runs: 20 listings $0.0066; 1,000 listings $0.33; 100 houses with details + 41 seller profiles + 1 price summary $0.149. Set a maximum charge per run in Apify and the run stops cleanly when it is reached.

Run it on a schedule

Turn on Only new listings (monitor) and save the input as a task, then add an Apify schedule (for example every hour). Each run returns only listings that no earlier run delivered for the same search; a run with nothing new reads one page, writes nothing and charges nothing (measured: 1.7 s). Add a webhook, Slack, Discord or Telegram target to get the new listings pushed to you. alertOnPriceDrop also returns listings whose price went down (change_type: "price_drop", previous_price). A listing an earlier run delivered without Listing details is delivered once more with them when a later run turns Listing details on (change_type: "details").

Integrations, API & MCP

Run it from the Apify API, any Apify client (Python, JavaScript), Make, Zapier, n8n, Google Sheets, or as a tool for AI agents through the Apify MCP server. compact: true returns the core fields only. Example (Python):

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("TopApi/kleinanzeigen-scraper").call(run_input={"searchQueries": ["iphone 15"], "location": "Berlin", "radius": "20", "maxResults": 200})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["price"], item["title"], item["url"])

Limits & empty runs

  • 1,250 listings per search without Deep scan (the site's own 50-page limit).
  • Phone numbers that the site only shows after a login or behind the call button are not read; PRO shop phones and the contacts in a commercial seller's legal notice are, because the page shows them.
  • Listing details, views and the posted time: the site shows a date (and a time only for today / yesterday in search results).
  • The actor reads kleinanzeigen.de directly and moves to Apify datacenter proxies (a fresh IP when one is blocked), then residential proxies on its own. Listing pages are not read over residential proxies; when only those answer, rows ship without details and the details are not charged (the status message says so).
  • A search that matches nothing ends SUCCEEDED with a message saying what to change; nothing is charged.

FAQ

How many listings can Kleinanzeigen Scraper collect in one run?

As many as you set in Max listings: 1,250 per search, and past that with Deep scan (3,976 listings in one measured run).

Which categories are supported?

All 160 of the site's own categories, from Mietwohnungen and Häuser zum Kauf to Autos, Jobs, Smartphones and Verschenken.

Can I get only new listings?

Yes: monitor mode returns only listings not delivered before, optionally with price drops and alerts.

Does it return the full description, all photos and the views?

With Listing details on: the full description, every photo, all attributes, GPS, the view count (read without adding a view) and the listing's status.

Can I scrape a seller's or a PRO shop's whole inventory?

Yes: put the seller id, the seller page URL or the PRO shop name into Sellers.

Does it return real-estate and car fields as columns?

Yes, with Listing details on: rent, costs, area, rooms, year built and amenities for real estate; make, model, first registration, mileage, power, fuel and equipment for vehicles; job type, hours and wage for jobs.

Do I need a Kleinanzeigen account, cookies or an API key?

No.

Can I use it with the Apify API or an MCP server?

Yes, see Integrations.

Why did my run return no listings?

The status message says why: a search with no results, filters that removed every listing (with the counts per filter), a location the site does not know, or nothing new since the last monitor run.

Your feedback

Missing a field or a filter? Open an issue on the actor page and it gets looked at.