Kleinanzeigen Scraper — Monitor New Ads & Alerts avatar

Kleinanzeigen Scraper — Monitor New Ads & Alerts

Pricing

from $3.00 / 1,000 scraped listings

Go to Apify Store
Kleinanzeigen Scraper — Monitor New Ads & Alerts

Kleinanzeigen Scraper — Monitor New Ads & Alerts

Scrape kleinanzeigen.de classified ads by keyword, PLZ + radius, or Start URLs. Extract titles, prices, descriptions, high-res images, attributes, location, and seller trust metrics. Monitor mode with Telegram & Discord alerts. No personal contact data.

Pricing

from $3.00 / 1,000 scraped listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Kleinanzeigen Scraper — Germany Classified Ads, Prices & Monitor Alerts

Disclaimer: This is an unofficial integration developed independently. It is not affiliated with, sponsored by, or endorsed by Kleinanzeigen.de (formerly eBay Kleinanzeigen) or any of its subsidiaries.

Kleinanzeigen and related names are trademarks of Kleinanzeigen GmbH. Data is read from publicly accessible search results and listing pages. No Kleinanzeigen account login is required.

This Actor is provided for informational, research, and price monitoring purposes only. You are solely responsible for complying with applicable laws, Kleinanzeigen's terms of use, and your organization's policies.

Extract structured classified ads data from Germany's largest marketplace — kleinanzeigen.de (formerly eBay Kleinanzeigen). Search by keyword, German postal code (PLZ) + radius, price range, seller type, and shipping filters — or paste a pre-filtered browser URL. Parses full descriptions, dynamic attributes (brand, model, size, condition), all high-resolution images, location, and non-personal seller metrics (account type, registration date, active listing counts, trust badges). No seller names, emails, or phone numbers are collected.

Includes monitoring mode with delta tracking and native Telegram & Discord webhooks for real-time deal alerts when new listings appear.

Best for: Kleinanzeigen price research, local classifieds monitoring, resale arbitrage alerts, German marketplace data export, and bulk JSON/CSV pipelines via Apify integrations.

When to use this Actor

  • Kleinanzeigen price tracking — Collect listing prices, attributes, and locations for market averages and trend analysis.
  • Real-time deal hunting & arbitrage — Run in monitor mode every 1–5 minutes and get instant Telegram or Discord alerts for newly listed underpriced items.
  • Local inventory matching — Search by PLZ + radius (e.g. RTX 4090 within 50 km of Berlin) to find pickup-friendly deals.
  • Category & filter scraping — Copy any filtered search URL from your browser (category, brand, condition, sort order) into Start URLs for exact replication.
  • Seller trust signals — Filter private vs commercial sellers and parse satisfaction badges without collecting personal contact data.

When not to use this Actor

  • Private messages or seller contact — This Actor reads public listing pages only; it does not access Kleinanzeigen messaging or seller phone/email fields.
  • Account-authenticated actions — No login, favorites, or saved-search API; use Start URLs for pre-built filter combinations instead.
  • Heavy JavaScript SPAs outside Kleinanzeigen — Built specifically for kleinanzeigen.de search and detail pages, not generic web scraping.

Key Features

  • Lightweight & fast — Runs on 128–512 MB RAM with efficient HTTP requests — no heavy headless browser required.
  • Full image extraction — All available high-resolution listing images, not just search-result thumbnails.
  • PLZ + radius search — German postal code geolocation with configurable km radius (5–200 km).
  • Seller trust profile parsing — Account type, registration date, active ads count, and badges (TOP Zufriedenheit, Sehr zuverlässig, Besonders freundlich). Personal contact data excluded.
  • Telegram & Discord alerts — Native webhook support in input config: images, prices, location, and description snippets on new listings.
  • Smart monitoring — Key-Value store tracks seen listing IDs; stops pagination early when consecutive known ads are found.
  • Parallel detail fetching — Configurable concurrency for faster bulk runs on large result sets.

Input Parameters

ParameterTypeDefaultDescription
startUrlsArray[]Direct URLs to search results, categories, or individual listings. Filters from the URL are preserved.
searchQueryStringSearch term (e.g. iphone 15 pro). Ignored when Start URLs are provided.
postalCodeStringGerman postal code (PLZ) to restrict search to a region.
radiusString"0"Radius in km around PLZ: 5, 10, 20, 30, 50, 100, 150, 200.
minPrice / maxPriceNumberFilter listings by price range (€).
sellerTypeString"all"all, private (Privater Nutzer), or commercial (Gewerblicher).
adTypeString"all"all, biete (Offers), or suche (Wanted).
shippingString"all"all or shipping_only (Versand möglich).
maxItemsInteger5Maximum number of listings to collect. Raise for production.
scrapeDetailsBooleantrueFetch detail pages for description, images, attributes, seller metrics.
maxConcurrencyInteger5Parallel detail-page fetches (1–30). Higher = faster, more proxy load.
monitorModeBooleanfalseDelta tracking: only new/updated listings in output; early stop on known ads.
telegramTokenStringTelegram Bot token for alert notifications.
telegramChatIdStringTelegram chat ID to receive alerts.
discordWebhookStringDiscord webhook URL for rich listing embed cards.
proxyConfigurationObjectResidential DEApify Proxy settings. German residential proxy recommended.

Input Example

{
"searchQuery": "iphone 15 pro",
"postalCode": "10115",
"radius": "30",
"minPrice": 400,
"maxPrice": 800,
"sellerType": "private",
"maxItems": 200,
"maxConcurrency": 15,
"monitorMode": false,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE"
}
}

Output Format

Each dataset row = one parsed Kleinanzeigen listing.

FieldTypeDescription
adIdStringUnique Kleinanzeigen listing ID.
urlStringCanonical listing URL.
titleStringAd headline.
priceStringNumeric price or negotiable label.
priceTypeStringe.g. Festpreis, VB (Verhandlungsbasis).
descriptionStringFull listing description text.
locationStringCity, state, and region string.
shippingStringShipping cost or availability note.
attributesObjectDynamic key/value pairs (brand, color, condition, etc.).
imagesArrayHigh-resolution image URLs.
seller.idStringSeller account ID (no personal name).
seller.typeStringPrivater Nutzer or commercial.
seller.active_sinceStringAccount registration date.
seller.active_listingsStringCount of active ads.
seller.badgesArrayTrust badges when present.
publishedDateStringRelative or absolute publish time from listing.
scrapedAtStringExtraction timestamp (UTC ISO 8601).

Output Example

{
"adId": "3449640229",
"url": "https://www.kleinanzeigen.de/s-anzeige/apple-iphone-13-128gb-top-zustand-inklusive-zubehoer/3449640229-173-9039",
"title": "Apple iPhone 13 128GB top Zustand inklusive Zubehör",
"price": "200.00",
"priceType": "Festpreis",
"description": "Verkaufe hier mein sehr gut erhaltenes iPhone 13 in Blau. Das iPhone wurde stets mit Hülle, Panzerglas und Kamerapanzerglas genutzt und ist daher in top Zustand!",
"location": "77656 Baden-Württemberg - Offenburg",
"shipping": "+ Versand ab 1,99 €",
"attributes": {
"Art": "Apple",
"Farbe": "Blau",
"Gerät & Zubehör": "Zubehör",
"Zustand": "Sehr Gut"
},
"images": [
"https://img.kleinanzeigen.de/api/v1/prod-ads/images/0c/0c43bc93-2246-4b30-854d-2bfdcde70123_rule.jpg",
"https://img.kleinanzeigen.de/api/v1/prod-ads/images/dc/dcd5d9d4-cc33-4b0c-8126-2bfdcde98124_rule.jpg"
],
"seller": {
"id": "27922947",
"type": "Privater Nutzer",
"active_since": "02.02.2015",
"active_listings": "5 Anzeigen online",
"badges": [
"Besonders freundlich",
"TOP Zufriedenheit",
"Sehr zuverlässig"
]
},
"publishedDate": "Gestern, 22:35",
"scrapedAt": "2026-07-03T13:37:55.201Z"
}

Use Cases

Use CaseWhat you get
Resale arbitrageNew-listing alerts with price, photos, and location for flip opportunities
Market pricingStructured price + attribute datasets per keyword or category
Local deal huntingPLZ + radius filters for pickup-friendly classifieds
Competitor monitoringTrack commercial seller inventory in your niche
Data pipelinesJSON/CSV export or webhook integrations to Sheets, databases, and BI tools
AI / MCP workflowsRun via Apify API, clients, or MCP and summarize German classifieds

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/kleinanzeigen-scraper').call({
searchQuery: 'iphone 15 pro',
postalCode: '10115',
radius: '30',
maxItems: 50,
scrapeDetails: true,
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
apifyProxyCountry: 'DE',
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/kleinanzeigen-scraper").call(
run_input={
"searchQuery": "iphone 15 pro",
"postalCode": "10115",
"radius": "30",
"minPrice": 400,
"maxPrice": 800,
"maxItems": 50,
"scrapeDetails": True,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE",
},
}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(len(items), items[:3])

cURL

curl "https://api.apify.com/v2/acts/crawloop~kleinanzeigen-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"searchQuery": "iphone 15 pro",
"postalCode": "10115",
"radius": "30",
"maxItems": 50,
"scrapeDetails": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE"
}
}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/kleinanzeigen-scraper.

Example prompts:

  • "Run Kleinanzeigen Scraper for iphone 15 pro near PLZ 10115 within 30 km, max 50, and return title, price, location, url"
  • "Scrape Kleinanzeigen listings for RTX 4090 and summarize the cheapest 10 with shipping"
  • "Chain Kleinanzeigen Scraper then Marktplaats Scraper for the same keyword and compare DE vs NL prices"

Suite next step

For Dutch classifieds, use Marktplaats Scraper. For German vehicles, use Mobile.de Scraper. For eBay sold comps, use eBay Sold Listings Scraper.

ActorWhat it covers
Kleinanzeigen Scraper ◄── you are hereGerman classifieds + monitor alerts
Marktplaats ScraperDutch classifieds marketplace
Mobile.de ScraperGerman vehicle marketplace
eBay Sold Listings ScrapereBay completed sales / sold comps

FAQ

How is this different from a generic web scraper?

This Actor is built specifically for kleinanzeigen.de: Kleinanzeigen pagination, dynamic attribute parsing, seller trust badges, and monitor-mode delta tracking — out of the box.

Do I need proxies?

For high-volume runs, aggressive monitoring (every 1 minute), or large maxItems batches, use Apify Residential Proxies with Germany (DE) country targeting to improve reliability.

Can I scrape specific categories or advanced filters?

Yes. Open kleinanzeigen.de in your browser, apply all filters (category, brand, price, condition, sort), copy the URL from the address bar, and paste it into Start URLs (startUrls). This is the most reliable way to replicate complex filter combinations.

How does Monitoring Mode work?

With monitorMode: true, listing IDs are stored in the default Key-Value Store. On each run the Actor scans from the top of search results. New or price-changed listings are written to the dataset and sent to Telegram/Discord. After 5 consecutive already-known unchanged ads, pagination stops to save compute.

Does it collect seller names, emails, or phone numbers?

No. The Actor intentionally excludes personal contact data. Seller output includes only non-identifying metrics: account ID, seller type, registration date, active listing count, and public trust badges.

Can I scrape 1000+ listings in one run?

Yes. Set maxItems to your target (e.g. 1000) and tune maxConcurrency (default 15, max 30). Use German residential proxies for large batches. Pagination walks search result pages automatically until the limit is reached or results are exhausted.

Does it export to JSON / CSV / API?

Yes. Results are written to the Apify dataset. Download JSON, CSV, or Excel from the run, or connect webhooks and integrations (Google Sheets, BigQuery, custom API endpoints, etc.).