Install

List the user's Kleinanzeigen conversations with the latest messages.

UNTESTED, needs login: lists the logged-in user's Kleinanzeigen conversations (listing title, other party, last message preview, unread flag, time) from the messagebox, newest first. Pairs with message-seller for 'did the seller answer?'.

No reports yetRead-only, your login
Site
Kleinanzeigen, Germany
Version
v1
Runs, last 7 days
No reports yet
sha256
d33173bf7509…

Requests

sent from your browser, in order
  1. 1GET/m-access-token.jsonBearer for the messagebox gateway (401 when logged out, verified). Treat as secret: never in output.
  2. 2GETgateway.kleinanzeigen.de/messagebox/api/users/{{u.uid}}/conversations?page&sizegateway.kleinanzeigen.de answers 401 logged out and allows credentialed CORS from www (verified). Path and fields unverified.repeats, max 1

Parameters

from your agent
limitenum 10 | 25 | 50 = 25
unread_onlyboolean = false

Returns

to your agent
conversationsobject[]id, last_message, listing_id, listing_title, other_party, unread, updated
messages_urlstring

Where it can send

  • www.kleinanzeigen.de
  • gateway.kleinanzeigen.de

Anything else is blocked by the extension.

Reads from your session

  • user_id from dom

Used only in requests to the addresses on the left. Never sent to wield.run or your agent.

Checks

a run passes when
  • output.conversations != `null`

Raw recipe

Served as canonical JSON from /api/v1/recipes/kleinanzeigen.de/my-messages, so its sha256 matches the ETag and the index.

Check it yourself
curl -s https://wield.run/api/v1/recipes/kleinanzeigen.de/my-messages | shasum -a 256
# d33173bf7509b4bb0b13bd47780bbf3fa78ee966b686cfc58014df32856c57a8
kleinanzeigen.de/my-messages.json, v1
{
  "auth": {
    "derive": [
      {
        "from": "dom",
        "name": "user_id",
        "regex": "[\"']?userId[\"']?\\s*[:=]\\s*[\"']?([0-9]{3,})",
        "required": false,
        "selector": "script:not([src])"
      }
    ]
  },
  "description": "UNTESTED, needs login: lists the logged-in user's Kleinanzeigen conversations (listing title, other party, last message preview, unread flag, time) from the messagebox, newest first. Pairs with message-seller for 'did the seller answer?'.",
  "effect": "read",
  "id": "kleinanzeigen.de/my-messages",
  "keywords": [
    "kleinanzeigen",
    "nachrichten",
    "postfach",
    "antwort verkäufer",
    "messages",
    "inbox",
    "did the seller reply"
  ],
  "login_check": {
    "expect": {
      "login_required_if": {
        "status": [
          401,
          403
        ]
      },
      "status": [
        200
      ]
    },
    "id": "login_check",
    "request": {
      "headers": {
        "Accept": "application/json"
      },
      "method": "GET",
      "url": "/m-access-token.json"
    }
  },
  "output": {
    "schema": {
      "properties": {
        "conversations": {
          "items": {
            "properties": {
              "id": {
                "type": "string"
              },
              "last_message": {
                "description": "Preview of the latest message",
                "type": [
                  "string",
                  "null"
                ]
              },
              "listing_id": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "listing_title": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "other_party": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "unread": {
                "type": "boolean"
              },
              "updated": {
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": "object"
          },
          "type": "array"
        },
        "messages_url": {
          "format": "uri",
          "type": "string"
        }
      },
      "required": [
        "conversations"
      ],
      "type": "object"
    },
    "value": "let $u = params.unread_only in {conversations: steps.conversations[0].items[?!$u || unread], messages_url: 'https://www.kleinanzeigen.de/m-nachrichten.html'}"
  },
  "params": {
    "additionalProperties": false,
    "properties": {
      "limit": {
        "default": 25,
        "enum": [
          10,
          25,
          50
        ],
        "type": "integer"
      },
      "unread_only": {
        "default": false,
        "type": "boolean"
      }
    },
    "type": "object"
  },
  "provenance": {
    "method": "manual",
    "notes": "UNTESTED. Verified logged out only: /m-access-token.json → 401; https://gateway.kleinanzeigen.de/messagebox/api/users/{id}/conversations → 401 with access-control-allow-origin https://www.kleinanzeigen.de + allow-credentials. The user id comes from the token response or the page (regex), whichever exists. Token JSON keys, conversation path and fields are unverified; record 'Nachrichten' with tools/har2recipe. The bearer travels as a step value, not a derived var: C1 should treat it as secret (request filed).",
    "recorded_at": "2026-11-07T12:41:00+01:00",
    "recorded_by": "C4"
  },
  "requires_login": true,
  "schema": "https://wield.run/schema/recipe/v1.json",
  "site": {
    "country": "DE",
    "id": "kleinanzeigen.de",
    "language": "de",
    "login_url": "https://www.kleinanzeigen.de/m-einloggen.html",
    "name": "Kleinanzeigen",
    "origin": "https://www.kleinanzeigen.de",
    "origins": [
      "https://www.kleinanzeigen.de",
      "https://gateway.kleinanzeigen.de"
    ]
  },
  "steps": [
    {
      "description": "Bearer for the messagebox gateway (401 when logged out, verified). Treat as secret: never in output.",
      "expect": {
        "content_type": "json",
        "login_required_if": {
          "status": [
            401,
            403
          ]
        },
        "status": [
          200
        ]
      },
      "extract": {
        "json": {
          "bearer": "token || access_token || accessToken",
          "uid": "userId || user_id || `null`"
        }
      },
      "id": "token",
      "request": {
        "headers": {
          "Accept": "application/json"
        },
        "method": "GET",
        "url": "/m-access-token.json"
      }
    },
    {
      "description": "gateway.kleinanzeigen.de answers 401 logged out and allows credentialed CORS from www (verified). Path and fields unverified.",
      "expect": {
        "content_type": "json",
        "login_required_if": {
          "status": [
            401,
            403
          ]
        },
        "status": [
          200
        ]
      },
      "extract": {
        "json": {
          "items": "(conversations || _embedded.conversations || @)[].{id: to_string(id), listing_title: adTitle || ad.title || `null`, listing_id: to_string(adId || ad.id || ''), other_party: (role == 'Buyer' && sellerName || buyerName) || otherParticipantName || `null`, last_message: textShortTrimmed || lastMessage.text || `null`, unread: unread == `true` || unseen > `0`, updated: receivedDate || lastMessageDate || `null`}"
        }
      },
      "foreach": {
        "as": "u",
        "in": "[{uid: steps.token.uid || vars.user_id}]",
        "max": 1
      },
      "id": "conversations",
      "request": {
        "headers": {
          "Accept": "application/json",
          "Authorization": "Bearer {{steps.token.bearer}}"
        },
        "method": "GET",
        "query": {
          "page": "0",
          "size": "{{params.limit}}"
        },
        "url": "https://gateway.kleinanzeigen.de/messagebox/api/users/{{u.uid}}/conversations"
      }
    }
  ],
  "task": "List the user's Kleinanzeigen conversations with the latest messages",
  "tos": {
    "notes": "Reads the user's own inbox from their own session, on request. Message contents stay on the device.",
    "reviewed": false
  },
  "verify": {
    "checks": [
      "output.conversations != `null`"
    ],
    "example_params": {}
  },
  "version": 1
}