# Kleinanzeigen Nachrichten API - Senden & Empfangen (`clearpath/kleinanzeigen-message-api`) Actor

Sende Nachrichten an Kleinanzeigen-Inserate, lies dein Postfach und überwache neue Antworten automatisch. Batch-Versand an bis zu 10 Anzeigen pro Lauf, vollständige Konversationen, Telegram-Benachrichtigungen. Nutzt dein eigenes Konto.

- **URL**: https://apify.com/clearpath/kleinanzeigen-message-api.md
- **Developed by:** [ClearPath](https://apify.com/clearpath) (community)
- **Categories:** E-commerce, Real estate, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.29 / nachrichtenversand

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/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Kleinanzeigen Nachrichten & Postfach | Senden, Empfangen & Überwachen

<blockquote style="border-left:4px solid #006D77;background:#EDF6F9;padding:12px 16px;margin:12px 0">
<span style="font-size:16px;font-weight:700;color:#1C1917">Dein Kleinanzeigen-Postfach auf Autopilot:</span> <span style="font-size:15px;color:#57534E">senden, lesen, überwachen, über dein eigenes Konto.</span>
</blockquote>

<a href="https://console.apify.com/actors/P37iR62zVMGSIzz8P/input"><img src="https://api.apify.com/v2/key-value-stores/21hatybJqakfiJoxJ/records/kleinanzeigen-message-api-hero.png" alt="Kleinanzeigen Nachrichten & Postfach automatisieren: Nachrichten an Inserate senden, Postfach und Konversationen lesen, neue Antworten per Telegram-Push überwachen, als strukturiertes JSON" style="max-width:100%"></a>

<table>
<tr>
<td colspan="4" style="padding:10px 14px;background:#006D77;border:none;border-radius:4px 4px 0 0">
<span style="color:#FAFAF9;font-size:14px;font-weight:700;letter-spacing:0.5px">Clearpath Immobilien Suite</span>
<span style="color:#E0F2F1;font-size:13px">&nbsp;&nbsp;&bull;&nbsp;&nbsp;Kleinanzeigen &amp; ImmoScout24: Inserate, Nachrichten, Bewerbungen</span>
</td>
</tr>
<tr>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-radius:0 0 0 4px;background:#C9E8E6;border-right:none;border-top:none;vertical-align:top;width:25%">
<a href="https://apify.com/clearpath/kleinanzeigen-message-api" style="color:#006D77;text-decoration:none;font-weight:700;font-size:13px">Kleinanzeigen Nachrichten API</a><br>
<span style="color:#006D77;font-size:11px;font-weight:600">&#10148; Du bist hier</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;background:#E0F2F1;border-right:none;border-top:none;vertical-align:top;width:25%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-Yu9fmARTOt79Ungbn-PTLhKqKWa5-kleinanzeigen-immobilien-api-pro-logo.png" width="20" height="20" style="vertical-align:middle" alt="Kleinanzeigen Immobilien Scraper Logo"> <a href="https://apify.com/clearpath/kleinanzeigen-immobilien-api-pro" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">Kleinanzeigen Scraper</a><br>
<span style="color:#78716C;font-size:11px">Inserate mit allen Details</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;background:#E0F2F1;border-right:none;border-top:none;vertical-align:top;width:25%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-zl9ZT20jiJtqKVOIA-kfERz7A37l-ImmoScout24-canva2.png" width="20" height="20" style="vertical-align:middle" alt="ImmoScout24 Apply Bot Logo"> <a href="https://apify.com/clearpath/immoscout24-apply-bot" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">ImmoScout24 Apply Bot</a><br>
<span style="color:#78716C;font-size:11px">Automatische Bewerbungen</span>
</td>
<td style="padding:10px 12px;border:1px solid #E7E5E4;border-radius:0 0 4px 0;background:#E0F2F1;border-top:none;vertical-align:top;width:25%">
<img src="https://apify-image-uploads-prod.s3.us-east-1.amazonaws.com/DSvMCAwsufMyZeLyt-actor-s609dyAJSrju54QSh-zj5NeZTykb-ImmoScout24-canva2.png" width="20" height="20" style="vertical-align:middle" alt="ImmoScout24 Scraper Pro Logo"> <a href="https://apify.com/clearpath/immoscout24-api-pro" style="color:#1C1917;text-decoration:none;font-weight:700;font-size:13px">ImmoScout24 Scraper</a><br>
<span style="color:#78716C;font-size:11px">Inserate mit 50+ Feldern</span>
</td>
</tr>
</table>

Schreib Anbieter an, behalte dein Postfach im Blick und verpass keine Antwort mehr, ganz ohne ständiges Nachsehen in der App. Konto einmal anmelden, den Rest übernimmt der Actor.

> 🆓 **Ohne eigenes Konto testen:** E-Mail `demo@example.com` stehen lassen, **Postfach abrufen** starten, und du bekommst sofort echte Beispieldaten. Kostenlos und unverbindlich.

#### Copy to your AI assistant

````

clearpath/kleinanzeigen-message-api on Apify. Send and read messages on a Kleinanzeigen account: login, send to listings, inbox, full conversations, monitor new messages. Call ApifyClient("TOKEN").actor("clearpath/kleinanzeigen-message-api").call(run\_input={...}), then client.dataset(run\["defaultDatasetId"]).list\_items().items. Each run needs operation + kaEmail; login once (verify2fa if prompted) before other ops. Full spec: GET https://api.apify.com/v2/acts/clearpath~kleinanzeigen-message-api/builds/default (Bearer TOKEN) → inputSchema, actorDefinition.storages.dataset, readme. Token: https://console.apify.com/account/integrations

````

### Was der Actor kann

- **Nachrichten senden**: an eine einzelne Anzeige oder im Batch an bis zu 10 Anzeigen pro Lauf, mit demselben Text.
- **Postfach abrufen**: alle Konversationen mit der jeweils letzten Nachricht auf einen Blick.
- **Konversation abrufen**: den kompletten Verlauf eines Chats, Nachricht für Nachricht, wahlweise älteste oder neueste zuerst.
- **Neue Nachrichten überwachen**: regelmäßig prüfen, ob jemand geantwortet hat, optional mit Telegram-Push aufs Handy.
- **Demo-Modus**: mit `demo@example.com` alles risikofrei testen, bevor du dein eigenes Konto anmeldest.

Alles läuft über dein eigenes Kleinanzeigen-Konto. Deine Zugangsdaten werden verschlüsselt verarbeitet und niemals im Klartext gespeichert oder weitergegeben.

### So richtest du dein Konto ein

Bevor du senden oder dein Postfach lesen kannst, meldest du dein Konto einmalig an. Das dauert einen, manchmal zwei Läufe:

1. **Erster Lauf, Aktion `login`:** deine Kleinanzeigen E-Mail (`kaEmail`) und dein Passwort (`kaPassword`) eintragen und starten.
   - Akzeptiert Kleinanzeigen die Anmeldung sofort, ist dein Konto direkt einsatzbereit.
   - Möchte Kleinanzeigen zusätzlich sichergehen, schickt es dir entweder einen **6-stelligen Code per SMS** oder eine **E-Mail mit einem Bestätigungslink**. Der Lauf sagt dir das im Ergebnis und stoppt hier.
2. **Zweiter Lauf, Aktion `verify2fa` (nur falls nötig):** denselben `kaEmail` verwenden und je nachdem, was du bekommen hast, den SMS-Code im Feld `verificationCode` oder den Link im Feld `verificationUrl` eintragen.

Danach ist dein Konto dauerhaft angemeldet. Für `send`, `inbox`, `conversation` und `monitor` reicht ab jetzt deine E-Mail, dein Passwort brauchst du nicht mehr.

### Schnellstart

#### Postfach abrufen

```json
{
    "operation": "inbox",
    "kaEmail": "dein@konto.de",
    "inboxLimit": 50
}
````

#### Nachricht an eine Anzeige senden

```json
{
    "operation": "send",
    "kaEmail": "dein@konto.de",
    "adUrl": "https://www.kleinanzeigen.de/s-anzeige/schoene-2-zimmer-wohnung/1234567890-203-1234",
    "message": "Hallo, ist die Wohnung noch verfügbar?"
}
```

#### Dieselbe Nachricht an mehrere Anzeigen (Batch-Versand)

```json
{
    "operation": "send",
    "kaEmail": "dein@konto.de",
    "adUrls": [
        "https://www.kleinanzeigen.de/s-anzeige/schoene-2-zimmer-wohnung/1234567890-203-1234",
        "https://www.kleinanzeigen.de/s-anzeige/helle-3-zimmer-wohnung/9876543210-203-1234"
    ],
    "message": "Hallo, ist die Wohnung noch verfügbar?"
}
```

`adUrls` überschreibt die einzelne `adUrl`, wenn beide gesetzt sind. Maximal 10 Anzeigen pro Lauf.

#### Vollständige Konversation abrufen

Zuerst `inbox` ausführen, um die `conversation_id` einer Konversation zu finden, dann damit den ganzen Verlauf holen:

```json
{
    "operation": "conversation",
    "kaEmail": "dein@konto.de",
    "conversationId": "c-abc123",
    "messageOrder": "asc"
}
```

### Input-Parameter

#### Immer erforderlich

| Parameter | Typ | Beschreibung |
|---|---|---|
| `operation` | String | `login`, `verify2fa`, `send`, `inbox`, `conversation` oder `monitor` |
| `kaEmail` | String | E-Mail deines Kleinanzeigen-Kontos. Mit `demo@example.com` läuft der Actor im Demo-Modus |

#### Für `login`

| Parameter | Typ | Beschreibung |
|---|---|---|
| `kaPassword` | String | Dein Kleinanzeigen-Passwort (sicheres Secret-Feld, maskiert und nie im Klartext gespeichert) |

#### Für `verify2fa`

| Parameter | Typ | Beschreibung |
|---|---|---|
| `verificationCode` | String | Der 6-stellige SMS-Code, falls Kleinanzeigen einen per SMS geschickt hat. Wird bevorzugt, wenn beide Felder gesetzt sind |
| `verificationUrl` | String | Der vollständige Bestätigungslink aus der E-Mail, als Alternative zum SMS-Code |

#### Für `send`

| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
| `adUrl` | String | Link zur Zielanzeige | -- |
| `adUrls` | Array | Mehrere Anzeigen-Links für den Batch-Versand (max. 10). Überschreibt `adUrl` | -- |
| `message` | String | Dein Nachrichtentext (erforderlich) | -- |

#### Für `conversation`

| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
| `conversationId` | String | ID der Konversation, aus dem Feld `conversation_id` eines `inbox`-Ergebnisses | -- |
| `messageOrder` | String | Reihenfolge der Nachrichten: `asc` (älteste zuerst) oder `desc` (neueste zuerst) | `asc` |

#### Für `inbox` und `monitor`

| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
| `inboxLimit` | Integer | Maximale Anzahl an Konversationen pro Lauf (1 bis 500) | `50` |

#### Für `monitor`

| Parameter | Typ | Beschreibung | Standard |
|---|---|---|---|
| `telegramUserId` | String | Deine Telegram User-ID für Benachrichtigungen | -- |
| `telegramNotificationLimit` | Integer | Maximale Anzahl an Telegram-Benachrichtigungen pro Lauf (1 bis 50) | `10` |

### Output-Beispiele

#### `inbox`

Ein Eintrag pro Konversation:

```json
{
    "operation": "inbox",
    "account_id": "acc_123",
    "status": "success",
    "conversation_id": "c-abc123",
    "listing_id": "3320359162",
    "platform": "kleinanzeigen",
    "direction": "in",
    "sender_name": "Max M.",
    "sender_type": "private",
    "message": "Ist die Wohnung noch frei?",
    "is_auto_reply": false,
    "is_unread": true,
    "received_at": "2026-07-08T10:30:00Z",
    "unread_count": 1
}
```

`direction` ist `in` für eingehende und `out` für ausgehende Nachrichten.

#### `send`

```json
{
    "operation": "send",
    "ad_url": "https://www.kleinanzeigen.de/s-anzeige/schoene-2-zimmer-wohnung/1234567890-203-1234",
    "status": "success",
    "message": "Hallo, ist die Wohnung noch verfügbar?",
    "conversation_id": "c-abc123",
    "message_id": "msg_1a2b3c4d",
    "platform_message_id": "pm_9f8e7d6c",
    "listing_id": "1234567890",
    "platform": "kleinanzeigen",
    "sent_at": "2026-07-08T10:15:00Z"
}
```

#### `conversation`

Ein Eintrag pro Nachricht, dazu die Eckdaten der Konversation (Anzeigentitel, Gegenüber, deine Rolle `role`: `Buyer` oder `Seller`):

```json
{
    "operation": "conversation",
    "conversation_id": "c-abc123",
    "status": "success",
    "account_id": "acc_123",
    "listing_id": "3320359162",
    "platform": "kleinanzeigen",
    "ad_title": "Schöne 2-Zimmer-Wohnung",
    "other_party_name": "Max M.",
    "role": "Buyer",
    "unread_count": 0,
    "message_id": "m-001",
    "direction": "out",
    "sender_name": "Du",
    "sender_type": "private",
    "message": "Hallo, ist die Wohnung noch verfügbar?",
    "is_auto_reply": false,
    "received_at": "2026-07-08T10:15:00Z"
}
```

Bei einem Fehler enthält das Ergebnis stattdessen `"status": "error"` und ein verständliches `error`-Feld.

### Neue Nachrichten überwachen

Mit der Aktion `monitor` musst du nicht mehr selbst nachschauen, ob jemand geantwortet hat:

1. **Baseline:** Der erste Lauf merkt sich deinen aktuellen Stand, ganz ohne Meldung.
2. **Nur Neues:** Jeder folgende Lauf gibt ausschließlich Nachrichten zurück, die seit dem letzten Lauf neu eingegangen sind.
3. **Push aufs Handy:** Mit `telegramUserId` bekommst du zusätzlich eine Telegram-Nachricht, sobald etwas Neues da ist.

```json
{
    "operation": "monitor",
    "kaEmail": "dein@konto.de",
    "telegramUserId": "123456789",
    "telegramNotificationLimit": 10
}
```

Kombiniere `monitor` mit dem [Apify Scheduler](https://docs.apify.com/platform/schedules), damit die Prüfung automatisch in deinem Wunschintervall läuft, zum Beispiel alle 15 Minuten oder stündlich.

#### Telegram einrichten

1. Schreib [@userinfobot](https://t.me/userinfobot) auf Telegram eine kurze Nachricht. Er antwortet mit deiner numerischen User-ID.
2. Trag diese ID im Feld `telegramUserId` ein.
3. Öffne [@clearpath\_api\_bot](https://t.me/clearpath_api_bot) und schick ihm einmalig `/start`.

Ohne den letzten Schritt verhindert Telegram aus Datenschutzgründen, dass dir der Bot schreiben kann, selbst mit korrekter ID. Mit `telegramNotificationLimit` legst du fest, wie viele Benachrichtigungen ein einzelner Lauf höchstens verschickt.

### Preise

Du zahlst nur, was du wirklich nutzt (Pay-per-Event). Kein Abo, keine Grundgebühr, keine Mindestlaufzeit.

| Aktion | Preis |
|---|---|
| Konto anmelden (`login` / `verify2fa`) | **2,99 USD** je Anmeldung |
| Nachricht senden (`send`) | **0,49 USD** je Nachricht (beim Batch-Versand pro Anzeige) |
| Abruf: Postfach, Konversation oder Überwachung (`inbox` / `conversation` / `monitor`) | **0,01 USD** je Abruf |
| Startgebühr | **0,005 USD** je Lauf |

- **Anmelden wird pro Anmeldung berechnet, nicht pro Lauf.** Nutzt du ein bereits angemeldetes Konto für `send`, `inbox`, `conversation` oder `monitor`, fällt keine erneute Anmeldegebühr an, deine Sitzung bleibt automatisch im Hintergrund aktiv. Erst eine spätere erneute Anmeldung (etwa nach längerer Inaktivität) kostet wieder.
- **Nur erfolgreiche Aktionen kosten.** Eine fehlgeschlagene Anmeldung oder ein fehlgeschlagener Versand wird nicht berechnet.
- **Neu bei Apify?** Mit dem kostenlosen Startguthaben kannst du den Actor direkt ausprobieren, ohne Vorkasse.
- Zum unverbindlichen Testen die voreingestellte E-Mail `demo@example.com` verwenden: Beispieldaten ohne Nutzungskosten.

### FAQ

**Was ist Kleinanzeigen?**
Kleinanzeigen (früher eBay Kleinanzeigen) ist Deutschlands größter Marktplatz für private und gewerbliche Kleinanzeigen, von Wohnungen über Möbel bis zu Fahrzeugen. Der Kontakt läuft über das interne Nachrichtensystem. Dieser Actor bedient genau dieses Postfach: senden, lesen und überwachen.

**Brauche ich ein eigenes Kleinanzeigen-Konto?**
Für echte Nachrichten ja, der Actor arbeitet mit deinem eigenen Konto. Zum reinen Ausprobieren brauchst du keins: mit `demo@example.com` bekommst du Beispieldaten.

**Brauche ich mein Passwort für jede Aktion?**
Nein. Das Passwort wird nur einmalig bei `login` gebraucht. Danach reicht für alle weiteren Aktionen deine E-Mail-Adresse.

**Was passiert, wenn Kleinanzeigen eine Bestätigung verlangt?**
Der `login`-Lauf sagt dir das im Ergebnis und stoppt. Kleinanzeigen schickt dir dann entweder einen 6-stelligen SMS-Code oder eine E-Mail mit Bestätigungslink. Starte den Actor erneut mit `verify2fa` und trag den Code in `verificationCode` bzw. den Link in `verificationUrl` ein.

**Wie lange ist der Code oder Link gültig?**
Das legt Kleinanzeigen fest. Löse ihn am besten zeitnah nach Erhalt ein.

**Was kostet der Actor?**
Du zahlst nur pro Aktion: 2,99 USD je Konto-Anmeldung, 0,49 USD je gesendeter Nachricht, 0,01 USD je Abruf (Postfach, Konversation oder Überwachung), plus 0,005 USD Startgebühr je Lauf. Kein Abo, keine Grundgebühr. Mit dem kostenlosen Apify-Startguthaben kannst du direkt loslegen.

**Warum wird pro Anmeldung berechnet und nicht pro Lauf?**
Die Anmeldung deines Kontos ist der aufwändige Teil. Danach bleibt deine Sitzung automatisch im Hintergrund aktiv, dafür zahlst du nichts extra. Das reine Senden, Lesen und Überwachen kostet nur die jeweilige Aktion. Erst wenn du dich später erneut anmeldest (etwa nach längerer Inaktivität), fällt wieder eine Anmeldegebühr an.

**Wie viele Anzeigen kann ich in einem Lauf anschreiben?**
Bis zu 10 gleichzeitig über `adUrls`. Für mehr startest du einfach mehrere Läufe nacheinander.

**Wie überwache ich neue Nachrichten am besten?**
Mit der Aktion `monitor` plus dem Apify Scheduler. Der erste Lauf legt die Baseline an, jeder weitere meldet nur Neues. Mit `telegramUserId` kommt die Info direkt aufs Handy.

**Kann ich auch Anzeigen-Daten wie Preise und Fotos auslesen?**
Nicht mit diesem Actor, der kümmert sich um Nachrichten und Postfach. Für Inserate mit allen Details gibt es den [Kleinanzeigen Immobilien Scraper](https://apify.com/clearpath/kleinanzeigen-immobilien-api-pro).

**Wie exportiere ich die Ergebnisse?**
Als JSON, CSV, Excel, XML oder HTML aus dem Tab **Storage** eines Laufs oder über die Apify API. JSON erhält verschachtelte Felder am saubersten.

**Ist das erlaubt?**
Du interagierst mit kleinanzeigen.de ausschließlich über dein eigenes Konto und deine eigenen Konversationen. Du bist selbst dafür verantwortlich, die Nutzungsbedingungen von Kleinanzeigen und die geltenden Datenschutzregeln (DSGVO) einzuhalten. Nachrichteninhalte und Absendernamen sind personenbezogene Daten, geh entsprechend sorgsam damit um.

### Support

- **Fehler oder Problem?** Öffne ein Issue im Issues-Tab.
- **Vorschlag oder Wunsch?** Ebenfalls im Issues-Tab.
- **Kontakt:** max@mapa.slmail.me

### Rechtlicher Hinweis

Dieser Actor arbeitet über dein eigenes Kleinanzeigen-Konto. Du bist für die Einhaltung der Nutzungsbedingungen von Kleinanzeigen sowie der geltenden Datenschutzbestimmungen (DSGVO) selbst verantwortlich.

***

*Kleinanzeigen-Nachrichten automatisiert: senden, Postfach lesen, Konversationen abrufen und neue Antworten überwachen, ganz über dein eigenes Konto.*

# Actor input Schema

## `operation` (type: `string`):

Was der Lauf tun soll:<br><br>• <b>Anmelden</b>: ein Kleinanzeigen-Konto onboarden<br>• <b>Bestätigungscode einlösen</b>: Anmeldung mit dem SMS-Code oder dem Link aus der Bestätigungs-E-Mail abschließen<br>• <b>Nachricht senden</b>: eine Nachricht an eine oder mehrere Anzeigen senden<br>• <b>Postfach abrufen</b>: alle Konversationen abrufen<br>• <b>Konversation abrufen</b>: den vollständigen Verlauf einer Konversation abrufen<br>• <b>Neue Nachrichten überwachen</b>: regelmäßig auf neue eingehende Nachrichten prüfen

## `kaEmail` (type: `string`):

Die E-Mail-Adresse des Kleinanzeigen-Kontos, mit dem gearbeitet werden soll. Für alle Aktionen erforderlich.<br><br>Mit der voreingestellten Adresse <code>demo@example.com</code> kannst du den Actor unverbindlich mit Beispieldaten testen, ganz ohne eigenes Konto.

## `kaPassword` (type: `string`):

Das Passwort des Kleinanzeigen-Kontos. Nur für die Aktion <b>Anmelden</b> erforderlich.

## `verificationCode` (type: `string`):

Der 6-stellige SMS-Code, den Kleinanzeigen beim Anmelden an deine Handynummer sendet. Nur für die Aktion <b>Bestätigungscode einlösen</b>. Wird bevorzugt verwendet, falls du auch einen Bestätigungslink einträgst.

## `verificationUrl` (type: `string`):

Der vollständige Link aus der Bestätigungs-E-Mail, die Kleinanzeigen nach der Anmeldung verschickt hat. Nur für die Aktion <b>Bestätigungscode einlösen</b>, als Alternative zum SMS-Code.

## `adUrl` (type: `string`):

Link zur Kleinanzeigen-Anzeige, an die die Nachricht gesendet werden soll.<br><br>Format: <code>https://www.kleinanzeigen.de/s-anzeige/...</code><br><br>Nur für die Aktion <b>Nachricht senden</b> relevant.

## `adUrls` (type: `array`):

Die gleiche Nachricht an mehrere Anzeigen gleichzeitig senden. Überschreibt die einzelne Anzeigen-URL oben, wenn gesetzt. Maximal 10 Anzeigen pro Lauf.

## `message` (type: `string`):

Der Nachrichtentext, der an den bzw. die Anbieter gesendet wird. Erforderlich für die Aktion <b>Nachricht senden</b>.

## `conversationId` (type: `string`):

Die ID der Konversation, deren vollständiger Verlauf abgerufen werden soll. Zu finden im Feld <code>conversation\_id</code> eines Ergebnisses der Aktion <b>Postfach abrufen</b>. Erforderlich für die Aktion <b>Konversation abrufen</b>.

## `messageOrder` (type: `string`):

Chronologische Reihenfolge der zurückgegebenen Nachrichten. Nur für die Aktion <b>Konversation abrufen</b>.

## `inboxLimit` (type: `integer`):

Maximale Anzahl an Konversationen bzw. Nachrichten, die abgerufen werden.

## `telegramUserId` (type: `string`):

Deine numerische Telegram-ID für Benachrichtigungen über neue Nachrichten, z. B. über den Bot @userinfobot ermittelbar. Optional, nur für die Aktion <b>Neue Nachrichten überwachen</b>.

## `telegramNotificationLimit` (type: `integer`):

Obergrenze für die Anzahl an Telegram-Benachrichtigungen pro Lauf, um bei vielen neuen Nachrichten Spam zu vermeiden.

## Actor input object example

```json
{
  "operation": "inbox",
  "kaEmail": "demo@example.com",
  "messageOrder": "asc",
  "inboxLimit": 50,
  "telegramNotificationLimit": 10
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "operation": "inbox",
    "kaEmail": "demo@example.com"
};

// Run the Actor and wait for it to finish
const run = await client.actor("clearpath/kleinanzeigen-message-api").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 = {
    "operation": "inbox",
    "kaEmail": "demo@example.com",
}

# Run the Actor and wait for it to finish
run = client.actor("clearpath/kleinanzeigen-message-api").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "operation": "inbox",
  "kaEmail": "demo@example.com"
}' |
apify call clearpath/kleinanzeigen-message-api --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=clearpath/kleinanzeigen-message-api",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Kleinanzeigen Nachrichten API - Senden & Empfangen",
        "description": "Sende Nachrichten an Kleinanzeigen-Inserate, lies dein Postfach und überwache neue Antworten automatisch. Batch-Versand an bis zu 10 Anzeigen pro Lauf, vollständige Konversationen, Telegram-Benachrichtigungen. Nutzt dein eigenes Konto.",
        "version": "0.0",
        "x-build-id": "BnZMXmiXa1dsQp5ky"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/clearpath~kleinanzeigen-message-api/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-clearpath-kleinanzeigen-message-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/clearpath~kleinanzeigen-message-api/runs": {
            "post": {
                "operationId": "runs-sync-clearpath-kleinanzeigen-message-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/clearpath~kleinanzeigen-message-api/run-sync": {
            "post": {
                "operationId": "run-sync-clearpath-kleinanzeigen-message-api",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "operation",
                    "kaEmail"
                ],
                "properties": {
                    "operation": {
                        "title": "Aktion",
                        "enum": [
                            "login",
                            "verify2fa",
                            "send",
                            "inbox",
                            "conversation",
                            "monitor"
                        ],
                        "type": "string",
                        "description": "Was der Lauf tun soll:<br><br>• <b>Anmelden</b>: ein Kleinanzeigen-Konto onboarden<br>• <b>Bestätigungscode einlösen</b>: Anmeldung mit dem SMS-Code oder dem Link aus der Bestätigungs-E-Mail abschließen<br>• <b>Nachricht senden</b>: eine Nachricht an eine oder mehrere Anzeigen senden<br>• <b>Postfach abrufen</b>: alle Konversationen abrufen<br>• <b>Konversation abrufen</b>: den vollständigen Verlauf einer Konversation abrufen<br>• <b>Neue Nachrichten überwachen</b>: regelmäßig auf neue eingehende Nachrichten prüfen"
                    },
                    "kaEmail": {
                        "title": "Kleinanzeigen E-Mail",
                        "type": "string",
                        "description": "Die E-Mail-Adresse des Kleinanzeigen-Kontos, mit dem gearbeitet werden soll. Für alle Aktionen erforderlich.<br><br>Mit der voreingestellten Adresse <code>demo@example.com</code> kannst du den Actor unverbindlich mit Beispieldaten testen, ganz ohne eigenes Konto."
                    },
                    "kaPassword": {
                        "title": "Passwort",
                        "type": "string",
                        "description": "Das Passwort des Kleinanzeigen-Kontos. Nur für die Aktion <b>Anmelden</b> erforderlich."
                    },
                    "verificationCode": {
                        "title": "Bestätigungscode (SMS)",
                        "type": "string",
                        "description": "Der 6-stellige SMS-Code, den Kleinanzeigen beim Anmelden an deine Handynummer sendet. Nur für die Aktion <b>Bestätigungscode einlösen</b>. Wird bevorzugt verwendet, falls du auch einen Bestätigungslink einträgst."
                    },
                    "verificationUrl": {
                        "title": "Bestätigungslink",
                        "type": "string",
                        "description": "Der vollständige Link aus der Bestätigungs-E-Mail, die Kleinanzeigen nach der Anmeldung verschickt hat. Nur für die Aktion <b>Bestätigungscode einlösen</b>, als Alternative zum SMS-Code."
                    },
                    "adUrl": {
                        "title": "Anzeigen-URL",
                        "type": "string",
                        "description": "Link zur Kleinanzeigen-Anzeige, an die die Nachricht gesendet werden soll.<br><br>Format: <code>https://www.kleinanzeigen.de/s-anzeige/...</code><br><br>Nur für die Aktion <b>Nachricht senden</b> relevant."
                    },
                    "adUrls": {
                        "title": "Mehrere Anzeigen (Batch-Versand)",
                        "maxItems": 10,
                        "type": "array",
                        "description": "Die gleiche Nachricht an mehrere Anzeigen gleichzeitig senden. Überschreibt die einzelne Anzeigen-URL oben, wenn gesetzt. Maximal 10 Anzeigen pro Lauf.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "message": {
                        "title": "Nachricht",
                        "type": "string",
                        "description": "Der Nachrichtentext, der an den bzw. die Anbieter gesendet wird. Erforderlich für die Aktion <b>Nachricht senden</b>."
                    },
                    "conversationId": {
                        "title": "Konversations-ID",
                        "type": "string",
                        "description": "Die ID der Konversation, deren vollständiger Verlauf abgerufen werden soll. Zu finden im Feld <code>conversation_id</code> eines Ergebnisses der Aktion <b>Postfach abrufen</b>. Erforderlich für die Aktion <b>Konversation abrufen</b>."
                    },
                    "messageOrder": {
                        "title": "Reihenfolge der Nachrichten",
                        "enum": [
                            "asc",
                            "desc"
                        ],
                        "type": "string",
                        "description": "Chronologische Reihenfolge der zurückgegebenen Nachrichten. Nur für die Aktion <b>Konversation abrufen</b>.",
                        "default": "asc"
                    },
                    "inboxLimit": {
                        "title": "Max. Postfach-Einträge",
                        "minimum": 1,
                        "maximum": 500,
                        "type": "integer",
                        "description": "Maximale Anzahl an Konversationen bzw. Nachrichten, die abgerufen werden.",
                        "default": 50
                    },
                    "telegramUserId": {
                        "title": "Telegram Nutzer-ID",
                        "type": "string",
                        "description": "Deine numerische Telegram-ID für Benachrichtigungen über neue Nachrichten, z. B. über den Bot @userinfobot ermittelbar. Optional, nur für die Aktion <b>Neue Nachrichten überwachen</b>."
                    },
                    "telegramNotificationLimit": {
                        "title": "Max. Benachrichtigungen",
                        "minimum": 1,
                        "maximum": 50,
                        "type": "integer",
                        "description": "Obergrenze für die Anzahl an Telegram-Benachrichtigungen pro Lauf, um bei vielen neuen Nachrichten Spam zu vermeiden.",
                        "default": 10
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
