Kleinanzeigen Scraper — German Classified Ads & Prices avatar

Kleinanzeigen Scraper — German Classified Ads & Prices

Pricing

from $2.50 / 1,000 results

Go to Apify Store
Kleinanzeigen Scraper — German Classified Ads & Prices

Kleinanzeigen Scraper — German Classified Ads & Prices

Scrape Kleinanzeigen.de, Germany's biggest classifieds site. Extract title, description, price, negotiable flag, posting date, postcode and town, seller type (private or commercial), seller ID, shop link, category attributes such as mileage and registration, and images. 16 categories. No API key.

Pricing

from $2.50 / 1,000 results

Rating

0.0

(0)

Developer

Logiover

Logiover

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Kleinanzeigen Scraper — German Classified Ads, Prices & Sellers

Germany's biggest classifieds site in rows: title, full description, price with the VB negotiable flag, postcode and town, and whether the seller is a private person or a dealer.

What does the Kleinanzeigen Scraper do?

This Actor collects live ads from Kleinanzeigen.de — formerly eBay Kleinanzeigen, and still the place Germany buys and sells almost everything second-hand. The site answers the very same search URL with its internal view model when the request asks for JSON, so this Actor reads structured ad objects rather than parsing rendered HTML. That is why each row carries the fields the page renders from, including the one most classifieds scrapers miss: posterType, which separates a private seller from a commercial dealer.

Choose one of 16 top-level categories, optionally add a keyword and a price range, and the Actor pages through the results writing one flat row per ad: title and description with HTML entities decoded, the price string plus a parsed euro value and the negotiable and giveaway flags, posting date, postcode and town, seller ID and type, shop link for dealers, the per-category attribute strip such as mileage and first registration, shipping availability and photos.

Who is it for?

  • Resellers and arbitrage traders hunting under-priced stock across a whole category.
  • Market researchers measuring German second-hand prices, which move ahead of retail.
  • Dealers and lead-generation teams — the private-versus-commercial split is on every row.
  • Automotive analysts using the cars category, where mileage and first registration come as attributes.
  • Marketplace operators benchmarking supply, pricing and listing quality in the German market.

Use cases

  • Track the price of a model across a category and spot listings priced below the running median.
  • Split a category by seller type to size the professional share of supply.
  • Build a dealer directory from sellerId and shopUrl for commercial posters.
  • Monitor how many ads are marked VB (negotiable) as a proxy for how soft a market is.
  • Watch new listings in a postcode area daily for local sourcing.
  • Feed an AI agent live German second-hand prices for valuation questions.

Why use this Kleinanzeigen Scraper?

  • Private vs commercial seller flag on every ad — the split that makes a classifieds dataset useful.
  • Prices parsed properly: 4.990 € VB becomes 4990 plus a negotiable flag, and giveaways become 0 rather than null.
  • Descriptions decoded, so TÜV 07/27 arrives as readable German rather than escaped markup.
  • 16 verified categories — cars, property, rentals, electronics, phones, home, fashion, family, pets, tickets, services and more.
  • Repeated top ads de-duplicated — Kleinanzeigen repeats promoted ads on every page, and rows are keyed by ad ID so a run is never padded.
  • Keyless and login-free — nothing to register, nothing to rotate.

What data can you extract?

One row per ad. Anything the source left blank comes back as null.

FieldTypeDescription
adIdstringKleinanzeigen ad identifier
urlstringDirect link to the ad
titlestringAd title
descriptionstringAd description, HTML entities decoded
priceTextstringPrice exactly as published, e.g. "4.990 € VB"
priceEurnumberParsed price in euros
isNegotiablebooleanMarked VB (Verhandlungsbasis, open to offers)
isFreebooleanListed as a giveaway (zu verschenken)
categorystringCategory requested
postedDatestringPosting date as shown, DD.MM.YYYY
postcodestringGerman postcode
townstringTown or district
sellerIdnumberKleinanzeigen user ID of the seller
sellerTypestringPRIVATE or COMMERCIAL
isCommercialbooleanTrue where the seller is a dealer
shopUrlstringDealer shop page where one exists
attributesstringCategory attribute strip, e.g. "185.447 km, EZ 07/2002"
shippingAvailablebooleanSeller offers shipping
isTopAdbooleanPromoted top ad
hasVideobooleanAd includes video
imageCountnumberNumber of photos
imageUrlstringFirst photo
scrapedAtstringWhen this row was collected

Sample output

{
"adId": "3082260191",
"url": "https://www.kleinanzeigen.de/s-anzeige/sofort-bargeld-apple-iphone-samsung-galaxy-playstation-5-uvm-/308226...",
"title": "Sofort Bargeld! Apple iPhone Samsung Galaxy Playstation 5 uvm. !",
"description": "Bei dir verstaubt deine alte Technik in der Schublade? Dann mach sie bei mySWOOOP zu Geld und...",
"priceText": "VB",
"priceEur": null,
"isNegotiable": true,
"isFree": false,
"category": "Electronics",
"postedDate": "05.08.2026",
"postcode": "28195",
"town": "Bremen Altstadt",
"sellerId": 28819742,
"sellerType": "COMMERCIAL",
"isCommercial": true,
"shopUrl": "/pro/myswooop",
"attributes": null,
"shippingAvailable": null,
"isTopAd": true,
"hasVideo": false,
"imageCount": 7,
"imageUrl": "https://img.kleinanzeigen.de/api/v1/prod-ads/images/b0/b0c745df-291a-46e8-b529-e4711f6fc619?rule=$_59.AUTO",
"scrapedAt": "2026-08-15T07:52:35.110Z"
}

How to use the Kleinanzeigen Scraper

Option A — a whole category

Pick a category such as cars, property or electronics, leave the keyword empty, set a result limit and let it page. Roughly 27 unique ads arrive per page after the repeated top ads are removed.

Option B — a keyword inside a category

Combine both: category elektronik with keyword iphone, or autos with golf 7. This is the most precise mode and the one to schedule for monitoring.

Option C — a price band

Add a minimum and maximum price to isolate a segment — cars between €1,000 and €15,000, for instance — and diff the results between daily runs to catch new stock.

Input parameters

InputTypeDescription
categorystringTop-level Kleinanzeigen category to collect. Combine with a keyword to narrow it. Default: "autos".
keywordstringOptional search term, e.g. iphone, golf 7, ebike. Leave empty to take the whole category.
priceMinintegerOptional lower price bound.
priceMaxintegerOptional upper price bound.
maxResultsintegerStop after this many ads. Each page returns about 27 unique ads plus a few repeated top ads, which are de-duplicated. Default: 500.
proxyConfigurationobjectKleinanzeigen serves German exits. Residential proxy pinned to Germany is used automatically.

Tips for best results

  • Keywords are matched loosely by Kleinanzeigen. A very specific phrase can return less than a broad word plus a category.
  • Every page repeats two or three promoted top ads. They are de-duplicated by ad ID, which is why a page adds about 27 rows rather than 33.
  • priceEur is null when the ad says only "VB" with no figure — the seller genuinely did not name a price, and isNegotiable will be true.
  • attributes is what the category defines: mileage and registration for cars, room count and area for property, size for fashion.
  • shippingAvailable is meaningful in electronics and fashion and empty in cars, because nobody posts a car.

Integrations

Connect this Actor to Make, Zapier, n8n, Slack, Google Sheets, GitHub, Airtable or any HTTP endpoint through Apify integrations. Every finished run can push its dataset straight into your warehouse, or fire a webhook so a downstream job starts the moment the data lands.

API usage

Run the Actor from your own code with the Apify API. Datasets can be exported as JSON, CSV, Excel, XML, RSS or HTML, and every run is available through the Apify API reference.

curl -X POST "https://api.apify.com/v2/acts/logiover~kleinanzeigen-de-classifieds-scraper/runs?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"input": {"category": "autos", "keyword": "", "priceMin": 1000, "priceMax": 15000, "maxResults": 1000, "proxyConfiguration": {"useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"], "apifyProxyCountry": "DE"}}}'

Python, JavaScript, PHP and CLI clients are documented under Apify API clients.

Use with AI agents (MCP)

This Actor is callable from any MCP-compatible client — Claude, Cursor, VS Code or your own agent — through the Apify MCP server. An agent can call it to answer live questions about German second-hand prices, local supply and private versus dealer listings instead of guessing from stale training data.

FAQ

Do I need a Kleinanzeigen account or API key?

No. The Actor reads public ads with no login and no key.

How does it get JSON out of an HTML site?

Kleinanzeigen serves its internal view model when the request asks for JSON. The Actor asks for JSON and reads the ad objects directly, which is both faster and far more stable than parsing rendered markup.

Which categories are supported?

16: cars, motorcycles, property, flats to rent, electronics, phones, home & garden, fashion & beauty, family & baby, leisure, music/film/books, tickets, pets, services, free & swap, and lessons & courses.

How many ads can one run return?

Categories run to hundreds of thousands of ads. The practical limit is the result cap you set, and pagination keeps producing new ads well into the deep pages.

What does VB mean?

Verhandlungsbasis — the seller is open to offers. It is captured as the isNegotiable flag and left visible in priceText.

Can I get the seller's phone number or name?

No. Kleinanzeigen keeps contact details behind its own message flow. The Actor collects the seller ID, the seller type, and the public shop link for dealers.

Why did my run return zero ads?

Usually a keyword too rare for the chosen category. Drop the keyword, or move to a broader category.

Is the data in German?

Yes. Titles, descriptions and attributes are published in German and collected as written.

Can I export to CSV or Excel?

Yes. Every run's dataset exports as JSON, CSV, Excel, XML, RSS or HTML from the Storage tab, the API, or automatically through an integration.

How fresh is the data?

Every run reads the site live at that moment, so the data is as fresh as the site itself. Schedule the Actor hourly, daily or weekly to build a time series.

How often is the Actor updated?

It is monitored and fixed when the site changes its markup or its endpoints. Report anything that looks wrong through the Issues tab and it gets picked up.

This Actor collects only publicly available information — the same pages any visitor can open without logging in. It does not bypass a login, and it does not touch private or personal accounts. Public data collection is legal in most jurisdictions, but how you use the data is your responsibility: if any record contains personal data, GDPR and comparable laws still apply, and you need a lawful basis for processing it. When in doubt, take legal advice. See Apify's ethical web scraping guide.