# Kleinanzeigen Classifieds Scraper (`confidential_gnat/kleinanzeigen-listings-scraper`) Actor

Scrape ads from Kleinanzeigen (kleinanzeigen.de, formerly eBay Kleinanzeigen): title, price, location, coordinates, photos, attributes, features and seller. Search pages, keywords or single ads. Export JSON, CSV or Excel.

- **URL**: https://apify.com/confidential_gnat/kleinanzeigen-listings-scraper.md
- **Developed by:** [ActorFlow](https://apify.com/confidential_gnat) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Kleinanzeigen (eBay Kleinanzeigen) Scraper - Anzeigen, Preise & Verkäufer aus Deutschland

![Kleinanzeigen Classifieds Scraper: jede Anzeige auch über das Suchlimit hinaus, mit Aufrufen und Verkäuferbewertungen bei jeder Anzeige](https://i.postimg.cc/t43mwmsC/Gemini-Generated-Image-k5gubdk5gubdk5gu.jpg)

**Anzeigen von Kleinanzeigen (kleinanzeigen.de) scrapen**, dem größten Kleinanzeigenmarkt Deutschlands, früher eBay Kleinanzeigen: Titel, **Preis**, Standort mit Koordinaten, Fotos, Eigenschaften (Kilometerstand, Zimmer, Zustand und mehr), Ausstattung und Verkäuferdaten für Wohnungen, Autos, Fahrräder, Elektronik und jede andere Kategorie. Export als **JSON, CSV oder Excel** oder Abruf als **API**: Such-URL einfügen oder Suchbegriff eingeben, auf Start klicken. **English version below** (Englische Version weiter unten).

**Zielwebsite:** [kleinanzeigen.de](https://www.kleinanzeigen.de)

### ✨ Funktionen des Kleinanzeigen-Scrapers

- **Anzeigen aus jeder Kategorie** - Immobilien zur Miete und zum Kauf, Autos, Fahrräder, Jobs, Möbel, Elektronik und mehr, als einheitlicher Datensatz pro Anzeige.
- **Blättern durch alle Ergebnisseiten** - liest die Ergebnisseiten einer Suche, bis Ihr Maximum erreicht ist.
- **Automatische Aufteilung großer Suchen** - die Seite zeigt höchstens 1.250 Anzeigen pro Suche; größere Suchen werden in Preisbereiche aufgeteilt, damit Sie mehr erhalten.
- **Proxy-Unterstützung** - optional; aktivieren Sie Apify Proxy, wenn Sie eigene IPs nutzen möchten.
- **Filter nach Ort, Umkreis, Kategorie und Verkäufer** - ein Stichwort oder eine Kategorie in jeder deutschen Stadt, jedem Stadtteil oder jeder Postleitzahl suchen, per Umkreis erweitern, nur private oder nur gewerbliche Verkäufer, nur Angebote oder nur Gesuche behalten und den Preis begrenzen. Oder eine gefilterte Such-URL der Website einfügen.
- **Zusatzdaten, die andere Scraper nicht liefern** - wie oft eine Anzeige angesehen wurde, Bewertung und Bewertungsanzahl des Verkäufers, Versandkosten und Käuferschutz, zusätzlich zu Koordinaten, Eigenschaften und Ausstattung.
- **Alle Details oder schnelle Karten** - jede Anzeige öffnen für vollständige Beschreibung, alle Fotos, Koordinaten, Straße und Eigenschaften, oder nur die Suchergebnisse lesen.
- **Kein Browser nötig** - Läufe sind schnell und deutlich günstiger als bei browserbasierten Scrapern.
- **Nur neue Anzeigen bei jedem Lauf** - ein Cache überspringt bereits gespeicherte Anzeigen.

### 🚀 Kleinanzeigen-Anzeigen scrapen in 5 Schritten

1. [Registrieren](https://apify.com/sign-up) Sie sich kostenlos bei Apify - inklusive **5 $ Guthaben pro Monat**.
2. Öffnen Sie die Actor-Seite und klicken Sie auf **Try for free**.
3. Füllen Sie die **Eingabefelder** aus (eine Kleinanzeigen-URL oder ein Suchbegriff ist nötig).
4. Klicken Sie auf **Start** und warten Sie, bis der Lauf beendet ist.
5. Laden Sie die Ergebnisse im Tab **Output** als JSON, CSV oder Excel herunter.

Sie können den Actor auch über die [Apify API](https://docs.apify.com/api/v2) starten oder in Workflows mit [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/) oder [n8n](https://n8n.io/) einbinden.

### 💰 Preise des Kleinanzeigen-Scrapers

Der Actor wird **pro Ergebnis** abgerechnet, abhängig von den Compute Units eines Laufs.

- Neue Apify-Konten erhalten **5 $ Guthaben pro Monat**.
- Er liest einfache Webseiten statt einen Browser zu steuern und kostet deshalb deutlich weniger als browserbasierte Scraper.
- Apify Proxy ist standardmäßig aus; wenn Sie es aus lassen, sind Läufe am günstigsten.

### 🔧 Eingabe des Kleinanzeigen-Scrapers

Das Formular beginnt mit den Kleinanzeigen-URLs, dem Anzeigenlimit und dem Cache-Namen, danach folgen die optionalen Filter. Die Proxy-Einstellungen stehen ganz unten.

![Eingabeformular des Kleinanzeigen Classifieds Scrapers in der Apify Console mit den Feldern 1 bis 8: Kleinanzeigen-URLs, maximale Anzeigen, Cache-Projektname, Verkäufertyp, Mindestpreis, Höchstpreis, jede Anzeige öffnen, Aufrufe und Verkäuferbewertung](https://i.postimg.cc/sgY0q0MP/Gemini-Generated-Image-ywpwd2ywpwd2ywpw.jpg)

1. **Kleinanzeigen-URLs** - Suchseiten oder einzelne Anzeigen, die gescrapt werden (hier die Mietwohnungen in Berlin)
2. **Max. Anzeigen pro Suche oder URL** - Limit für jede Start-URL (hier 100)
3. **Cache-Projektname** - bei jedem geplanten Lauf denselben Namen nutzen, um nur neue Anzeigen zu erhalten (hier `berlin-rent`)
4. **Verkäufertyp** - nur private, nur gewerbliche oder alle Verkäufer (hier Privat)
5. **Mindestpreis (€)** - niedrigster Preis, der enthalten ist (hier 500)
6. **Höchstpreis (€)** - höchster Preis, der enthalten ist (hier 1500)
7. **Jede Anzeige öffnen (volle Details)** - an für Beschreibung, alle Fotos, Koordinaten, Eigenschaften und Verkäufer, aus für schnelle Datensätze
8. **Aufrufe und Verkäuferbewertung** - zusätzlich die Aufrufzahl der Anzeige und die Bewertung des Verkäufers lesen

Suchbegriff, Ort, Kategorie-ID, Umkreis und Anzeigentyp stehen im selben Abschnitt „Optional filters and settings“, die Proxy-Konfiguration kommt zuletzt.

| Feld | Typ | Pflicht | Standard | Beschreibung |
| ---- | --- | ------- | -------- | ------------ |
| Kleinanzeigen-URLs (`startUrls`) | Liste | — | Mietwohnungen in Berlin | Suchseiten (Kategorie, Suchbegriff oder Ort) und einzelne Anzeigenseiten. Kategorie, Ort und Suchbegriff auf kleinanzeigen.de einstellen und die Adresse einfügen. |
| Max. Anzeigen pro Suche oder URL (`maxItems`) | Ganzzahl | — | 5 | Höchstzahl gespeicherter Anzeigen pro Start-URL. Die Seite zeigt höchstens 1.250 Anzeigen pro Suche; für mehr wird die Suche automatisch in Preisbereiche aufgeteilt. |
| Cache-Projektname (`cacheProjectName`) | Text | — | — | Verwenden Sie bei jedem geplanten Lauf denselben Namen, um nur neue Anzeigen zu erhalten. Bereits gespeicherte Anzeigen werden übersprungen, nicht berechnet und zählen nicht zum Maximum. Jeder Datensatz erhält `changeType: new`. |
| Suchbegriff (`searchQuery`) | Text | — | — | Nach einem Stichwort suchen, z. B. `gebrauchtes fahrrad`. Kombinierbar mit Ort, Kategorie und den Filtern unten, oder leer lassen, um nur die URLs zu nutzen. |
| Ort (`location`) | Text | — | — | Stadt, Stadtteil oder Postleitzahl, z. B. `Hamburg` oder `80331`. Wird mit Suchbegriff oder Kategorie genutzt. Leer bedeutet ganz Deutschland. |
| Kategorie-ID (`categoryId`) | Ganzzahl | — | — | Eine Kategorie durchsuchen, z. B. 203 Mietwohnungen, 216 Autos, 217 Fahrräder, 161 Elektronik. Es ist die Zahl nach dem c in einer Kategorie-URL. |
| Umkreis (`radius`) | Auswahl | — | Nur dieser Ort | Auch Anzeigen im Umkreis von 5 bis 200 km um den Ort einbeziehen. |
| Verkäufertyp (`sellerType`) | Auswahl | — | Alle | Nur private Verkäufer, nur gewerbliche Verkäufer oder beide. |
| Anzeigentyp (`adType`) | Auswahl | — | Alle | Anzeigen, die etwas anbieten, Anzeigen, die etwas suchen (Gesuche), oder beide. |
| Mindestpreis (€) (`minPrice`) | Ganzzahl | — | — | Nur Anzeigen ab diesem Preis. Gilt für jede Suchseite. |
| Höchstpreis (€) (`maxPrice`) | Ganzzahl | — | — | Nur Anzeigen bis zu diesem Preis. Gilt für jede Suchseite. |
| Jede Anzeige öffnen (`scrapeDetails`) | Boolean | — | true | An: jede Anzeigenseite wird geöffnet (volle Beschreibung, alle Fotos, Koordinaten, Straße, Eigenschaften, Ausstattung, Veröffentlichungsdatum, Verkäufer). Aus: schnelle Datensätze nur aus den Suchergebnissen. |
| Aufrufe und Verkäuferbewertung (`includeExtras`) | Boolean | — | true | Mit Jede Anzeige öffnen: zusätzlich Aufrufzahl der Anzeige sowie Bewertung und Bewertungsanzahl des Verkäufers lesen. |
| Proxy-Konfiguration (`proxyConfiguration`) | Objekt | — | Apify Proxy aus | Optional. Nur aktivieren, wenn Sie eigene Proxy-IPs nutzen möchten. |

**Unterstützte URL-Typen:**

- Kategoriesuche: `https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331`
- Stichwortsuche: `https://www.kleinanzeigen.de/s-fahrrad/k0`
- Ohne URL: Suchbegriff oder Kategorie-ID plus Ort und Filter ausfüllen
- Stichwort an einem Ort: `https://www.kleinanzeigen.de/s-berlin/fahrrad/k0l3331`
- Einzelne Anzeige: `https://www.kleinanzeigen.de/s-anzeige/<titel>/<anzeigen-id>-<kategorie>-<ort>`

### 📦 Ausgabedaten des Kleinanzeigen-Scrapers

Die Ausgabe ist ein einheitlicher JSON-Datensatz pro Anzeige mit diesen Schlüsseln: `id`, `url`, `title`, `description`, `price`, `priceCurrency`, `priceText`, `priceType`, `isTopAd`, `shipping`, `shippingCost`, `buyerProtection`, `buyNow`, `category`, `categoryId`, `categoryPath`, `postalCode`, `state`, `city`, `district`, `street`, `latitude`, `longitude`, `livingArea`, `rooms`, `attributes`, `features`, `publishedText`, `publishedAt`, `sellerName`, `sellerId`, `sellerType`, `sellerSince`, `sellerBadges`, `imageUrls`, `imageCount`, `viewCount`, `sellerRating`, `sellerReviewCount`, `changeType`, `scrapedAt`. Werte, die eine Anzeige nicht enthält, sind `null`. Der Datensatz hat 1 Ansicht.

- **Ads** - eine Tabelle mit Titel, Preis, Kategorie, Ort, Wohnfläche, Zimmern, Verkäufertyp, Veröffentlichungsdatum und Link.

**Ausgabe im Überblick:**

| Anzeige | Preis | Kategorie | Ort | Fläche (m²) | Zimmer | Verkäufer |
| ------- | ----- | --------- | --- | ----------- | ------ | --------- |
| [Nachmieter für wunderschöne 3-Zimmer Wohnung ](https://www.kleinanzeigen.de/s-anzeige/nachmieter-fuer-wunderschoene-3-zimmer-wohnung-mit-einbaukueche-gesucht-/3487154581-203-3413) | 1.599 € | Mietwohnungen | 12277 Berlin | 74 | 3 | commercial |
| [1-Zimmer-Wohnung Berlin Friedrichshain ab sof](https://www.kleinanzeigen.de/s-anzeige/1-zimmer-wohnung-berlin-friedrichshain-ab-sofort/3549121152-203-3353) | 864 € | Mietwohnungen | 10247 Friedrichshain-Kreuzberg | 39 | 1 | private |
| [Möbl. 2-Zi-Wohnung Friedrichshain, 60 m², 01.](https://www.kleinanzeigen.de/s-anzeige/moebl-2-zi-wohnung-friedrichshain-60-m-01-11-2026-20-03-2027/3543416917-203-9662) | 1.600 € | Mietwohnungen | 10249 Pankow | 60 | 2 | private |
| [Neubauwohnung Charlottenburg: ab sofort frei](https://www.kleinanzeigen.de/s-anzeige/neubauwohnung-charlottenburg-ab-sofort-frei/3554104238-203-3342) | 1.100 € | Mietwohnungen | 10625 Berlin | 53 | 1 | private |
| [Möbliertes 1-Zimmer-Apartment nahe Wilmersdor](https://www.kleinanzeigen.de/s-anzeige/moebliertes-1-zimmer-apartment-nahe-wilmersdorfer-strasse/3554056011-203-3343) | 1.050 € | Mietwohnungen | 10627 Berlin | 30 | 1 | private |

**Beispielausgabe (rohes JSON):**

```json
[
  {
    "id": "3487154581",
    "url": "https://www.kleinanzeigen.de/s-anzeige/nachmieter-fuer-wunderschoene-3-zimmer-wohnung-mit-einbaukueche-gesucht-/3487154581-203-3413",
    "title": "Nachmieter für wunderschöne 3-Zimmer Wohnung mit Einbauküche gesucht!",
    "description": "Erfüllen Sie sich Ihren Wohntraum mit dieser exklusiven ca. 74 m² großen 3-Zimmer-Wohnung.\nDie im Jahr 2023 komplett sanierte und erstklassig ausgestattete Wohn",
    "price": 1599,
    "priceCurrency": "EUR",
    "priceText": "1.599 €",
    "priceType": "fixed",
    "isTopAd": true,
    "shipping": null,
    "shippingCost": null,
    "buyerProtection": false,
    "buyNow": false,
    "category": "Mietwohnungen",
    "categoryId": "203",
    "categoryPath": "Immobilien > Mietwohnungen",
    "postalCode": "12277",
    "state": "Berlin",
    "city": "Berlin",
    "district": "Tempelhof",
    "street": null,
    "latitude": 52.422374243178204,
    "longitude": 13.363353789820152,
    "livingArea": 74,
    "rooms": 3,
    "attributes": {
      "Wohnfläche": "74 m²",
      "Zimmer": "3",
      "Badezimmer": "1",
      "Etage": "1",
      "Verfügbar ab": "September 2026",
      "Online-Besichtigung": "Nicht möglich",
      "Tauschangebot": "Kein Tausch",
      "Nebenkosten": "155 €",
      "Heizkosten": "165 €",
      "Warmmiete": "1.919 €",
      "Kaution / Genoss.-Anteile": "4.797 €"
    },
    "features": [
      "Balkon",
      "Einbauküche",
      "Keller"
    ],
    "publishedText": "26.10.2026",
    "publishedAt": "2026-10-26",
    "sellerName": "Paul Kleinfeldt",
    "sellerId": null,
    "sellerType": "commercial",
    "sellerSince": "17.11.2020",
    "sellerBadges": null,
    "imageUrls": [
      "https://img.kleinanzeigen.de/api/v1/prod-ads/images/4a/4ae55262-b28c-4ea4-a76d-a3dfe6723563?rule=$_59.JPG",
      "https://img.kleinanzeigen.de/api/v1/prod-ads/images/49/49b275fe-e4a4-4694-a71c-df6b04e64ef1?rule=$_59.JPG"
    ],
    "imageCount": 14,
    "viewCount": 6731,
    "sellerRating": null,
    "sellerReviewCount": null,
    "changeType": null,
    "scrapedAt": "2026-10-27T18:09:05.391Z"
  },
  {
    "id": "3525624917",
    "url": "https://www.kleinanzeigen.de/s-anzeige/rose-backroad-al-gravel-bike-grx-rx810-1x11-64cm/3525624917-217-16416",
    "title": "Rose Backroad AL Gravel Bike GRX RX810 1x11, 64cm",
    "description": "Ich verkaufe mein Rose Backroad AL Gravel Bike in der Farbe roasted olive. Das Rad ist in der Rahmengröße 64cm und wurde bisher nur etwa 150km gefahren.\n- Model",
    "price": 1350,
    "priceCurrency": "EUR",
    "priceText": "1.350 € VB",
    "priceType": "negotiable",
    "isTopAd": true,
    "shipping": "pickup only",
    "shippingCost": null,
    "buyerProtection": false,
    "buyNow": true,
    "category": "Fahrräder & Zubehör",
    "categoryId": "217",
    "categoryPath": "Auto, Rad & Boot > Fahrräder & Zubehör",
    "postalCode": "22417",
    "state": null,
    "city": "Wandsbek",
    "district": "Hamburg Hummelsbüttel",
    "street": null,
    "latitude": 53.6695334,
    "longitude": 10.0362155,
    "livingArea": null,
    "rooms": null,
    "attributes": {
      "Art": "Herren",
      "Typ": "Rennräder",
      "Zustand": "Sehr Gut"
    },
    "features": null,
    "publishedText": "28.09.2026",
    "publishedAt": "2026-09-28",
    "sellerName": "5 Anzeigen online",
    "sellerId": "46319547",
    "sellerType": "private",
    "sellerSince": "29.03.2017",
    "sellerBadges": [
      "TOP Zufriedenheit",
      "Sehr freundlich",
      "Besonders zuverlässig"
    ],
    "imageUrls": [
      "https://img.kleinanzeigen.de/api/v1/prod-ads/images/e2/e29cf34f-cbbc-4e04-b37f-8d7d01645112?rule=$_59.JPG",
      "https://img.kleinanzeigen.de/api/v1/prod-ads/images/4d/4d341b56-80fb-4bf2-9884-52ce4b4d3831?rule=$_59.JPG"
    ],
    "imageCount": 22,
    "viewCount": 1166,
    "sellerRating": 5,
    "sellerReviewCount": 3,
    "changeType": null,
    "scrapedAt": "2026-10-27T18:08:05.716Z"
  }
]
```

### 🔁 Nur neue Kleinanzeigen-Anzeigen mit dem Cache scrapen

Setzen Sie bei jedem geplanten Lauf denselben **Cache-Projektnamen**. Bereits unter diesem Namen gespeicherte Anzeigen werden übersprungen, nicht berechnet und zählen nicht zu **Max. Anzeigen pro Suche oder URL**; jeder neue Datensatz erhält `changeType: "new"`. Jeder Name hat einen eigenen Cache, so lassen sich mehrere Suchen getrennt verfolgen. Mit einem [Apify Schedule](https://docs.apify.com/platform/schedules) erhalten Sie täglich nur frische Anzeigen.

### 🐍 Kleinanzeigen scrapen mit Python, JavaScript oder der API

Starten Sie den Actor programmatisch mit den offiziellen Apify-Clients. Ersetzen Sie `<YOUR_API_TOKEN>` durch das Token aus Ihrer [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("confidential_gnat/kleinanzeigen-listings-scraper").call(run_input={
    "startUrls": [{"url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331"}],
    "maxItems": 50,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('confidential_gnat/kleinanzeigen-listings-scraper').call({
    startUrls: [{ url: 'https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331' }],
    maxItems: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL** - Lauf starten und auf den Datensatz warten:

```bash
curl -X POST "https://api.apify.com/v2/acts/confidential_gnat~kleinanzeigen-listings-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": [{"url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331"}], "maxItems": 50}'
```

### 💡 Wofür Sie Kleinanzeigen-Daten nutzen können

- Preisbeobachtung für Mieten und Kaufpreise in deutschen Städten und Stadtteilen.
- Preisrecherche für Gebrauchtwagen und Fahrräder nach Marke, Kilometerstand und Region.
- Kontaktlisten gewerblicher Verkäufer und Händler nach Kategorie.
- Wiederverkauf und Arbitrage: unterbewertete Artikel nach Stichwort und Preisbereich finden.
- Marktforschung zu Angebot, Nachfrage und Anzeigenalter in deutschen Regionen.

Immobilienanalysten, Autohändler, Wiederverkäufer, Forscher und Marktplatz-Aggregatoren nutzen diese Daten in den Bereichen Immobilien, Automobil und Konsumgüter.

### ⚠️ Einschränkungen des Kleinanzeigen-Scrapers

- **1.250 Anzeigen pro Suche** - die Seite zeigt höchstens 50 Seiten mit je 25 Anzeigen. Größere Suchen werden automatisch in Preisbereiche aufgeteilt; Anzeigen ohne Preis liegen außerhalb dieser Bereiche.
- **Telefonnummern** - die Seite versteckt sie hinter einem Klick, daher werden sie nicht erfasst.
- **Ratenbegrenzung** - bei starker Nutzung kann die Seite bremsen; der Actor wiederholt blockierte Seiten selbstständig.
- **Anzeigenlisten und Profilseiten von Verkäufern** - werden nicht unterstützt.

### ❓ Kleinanzeigen-Scraper FAQ

#### Darf ich Kleinanzeigen legal scrapen?

Der Actor erfasst nur Daten, die auf kleinanzeigen.de öffentlich sichtbar sind - ohne Login, Paywall oder private Inhalte. Das Scrapen öffentlich verfügbarer Daten gilt allgemein als zulässig (siehe *hiQ Labs v. LinkedIn*). Sie sind jedoch selbst dafür verantwortlich, die Nutzungsbedingungen der Seite und geltende Gesetze wie die DSGVO einzuhalten, besonders bei Verkäufernamen.

#### Welche Daten liefert der Kleinanzeigen-Scraper?

Titel, Beschreibung, Preis und Preisart, Versandkosten, Käuferschutz, Kategorie, Postleitzahl, Stadt, Stadtteil, Straße, Koordinaten, Fotos, Eigenschaften wie Kilometerstand oder Etage, Ausstattung, Veröffentlichungsdatum, Aufrufzahl sowie Name, Typ, Mitglied-seit-Datum, Bewertung und Bewertungsanzahl des Verkäufers. Alle Details setzen **Jede Anzeige öffnen** voraus; ist es aus, erhalten Sie nur die Felder der Suchkarte.

#### Wie viele Anzeigen kann ich aus einer Kleinanzeigen-Suche scrapen?

**Max. Anzeigen pro Suche oder URL** begrenzt jede Start-URL einzeln. Die Seite zeigt höchstens 1.250 Anzeigen pro Suche; bei einem höheren Wert teilt der Scraper die Suche in Preisbereiche auf und entfernt Duplikate.

#### Brauche ich einen Proxy für kleinanzeigen.de?

Nein. In der Eingabe ist Apify Proxy standardmäßig aus, und Läufe funktionieren so. Aktivieren Sie ihn nur, wenn Sie eigene Proxy-IPs nutzen möchten.

#### Wie scrape ich Kleinanzeigen mit Python?

Nutzen Sie das Python-Beispiel oben und iterieren Sie über die Einträge des Datensatzes.

#### Kann ich den Kleinanzeigen-Scraper zeitgesteuert ausführen?

Ja, mit Apify Schedules. Setzen Sie einen **Cache-Projektnamen**, damit jeder geplante Lauf nur Anzeigen liefert, die frühere Läufe nicht gespeichert haben.

#### Welche Ausgabeformate gibt es?

JSON, CSV, Excel, XML und RSS, im Tab **Output** oder über die Apify API.

#### Warum sind manche Felder leer?

Anzeigen füllen nur die Felder, die zu ihrer Kategorie passen: Wohnfläche und Zimmer gibt es bei Immobilienanzeigen, den Kilometerstand bei Autos. Was eine Anzeige nicht enthält, ist `null`.

### 🔗 Weitere Actors für Kleinanzeigen-Daten

| Scraper | Beschreibung |
| ------- | ------------ |
| [🛒 Avito Listings Scraper](https://apify.com/confidential_gnat/avito-listings-scraper) | Kleinanzeigen von Avito: Immobilien, Autos und mehr. |
| [📋 Craigslist Listings Scraper](https://apify.com/confidential_gnat/craigslist-listings-scraper) | Wohnungen, Verkäufe, Jobs und Autos von Craigslist. |
| [🏷️ Mudah.my Classifieds Scraper](https://apify.com/confidential_gnat/mudah-classifieds-scraper) | Autos, Immobilien und Marktplatzanzeigen von Mudah.my. |
| [🏠 Otodom Property Scraper](https://apify.com/confidential_gnat/otodom-property-scraper) | Immobilienanzeigen aus Polen von Otodom.pl. |
| [🏡 Rightmove Property Scraper](https://apify.com/confidential_gnat/rightmove-property-scraper) | Miet- und Kaufangebote in Großbritannien von Rightmove. |

### 🔗 Weitere nützliche Actors

| Scraper | Beschreibung |
| ------- | ------------ |
| [📒 Yellow Pages Germany Scraper](https://apify.com/confidential_gnat/yellowpages-germany-scraper) | Deutsche Unternehmen aus den Gelben Seiten mit E-Mails. |
| [📄 German Imprint (Impressum) Scraper](https://apify.com/confidential_gnat/german-imprint-scraper) | Firmendaten aus dem Impressum jeder deutschen Website. |
| [🛍️ Google Shopping Scraper](https://apify.com/confidential_gnat/google-shopping-scraper) | Preise, Angebote und Produktdaten aus Google Shopping. |
| [💼 XING Jobs Scraper](https://apify.com/confidential_gnat/xing-jobs-scraper) | Stellenangebote in Deutschland von XING Jobs. |
| [🚗 Copart Search Scraper](https://apify.com/confidential_gnat/copart-search-scraper) | Salvage- und Gebrauchtfahrzeug-Auktionen von Copart. |

### 💬 Support & Kontakt

Bei Problemen oder Fragen [eröffnen Sie ein Issue](https://apify.com/confidential_gnat/kleinanzeigen-listings-scraper/issues/open).

Weitere Actors finden Sie auf der Seite [Actor Flow](https://apify.com/confidential_gnat).

***

### 🇬🇧 Kleinanzeigen Classifieds Scraper - English version

**Scrape ads from Kleinanzeigen (kleinanzeigen.de)**, Germany's largest classifieds marketplace, formerly eBay Kleinanzeigen. Get title, **price**, location with coordinates, photos, attributes (mileage, rooms, condition and more), features and seller details for apartments, cars, bikes, electronics and every other category. Export **JSON, CSV or Excel** or call it as an **API**: paste a search URL or type a keyword, press Start.

**Target website:** [kleinanzeigen.de](https://www.kleinanzeigen.de)

#### ✨ Features of this Kleinanzeigen classifieds scraper

- **Ad extraction for every category** — real estate for rent and sale, cars, bikes, jobs, furniture, electronics and more, as one flat record per ad.
- **Pagination support** — reads every result page of a search until it reaches your maximum.
- **Automatic split of big searches** — the site shows at most 1,250 ads per search; the scraper splits larger searches into price ranges so you can collect more.
- **Proxy support** — optional, switch on Apify Proxy if you want your own IPs.
- **Place, radius, category and seller filters** — search a keyword or category in any German city, district or postal code, widen it by a radius, keep only private or only commercial sellers, only offers or only wanted ads, and limit the price range. Or paste any filtered search URL from the site.
- **Extra data other scrapers miss** — how often an ad was viewed, the seller's rating and review count, shipping cost and buyer protection, on top of coordinates, attributes and features.
- **Full ad details or fast cards** — open every ad for the complete description, all photos, coordinates, street and attributes, or read only the search results.
- **No browser required** — runs are fast and cost far less than browser-based scrapers.
- **Only new ads on every run** — a cache skips ads you already saved.

#### 🚀 How to scrape Kleinanzeigen ads in 5 steps

1. [Sign up](https://apify.com/sign-up) for a free Apify account — includes **$5 monthly credit**.
2. Open the actor page and click **Try for free**.
3. Fill in the **Input** fields (a Kleinanzeigen URL or a search keyword is required).
4. Click **Start** and wait for the run to complete.
5. Download results from the **Output** tab in JSON, CSV, or Excel format.

You can also run this actor via the [Apify API](https://docs.apify.com/api/v2) or integrate it directly into your workflows using [Zapier](https://zapier.com/apps/apify), [Make](https://www.make.com/), or [n8n](https://n8n.io/).

#### 💰 Pricing for the Kleinanzeigen scraper

This actor uses **pay-per-result** billing based on the compute units a run consumes.

- New Apify accounts include **$5 of free monthly credit**.
- It reads plain web pages instead of driving a browser, so it costs significantly less to run than browser-based scrapers.
- Apify Proxy is off by default; leaving it off keeps runs cheapest.

#### 🔧 Kleinanzeigen scraper input configuration

The input form starts with the Kleinanzeigen URLs, the max ads limit and the cache name, then the optional filters. The proxy settings are last.

![Kleinanzeigen Classifieds Scraper input form in Apify Console with fields numbered 1 to 8: Kleinanzeigen URLs, max ads per search, cache project name, seller type, minimum price, maximum price, open each ad and add view count and seller rating](https://i.postimg.cc/sgY0q0MP/Gemini-Generated-Image-ywpwd2ywpwd2ywpw.jpg)

1. **Kleinanzeigen URLs** - search pages or single ads to scrape (here Berlin apartments for rent)
2. **Max ads per search or URL** - limit for each start URL (here 100)
3. **Cache project name** - reuse the same name on every scheduled run to get only new ads (here `berlin-rent`)
4. **Seller type** - only private sellers, only commercial sellers, or both (here Private)
5. **Minimum price (€)** - lowest price to include (here 500)
6. **Maximum price (€)** - highest price to include (here 1500)
7. **Open each ad (full details)** - on for description, all photos, coordinates, attributes and seller, off for fast records
8. **Add view count and seller rating** - also read how often the ad was viewed and the seller's rating

Search keyword, place, category ID, radius and ad type sit in the same "Optional filters and settings" section, and the proxy configuration comes last.

| Field | Type | Required | Default | Description |
| ----- | ---- | -------- | ------- | ----------- |
| Kleinanzeigen URLs (`startUrls`) | array | — | Berlin apartments for rent | Search pages (a category, a keyword or a location) and single ad pages. Set the category, place and keyword on kleinanzeigen.de, then paste the address. |
| Max ads per search or URL (`maxItems`) | integer | — | 5 | Maximum ads saved for each start URL. The site shows at most 1,250 ads per search; for more, the search is split into price ranges automatically. |
| Cache project name (`cacheProjectName`) | string | — | — | Use the same name on each scheduled run to get only new ads. Ads already saved under that name are skipped, not charged and not counted towards the maximum. Each record gets `changeType: new`. |
| Search keyword (`searchQuery`) | string | — | — | Search for a keyword, for example `gebrauchtes fahrrad`. Combine with Place, Category and the filters below, or leave empty to use only the URLs. |
| Place (`location`) | string | — | — | City, district or postal code, for example `Hamburg` or `80331`. Used with Search keyword or Category. Empty means all of Germany. |
| Category ID (`categoryId`) | integer | — | — | Search one category, for example 203 apartments for rent, 216 cars, 217 bikes, 161 electronics. It is the number after c in a category URL. |
| Radius (`radius`) | select | — | Exact place only | Also include ads 5 to 200 km around the place. |
| Seller type (`sellerType`) | select | — | Any | Only private sellers, only commercial sellers, or both. |
| Ad type (`adType`) | select | — | Any | Ads that offer something, ads that look for something (wanted), or both. |
| Minimum price (€) (`minPrice`) | integer | — | — | Only ads priced at or above this amount. Applied to every search page. |
| Maximum price (€) (`maxPrice`) | integer | — | — | Only ads priced at or below this amount. Applied to every search page. |
| Open each ad (`scrapeDetails`) | boolean | — | true | On: every ad page is opened for the full description, all photos, coordinates, street, attributes, features, publication date and seller. Off: fast records from the search results only. |
| Add view count and seller rating (`includeExtras`) | boolean | — | true | With Open each ad: also read how often the ad was viewed and the seller's rating and number of reviews. |
| Proxy configuration (`proxyConfiguration`) | object | — | Apify Proxy off | Optional. Turn it on only if you want to use your own proxy IPs. |

**Supported URL types:**

- Category search: `https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331`
- Keyword search: `https://www.kleinanzeigen.de/s-fahrrad/k0`
- Keyword in a place: `https://www.kleinanzeigen.de/s-berlin/fahrrad/k0l3331`
- No URL needed: fill Search keyword or Category ID, plus Place and the filters
- Single ad: `https://www.kleinanzeigen.de/s-anzeige/<title>/<ad-id>-<category>-<place>`

#### 📦 Kleinanzeigen scraper output data

The output is a flat JSON record per ad with these keys: `id`, `url`, `title`, `description`, `price`, `priceCurrency`, `priceText`, `priceType`, `isTopAd`, `shipping`, `shippingCost`, `buyerProtection`, `buyNow`, `category`, `categoryId`, `categoryPath`, `postalCode`, `state`, `city`, `district`, `street`, `latitude`, `longitude`, `livingArea`, `rooms`, `attributes`, `features`, `publishedText`, `publishedAt`, `sellerName`, `sellerId`, `sellerType`, `sellerSince`, `sellerBadges`, `imageUrls`, `imageCount`, `viewCount`, `sellerRating`, `sellerReviewCount`, `changeType`, `scrapedAt`. Values the ad does not carry are `null`. The dataset has 1 view.

- **Ads** — a table of title, price, category, place, living area, rooms, seller type, publication date and link.

**Output at a glance:**

| Ad | Price | Category | Place | Area (m²) | Rooms | Seller |
| -- | ----- | -------- | ----- | --------- | ----- | ------ |
| [Nachmieter für wunderschöne 3-Zimmer Wohnung ](https://www.kleinanzeigen.de/s-anzeige/nachmieter-fuer-wunderschoene-3-zimmer-wohnung-mit-einbaukueche-gesucht-/3487154581-203-3413) | 1.599 € | Mietwohnungen | 12277 Berlin | 74 | 3 | commercial |
| [1-Zimmer-Wohnung Berlin Friedrichshain ab sof](https://www.kleinanzeigen.de/s-anzeige/1-zimmer-wohnung-berlin-friedrichshain-ab-sofort/3549121152-203-3353) | 864 € | Mietwohnungen | 10247 Friedrichshain-Kreuzberg | 39 | 1 | private |
| [Möbl. 2-Zi-Wohnung Friedrichshain, 60 m², 01.](https://www.kleinanzeigen.de/s-anzeige/moebl-2-zi-wohnung-friedrichshain-60-m-01-11-2026-20-03-2027/3543416917-203-9662) | 1.600 € | Mietwohnungen | 10249 Pankow | 60 | 2 | private |
| [Neubauwohnung Charlottenburg: ab sofort frei](https://www.kleinanzeigen.de/s-anzeige/neubauwohnung-charlottenburg-ab-sofort-frei/3554104238-203-3342) | 1.100 € | Mietwohnungen | 10625 Berlin | 53 | 1 | private |
| [Möbliertes 1-Zimmer-Apartment nahe Wilmersdor](https://www.kleinanzeigen.de/s-anzeige/moebliertes-1-zimmer-apartment-nahe-wilmersdorfer-strasse/3554056011-203-3343) | 1.050 € | Mietwohnungen | 10627 Berlin | 30 | 1 | private |

**Sample output (raw JSON):**

```json
[
  {
    "id": "3487154581",
    "url": "https://www.kleinanzeigen.de/s-anzeige/nachmieter-fuer-wunderschoene-3-zimmer-wohnung-mit-einbaukueche-gesucht-/3487154581-203-3413",
    "title": "Nachmieter für wunderschöne 3-Zimmer Wohnung mit Einbauküche gesucht!",
    "description": "Erfüllen Sie sich Ihren Wohntraum mit dieser exklusiven ca. 74 m² großen 3-Zimmer-Wohnung.\nDie im Jahr 2023 komplett sanierte und erstklassig ausgestattete Wohn",
    "price": 1599,
    "priceCurrency": "EUR",
    "priceText": "1.599 €",
    "priceType": "fixed",
    "isTopAd": true,
    "shipping": null,
    "shippingCost": null,
    "buyerProtection": false,
    "buyNow": false,
    "category": "Mietwohnungen",
    "categoryId": "203",
    "categoryPath": "Immobilien > Mietwohnungen",
    "postalCode": "12277",
    "state": "Berlin",
    "city": "Berlin",
    "district": "Tempelhof",
    "street": null,
    "latitude": 52.422374243178204,
    "longitude": 13.363353789820152,
    "livingArea": 74,
    "rooms": 3,
    "attributes": {
      "Wohnfläche": "74 m²",
      "Zimmer": "3",
      "Badezimmer": "1",
      "Etage": "1",
      "Verfügbar ab": "September 2026",
      "Online-Besichtigung": "Nicht möglich",
      "Tauschangebot": "Kein Tausch",
      "Nebenkosten": "155 €",
      "Heizkosten": "165 €",
      "Warmmiete": "1.919 €",
      "Kaution / Genoss.-Anteile": "4.797 €"
    },
    "features": [
      "Balkon",
      "Einbauküche",
      "Keller"
    ],
    "publishedText": "26.10.2026",
    "publishedAt": "2026-10-26",
    "sellerName": "Paul Kleinfeldt",
    "sellerId": null,
    "sellerType": "commercial",
    "sellerSince": "17.11.2020",
    "sellerBadges": null,
    "imageUrls": [
      "https://img.kleinanzeigen.de/api/v1/prod-ads/images/4a/4ae55262-b28c-4ea4-a76d-a3dfe6723563?rule=$_59.JPG",
      "https://img.kleinanzeigen.de/api/v1/prod-ads/images/49/49b275fe-e4a4-4694-a71c-df6b04e64ef1?rule=$_59.JPG"
    ],
    "imageCount": 14,
    "viewCount": 6731,
    "sellerRating": null,
    "sellerReviewCount": null,
    "changeType": null,
    "scrapedAt": "2026-10-27T18:09:05.391Z"
  },
  {
    "id": "3525624917",
    "url": "https://www.kleinanzeigen.de/s-anzeige/rose-backroad-al-gravel-bike-grx-rx810-1x11-64cm/3525624917-217-16416",
    "title": "Rose Backroad AL Gravel Bike GRX RX810 1x11, 64cm",
    "description": "Ich verkaufe mein Rose Backroad AL Gravel Bike in der Farbe roasted olive. Das Rad ist in der Rahmengröße 64cm und wurde bisher nur etwa 150km gefahren.\n- Model",
    "price": 1350,
    "priceCurrency": "EUR",
    "priceText": "1.350 € VB",
    "priceType": "negotiable",
    "isTopAd": true,
    "shipping": "pickup only",
    "shippingCost": null,
    "buyerProtection": false,
    "buyNow": true,
    "category": "Fahrräder & Zubehör",
    "categoryId": "217",
    "categoryPath": "Auto, Rad & Boot > Fahrräder & Zubehör",
    "postalCode": "22417",
    "state": null,
    "city": "Wandsbek",
    "district": "Hamburg Hummelsbüttel",
    "street": null,
    "latitude": 53.6695334,
    "longitude": 10.0362155,
    "livingArea": null,
    "rooms": null,
    "attributes": {
      "Art": "Herren",
      "Typ": "Rennräder",
      "Zustand": "Sehr Gut"
    },
    "features": null,
    "publishedText": "28.09.2026",
    "publishedAt": "2026-09-28",
    "sellerName": "5 Anzeigen online",
    "sellerId": "46319547",
    "sellerType": "private",
    "sellerSince": "29.03.2017",
    "sellerBadges": [
      "TOP Zufriedenheit",
      "Sehr freundlich",
      "Besonders zuverlässig"
    ],
    "imageUrls": [
      "https://img.kleinanzeigen.de/api/v1/prod-ads/images/e2/e29cf34f-cbbc-4e04-b37f-8d7d01645112?rule=$_59.JPG",
      "https://img.kleinanzeigen.de/api/v1/prod-ads/images/4d/4d341b56-80fb-4bf2-9884-52ce4b4d3831?rule=$_59.JPG"
    ],
    "imageCount": 22,
    "viewCount": 1166,
    "sellerRating": 5,
    "sellerReviewCount": 3,
    "changeType": null,
    "scrapedAt": "2026-10-27T18:08:05.716Z"
  }
]
```

#### 🔁 Scrape only new Kleinanzeigen ads with the cache

Set the same **Cache project name** on every scheduled run. Ads already saved under that name are skipped, are not charged and do not count towards **Max ads per search or URL**, and every new record gets `changeType: "new"`. Each name keeps its own cache, so you can track several searches separately. Combine it with an [Apify Schedule](https://docs.apify.com/platform/schedules) to collect only fresh ads every day.

#### 🐍 How to scrape Kleinanzeigen with Python, JavaScript or the API

Run the actor programmatically with the official Apify clients. Replace `<YOUR_API_TOKEN>` with the token from your [Apify Console](https://console.apify.com/account/integrations).

**Python** (`pip install apify-client`):

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_API_TOKEN>")

run = client.actor("confidential_gnat/kleinanzeigen-listings-scraper").call(run_input={
    "startUrls": [{"url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331"}],
    "maxItems": 50,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

**JavaScript** (`npm install apify-client`):

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_API_TOKEN>' });

const run = await client.actor('confidential_gnat/kleinanzeigen-listings-scraper').call({
    startUrls: [{ url: 'https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331' }],
    maxItems: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

**cURL** — start a run and wait for the dataset:

```bash
curl -X POST "https://api.apify.com/v2/acts/confidential_gnat~kleinanzeigen-listings-scraper/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
  -H "Content-Type: application/json" \
  -d '{"startUrls": [{"url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331"}], "maxItems": 50}'
```

#### 💡 What you can use Kleinanzeigen classifieds data for

- Rental and sale price monitoring for German cities and districts.
- Used-car and used-bike price research by make, mileage and region.
- Lead lists of commercial sellers and dealers by category.
- Reselling and arbitrage: find underpriced items by keyword and price range.
- Market research on supply, demand and listing age across German regions.

Real estate analysts, car dealers, resellers, researchers and marketplace aggregators use this data across property, automotive and consumer-goods industries.

#### ⚠️ Limitations of the Kleinanzeigen scraper

- **1,250 ads per search** — the site shows at most 50 pages of 25 ads. Larger searches are split into price ranges automatically; ads without a price fall outside those ranges.
- **Phone numbers** — the site hides them behind a click, so they are not collected.
- **Rate limiting** — heavy usage can be slowed by the site; the actor retries blocked pages on its own.
- **Sellers' ad lists and profile pages** — not supported.

#### ❓ Kleinanzeigen scraper FAQ

#### Can I scrape Kleinanzeigen legally?

The actor only collects data that is already publicly visible on kleinanzeigen.de — no login, paywall or private content is accessed. Scraping publicly available data is generally considered lawful (see *hiQ Labs v. LinkedIn*), but you are responsible for complying with the site's Terms of Service and applicable laws such as the GDPR, especially for seller names.

#### What data does the Kleinanzeigen scraper return?

Title, description, price and price type, shipping cost, buyer protection, category, postal code, city, district, street, coordinates, photos, attributes such as mileage or floor, features, publication date, view count, and seller name, type, member since date, rating and number of reviews. Full details need **Open each ad** switched on; with it off you get the search-card fields only.

#### How many ads can I scrape from one Kleinanzeigen search?

**Max ads per search or URL** limits each start URL separately. The site shows at most 1,250 ads per search; when you ask for more, the scraper splits the search into price ranges and removes duplicates.

#### Do I need a proxy to scrape kleinanzeigen.de?

No. The input defaults to Apify Proxy off and runs work that way. Switch it on only if you want to use your own proxy IPs.

#### How do I scrape Kleinanzeigen with Python?

Use the Python example above and iterate over the dataset items.

#### Can I run this Kleinanzeigen scraper on a schedule?

Yes, with Apify Schedules. Set a **Cache project name** so every scheduled run returns only ads that earlier runs did not save.

#### What output formats are supported?

JSON, CSV, Excel, XML and RSS, either from the **Output** tab or through the Apify API.

#### Why are some fields empty?

Ads only fill the fields that apply to their category: living area and rooms exist for property ads, mileage for cars. Anything an ad does not carry is `null`.

#### 🔗 Relevant actors for Kleinanzeigen classifieds data

| Scraper | Description |
| ------- | ----------- |
| [🛒 Avito Listings Scraper](https://apify.com/confidential_gnat/avito-listings-scraper) | Classified listings from Avito: real estate, cars and more. |
| [📋 Craigslist Listings Scraper](https://apify.com/confidential_gnat/craigslist-listings-scraper) | Housing, for sale, jobs and cars from Craigslist. |
| [🏷️ Mudah.my Classifieds Scraper](https://apify.com/confidential_gnat/mudah-classifieds-scraper) | Cars, property and marketplace ads from Mudah.my. |
| [🏠 Otodom Property Scraper](https://apify.com/confidential_gnat/otodom-property-scraper) | Poland real estate listings from Otodom.pl. |
| [🏡 Rightmove Property Scraper](https://apify.com/confidential_gnat/rightmove-property-scraper) | UK sale and rent listings from Rightmove. |

#### 🔗 Other actors you may find useful

| Scraper | Description |
| ------- | ----------- |
| [📒 Yellow Pages Germany Scraper](https://apify.com/confidential_gnat/yellowpages-germany-scraper) | German businesses from Gelbe Seiten with emails. |
| [📄 German Imprint (Impressum) Scraper](https://apify.com/confidential_gnat/german-imprint-scraper) | Company details from the Impressum of any German website. |
| [🛍️ Google Shopping Scraper](https://apify.com/confidential_gnat/google-shopping-scraper) | Prices, deals and product data from Google Shopping. |
| [💼 XING Jobs Scraper](https://apify.com/confidential_gnat/xing-jobs-scraper) | Job listings in Germany from XING Jobs. |
| [🚗 Copart Search Scraper](https://apify.com/confidential_gnat/copart-search-scraper) | Salvage and used vehicle auction lots from Copart. |

#### 💬 Support & contact

If you encounter any issues or have questions, please [open an issue](https://apify.com/confidential_gnat/kleinanzeigen-listings-scraper/issues/open).

You can also find more of our actors on the [Actor Flow](https://apify.com/confidential_gnat) page.

# Actor input Schema

## `startUrls` (type: `array`):

Search pages (a category, a keyword or a location) and single ad pages. Set the category, place and keyword on kleinanzeigen.de, then paste the address. Examples: https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331 or https://www.kleinanzeigen.de/s-autos/c216

## `maxItems` (type: `integer`):

Maximum ads saved for each start URL. The site shows at most 1,250 ads per search; for more, the search is split into price ranges automatically.

## `cacheProjectName` (type: `string`):

Use the same name on each scheduled run to get only new ads. Ads already saved under that name are skipped, not charged and not counted towards Max ads per search. Each record gets changeType: new. Leave empty to turn the cache off.

## `searchQuery` (type: `string`):

Search for a keyword, for example gebrauchtes fahrrad. Combine with Place, Category and the filters below, or leave empty to use only the URLs.

## `location` (type: `string`):

Search in this place, for example Hamburg or 80331. Used together with Search keyword or Category. Leave empty for all of Germany.

## `categoryId` (type: `integer`):

Search one category. Common IDs: 195 Real estate, 203 Apartments for rent, 216 Cars, 210 Auto, bike & boat, 217 Bikes & accessories, 80 Home & garden, 161 Electronics, 153 Fashion & beauty, 102 Jobs, 17 Family, kids & baby, 130 Pets, 185 Leisure & hobby, 73 Music, movies & books, 231 Tickets, 297 Services, 272 Free & swap, 235 Lessons & courses. The ID is the number after c in a category URL.

## `radius` (type: `string`):

Also include ads around the place. Works only with Place or a URL that has a place.

## `sellerType` (type: `string`):

Only private sellers, only commercial sellers, or both.

## `adType` (type: `string`):

Ads that offer something, ads that look for something (wanted), or both.

## `minPrice` (type: `integer`):

Only ads priced at or above this amount. Applied to every search page.

## `maxPrice` (type: `integer`):

Only ads priced at or below this amount. Applied to every search page.

## `scrapeDetails` (type: `boolean`):

On: every ad page is opened for the full description, all photos, coordinates, street, attributes (mileage, rooms, condition…), features, publication date and seller. Off: fast records from the search results only (title, short description, price, place, size and rooms, one photo).

## `includeExtras` (type: `boolean`):

With Open each ad: also read how often the ad was viewed and the seller's average rating and number of reviews. Costs a little extra time per ad.

## `proxyConfiguration` (type: `object`):

Optional. Kleinanzeigen works with the default connection, so leaving Apify Proxy off keeps runs cheapest. Turn it on only if you want to use your own proxy IPs.

## Actor input object example

```json
{
  "startUrls": [
    {
      "url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331"
    }
  ],
  "maxItems": 5,
  "radius": "",
  "sellerType": "any",
  "adType": "any",
  "scrapeDetails": true,
  "includeExtras": true,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}
```

# Actor output Schema

## `overview` (type: `string`):

Table of all ads: title, price, category, postal code, city, livingArea, rooms, sellerType, publishedAt and url.

## `details` (type: `string`):

Description, price, shipping, street, district, coordinates, attributes, features and photo count of each ad.

## `sellers` (type: `string`):

Seller name, type, member since, rating, review count and badges of each ad.

## `json` (type: `string`):

Every field of every ad.

## `csv` (type: `string`):

The same records as a CSV file for spreadsheets.

## `excel` (type: `string`):

The same records as an Excel file.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "startUrls": [
        {
            "url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331"
        }
    ],
    "maxItems": 5,
    "proxyConfiguration": {
        "useApifyProxy": false
    }
};

// Run the Actor and wait for it to finish
const run = await client.actor("confidential_gnat/kleinanzeigen-listings-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "startUrls": [{ "url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331" }],
    "maxItems": 5,
    "proxyConfiguration": { "useApifyProxy": False },
}

# Run the Actor and wait for it to finish
run = client.actor("confidential_gnat/kleinanzeigen-listings-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "startUrls": [
    {
      "url": "https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331"
    }
  ],
  "maxItems": 5,
  "proxyConfiguration": {
    "useApifyProxy": false
  }
}' |
apify call confidential_gnat/kleinanzeigen-listings-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,confidential_gnat/kleinanzeigen-listings-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1MpUYhxk4eL1sDb0g/builds/F299AV4UEWmlcFxU0/openapi.json
