scraper-api-com Kleinanzeigen API

Kleinanzeigen: 3 public endpoints, no account needed, plus 4 signed-in routes (login, logout, messages, account) behind an `x-session-id`.

Operations 8

GET /v1/kleinanzeigen/ad Get a single Kleinanzeigen listing (full detail: price, attributes, images… #
GET /v1/kleinanzeigen/locations Resolve a place name (city / ZIP) to Kleinanzeigen locationId(s) for the search… #
POST /v1/kleinanzeigen/login Open a Kleinanzeigen session with the account's own credentials. #
POST /v1/kleinanzeigen/logout Close a Kleinanzeigen session and drop everything it stored. Free of charge #
GET /v1/kleinanzeigen/messages Read the signed-in Kleinanzeigen account's inbox, or one conversation in full… #
POST /v1/kleinanzeigen/messages Send a Kleinanzeigen message: a reply into conversation_id, or a first contact… #
GET /v1/kleinanzeigen/account The signed-in Kleinanzeigen account's own profile #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/scraper-api-com:scraper-api-com-kleinanzeigen-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

scraper-api-com-kleinanzeigen-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: scraper-api.com Kleinanzeigen API
  version: 0.1.0
  description: 'Self-hosted social media scraping API — a drop-in replacement for scrapecreators.com.


    ## Authentication

    Every request must send your API key in the `x-api-key` header.


    ## Credits

    Billing is credit-based: **1 request = 1 credit** (some endpoints cost more — see each endpoint''s description). Credits are **non-expiring** — buy once, use whenever.


    Response bodies match the ScrapeCreators shapes so existing integrations work unchanged.'
  contact:
    name: Fabian Bitter
    email: fabian@bitter.de
servers:
- url: https://api.scraper-api.com
  description: Production
security:
- apiKeyAuth: []
tags:
- name: Kleinanzeigen
  description: 'Kleinanzeigen: 3 public endpoints, no account needed, plus 4 signed-in routes (login, logout, messages, account) behind an `x-session-id`.'
paths:
  /v1/kleinanzeigen/search:
    get:
      tags:
      - Kleinanzeigen
      summary: Search Kleinanzeigen listings by keyword and/or category+location, with filters…
      operationId: kleinanzeigen_v1_search
      description: '**Live endpoint.** Credit cost: **1** (1 request = 1 credit).'
      security:
      - apiKeyAuth: []
      parameters:
      - name: query
        in: query
        required: false
        description: 'Free-text keyword. Optional when a categoryId/locationId is given. Provide at least one of: query, categoryId, locationId.'
        schema:
          type: string
          example: fahrrad
      - name: categoryId
        in: query
        required: false
        description: 'Kleinanzeigen category id (e.g. 203 = Mietwohnungen). Browse without a keyword. Provide at least one of: query, categoryId, locationId.'
        schema:
          type: string
          example: '203'
      - name: locationId
        in: query
        required: false
        description: 'Location id from the /locations endpoint (city or ZIP). Anchors the search + `distance`. Provide at least one of: query, categoryId, locationId.'
        schema:
          type: string
          example: '996'
      - name: minPrice
        in: query
        required: false
        description: Minimum price in EUR.
        schema:
          type: string
          example: '50'
      - name: maxPrice
        in: query
        required: false
        description: Maximum price in EUR.
        schema:
          type: string
          example: '1500'
      - name: adType
        in: query
        required: false
        description: Listing type.
        schema:
          type: string
          enum:
          - OFFERED
          - WANTED
      - name: posterType
        in: query
        required: false
        description: Seller type.
        schema:
          type: string
          enum:
          - PRIVATE
          - COMMERCIAL
      - name: sortType
        in: query
        required: false
        description: 'Result ordering (default: newest first).'
        schema:
          type: string
          enum:
          - PRICE_ASCENDING
          - PRICE_DESCENDING
          - DATE_DESCENDING
          - DISTANCE
      - name: distance
        in: query
        required: false
        description: Search radius in km around locationId.
        schema:
          type: string
          example: '20'
      - name: attributes
        in: query
        required: false
        description: 'Category attribute filters (rooms, floor space, …) as `name:value` pairs separated by `|`. The names are the ones the listings carry in `attributes`. A numeric attribute takes a `min,max` range with either end optional: `4.0,` = at least four, `,2.0` = at most two, `2.0,2.0` = exactly two. Names the category does not know come back in `warnings`.'
        schema:
          type: string
          example: wohnung_mieten.zimmer:4.0,
      - name: pictureRequired
        in: query
        required: false
        description: Only listings with at least one photo.
        schema:
          type: string
          enum:
          - 'true'
          - 'false'
      - name: page
        in: query
        required: false
        description: 0-based page index for pagination.
        schema:
          type: string
          example: '0'
      - name: size
        in: query
        required: false
        description: Results per page (1–41, default 25).
        schema:
          type: string
          example: '25'
      responses:
        '200':
          description: Platform-native JSON payload (ScrapeCreators-compatible).
          content:
            application/json:
              example:
                success: true
                query: fahrrad
                page: 0
                page_size: 25
                count: 1
                has_next_page: false
                filters:
                  categoryId: null
                  locationId: null
                  minPrice: null
                  maxPrice: null
                  adType: null
                  posterType: null
                  sortType: null
                  distance: null
                  attributes: null
                warnings: []
                listings:
                - id: '3460255282'
                  title: Bulls Sharptail Street 3 27,5 Zoll mit Originalrechnung
                  description: 'Bulls Sharptail Street 3 27,5 Zoll zu verkaufen

                    Rahmengröße 51 cm, sehr guter Zustand.'
                  url: https://www.kleinanzeigen.de/s-anzeige/bulls-sharptail-street-3-27-5-zoll-mit-originalrechnung/3460255282-217-8124
                  price:
                    amount: 250
                    currency: EUR
                    type: SPECIFIED_AMOUNT
                  ad_type: OFFERED
                  poster_type: PRIVATE
                  status: ACTIVE
                  category:
                    id: '217'
                    name: Fahrraeder
                    localized_name: Fahrräder & Zubehör
                  location:
                    zip_code: '68775'
                    state: Ketsch
                    latitude: 49.371643
                    longitude: 8.526013
                    radius_km: 3.58
                  user_id: '162153981'
                  posted_at: 2026-07-16T12:54:14.000+0200
                  attributes:
                  - name: fahrraeder.art
                    label: Art
                    type: ENUM
                    unit: null
                    values:
                    - value: herren
                      label: Herren
                  - name: fahrraeder.type
                    label: Typ
                    type: ENUM
                    unit: null
                    values:
                    - value: cityraeder
                      label: Cityräder
                  thumbnail: https://img.kleinanzeigen.de/api/v1/prod-ads/images/1f/1f1fc57c-1f93-4ae1-88fb-bd6c2d2c837e?rule=$_2.AUTO
                  images:
                  - https://img.kleinanzeigen.de/api/v1/prod-ads/images/1f/1f1fc57c-1f93-4ae1-88fb-bd6c2d2c837e?rule=$_59.AUTO
        '400':
          description: Missing or invalid parameters.
          content:
            application/json:
              example:
                error:
                  message: 'Missing required parameter(s): handle'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                error:
                  message: Invalid API key.
        '402':
          description: Not enough credits.
          content:
            application/json:
              example:
                error:
                  message: Insufficient credits.
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              example:
                error:
                  message: Rate limit exceeded.
        '502':
          description: Upstream scrape failed.
          content:
            application/json:
              example:
                error:
                  message: Upstream scrape failed.
  /v1/kleinanzeigen/ad:
    get:
      tags:
      - Kleinanzeigen
      summary: 'Get a single Kleinanzeigen listing (full detail: price, attributes, images…'
      operationId: kleinanzeigen_v1_ad
      description: '**Live endpoint.** Credit cost: **1** (1 request = 1 credit).'
      security:
      - apiKeyAuth: []
      parameters:
      - name: id
        in: query
        required: false
        description: 'Numeric ad id. Provide at least one of: id, url.'
        schema:
          type: string
          example: '3460253912'
      - name: url
        in: query
        required: false
        description: 'Full listing URL (web or API) — the ad id is extracted from it. Provide at least one of: id, url.'
        schema:
          type: string
          example: https://www.kleinanzeigen.de/s-anzeige/…/3460253912-203-996
      responses:
        '200':
          description: Platform-native JSON payload (ScrapeCreators-compatible).
          content:
            application/json:
              example:
                success: true
                data:
                  id: '3460253912'
                  title: Bulls Sharptail Street 3 27,5 Zoll mit Originalrechnung
                  description: 'Bulls Sharptail Street 3 27,5 Zoll zu verkaufen

                    Rahmengröße 51 cm, sehr guter Zustand.'
                  url: https://www.kleinanzeigen.de/s-anzeige/bulls-sharptail-street-3-27-5-zoll-mit-originalrechnung/3460255282-217-8124
                  price:
                    amount: 250
                    currency: EUR
                    type: SPECIFIED_AMOUNT
                  ad_type: OFFERED
                  poster_type: PRIVATE
                  status: ACTIVE
                  category:
                    id: '217'
                    name: Fahrraeder
                    localized_name: Fahrräder & Zubehör
                  location:
                    zip_code: '68775'
                    state: Ketsch
                    latitude: 49.371643
                    longitude: 8.526013
                    radius_km: 3.58
                  user_id: '162153981'
                  posted_at: 2026-07-16T12:54:14.000+0200
                  attributes:
                  - name: fahrraeder.art
                    label: Art
                    type: ENUM
                    unit: null
                    values:
                    - value: herren
                      label: Herren
                  - name: fahrraeder.type
                    label: Typ
                    type: ENUM
                    unit: null
                    values:
                    - value: cityraeder
                      label: Cityräder
                  thumbnail: https://img.kleinanzeigen.de/api/v1/prod-ads/images/1f/1f1fc57c-1f93-4ae1-88fb-bd6c2d2c837e?rule=$_2.AUTO
                  images:
                  - https://img.kleinanzeigen.de/api/v1/prod-ads/images/1f/1f1fc57c-1f93-4ae1-88fb-bd6c2d2c837e?rule=$_59.AUTO
                  contact_name: Caroline
                  phone: null
                  seller_account_type: PRIVATE
                  user_rating: 0.8076923076923077
                  user_since: 2016-07-23T15:18:23.000+0200
                  last_edited: 2026-07-16T12:52:39.000+0200
                  locations:
                  - id: '3331'
                    name: Berlin
                  version: '1.16'
                  locale: de_DE
        '400':
          description: Missing or invalid parameters.
          content:
            application/json:
              example:
                error:
                  message: 'Missing required parameter(s): handle'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                error:
                  message: Invalid API key.
        '402':
          description: Not enough credits.
          content:
            application/json:
              example:
                error:
                  message: Insufficient credits.
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              example:
                error:
                  message: Rate limit exceeded.
        '502':
          description: Upstream scrape failed.
          content:
            application/json:
              example:
                error:
                  message: Upstream scrape failed.
  /v1/kleinanzeigen/locations:
    get:
      tags:
      - Kleinanzeigen
      summary: Resolve a place name (city / ZIP) to Kleinanzeigen locationId(s) for the search…
      operationId: kleinanzeigen_v1_locations
      description: '**Live endpoint.** Credit cost: **1** (1 request = 1 credit).'
      security:
      - apiKeyAuth: []
      parameters:
      - name: query
        in: query
        required: true
        description: City name or ZIP code to resolve.
        schema:
          type: string
          example: '51063'
      - name: depth
        in: query
        required: false
        description: How many sub-location levels to include (0 = the matched locations only).
        schema:
          type: string
          example: '0'
      responses:
        '200':
          description: Platform-native JSON payload (ScrapeCreators-compatible).
          content:
            application/json:
              example:
                success: true
                query: Berlin
                locations:
                - id: '3331'
                  name: Berlin
                  localized_name: Berlin
                  latitude: 52.51607
                  longitude: 13.37698
                  radius_km: 15.35
                  parent_id: '0'
                  children_count: 49
        '400':
          description: Missing or invalid parameters.
          content:
            application/json:
              example:
                error:
                  message: 'Missing required parameter(s): handle'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                error:
                  message: Invalid API key.
        '402':
          description: Not enough credits.
          content:
            application/json:
              example:
                error:
                  message: Insufficient credits.
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              example:
                error:
                  message: Rate limit exceeded.
        '502':
          description: Upstream scrape failed.
          content:
            application/json:
              example:
                error:
                  message: Upstream scrape failed.
  /v1/kleinanzeigen/login:
    post:
      tags:
      - Kleinanzeigen
      summary: Open a Kleinanzeigen session with the account's own credentials.
      operationId: kleinanzeigen_v1_login
      description: '**Live endpoint.** Credit cost: **1** (1 request = 1 credit).'
      security:
      - apiKeyAuth: []
      parameters: []
      responses:
        '200':
          description: Platform-native JSON payload (ScrapeCreators-compatible).
          content:
            application/json:
              example:
                session_id: b6f0a1c2d3e4f5a6b7c8d9e0f1a2b3c4
                user_id: name@example.com
                expires_at: '2026-08-09T22:02:00.000Z'
        '400':
          description: Missing or invalid parameters.
          content:
            application/json:
              example:
                error:
                  message: 'Missing required parameter(s): handle'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                error:
                  message: Invalid API key.
        '402':
          description: Not enough credits.
          content:
            application/json:
              example:
                error:
                  message: Insufficient credits.
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              example:
                error:
                  message: Rate limit exceeded.
        '502':
          description: Upstream scrape failed.
          content:
            application/json:
              example:
                error:
                  message: Upstream scrape failed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                username:
                  type: string
                  description: The portal account's e-mail address, or its phone number in +49… form where the platform signs in with one.
                  example: name@example.com
                password:
                  type: string
                  description: The portal account's password, or the one-time code where the platform has no password.
                  example: •••••••••
                login_token:
                  type: string
                  description: The token the challenge route handed back, which binds the code to the attempt it was sent for. On a portal that only asks for a code when it does not recognise the sign-in, this carries that mailed code itself.
                  example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9…
              required:
              - username
            example:
              username: name@example.com
  /v1/kleinanzeigen/logout:
    post:
      tags:
      - Kleinanzeigen
      summary: Close a Kleinanzeigen session and drop everything it stored. Free of charge
      operationId: kleinanzeigen_v1_logout
      description: '**Live endpoint.** Free of charge.'
      security:
      - apiKeyAuth: []
      parameters:
      - name: x-session-id
        in: header
        required: true
        description: The session id returned by login. Sent as the x-session-id header.
        schema:
          type: string
          example: b6f0a1c2d3e4f5a6b7c8d9e0f1a2b3c4
      responses:
        '200':
          description: Platform-native JSON payload (ScrapeCreators-compatible).
          content:
            application/json:
              example: null
        '400':
          description: Missing or invalid parameters.
          content:
            application/json:
              example:
                error:
                  message: 'Missing required parameter(s): handle'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                error:
                  message: Invalid API key.
        '402':
          description: Not enough credits.
          content:
            application/json:
              example:
                error:
                  message: Insufficient credits.
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              example:
                error:
                  message: Rate limit exceeded.
        '502':
          description: Upstream scrape failed.
          content:
            application/json:
              example:
                error:
                  message: Upstream scrape failed.
  /v1/kleinanzeigen/messages:
    get:
      tags:
      - Kleinanzeigen
      summary: Read the signed-in Kleinanzeigen account's inbox, or one conversation in full…
      operationId: kleinanzeigen_v1_messages
      description: '**Live endpoint.** Credit cost: **1** (1 request = 1 credit).'
      security:
      - apiKeyAuth: []
      parameters:
      - name: x-session-id
        in: header
        required: true
        description: The session id returned by login. Sent as the x-session-id header.
        schema:
          type: string
          example: b6f0a1c2d3e4f5a6b7c8d9e0f1a2b3c4
      - name: conversation_id
        in: query
        required: false
        description: One conversation of the inbox. Omit to list the inbox.
        schema:
          type: string
          example: '412778905'
      - name: page
        in: query
        required: false
        description: 1-based page number.
        schema:
          type: string
          example: '1'
      - name: size
        in: query
        required: false
        description: How many entries one page holds.
        schema:
          type: string
          example: '20'
      responses:
        '200':
          description: Platform-native JSON payload (ScrapeCreators-compatible).
          content:
            application/json:
              example:
                success: true
                page: 1
                page_size: 20
                count: 1
                conversations:
                - id: '412778905'
                  ad_id: 5i79di5993027eh1d70e6f5d9g0h5h66
                  ad_title: E-bike Cube Stereo hibryd 120 pro 625 Allroad
                  partner: Bauer Noth
                  unread: true
                  last_message: Ist der Artikel noch verfuegbar?
                  last_message_at: '2026-08-08T18:24:00.000Z'
        '400':
          description: Missing or invalid parameters.
          content:
            application/json:
              example:
                error:
                  message: 'Missing required parameter(s): handle'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                error:
                  message: Invalid API key.
        '402':
          description: Not enough credits.
          content:
            application/json:
              example:
                error:
                  message: Insufficient credits.
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              example:
                error:
                  message: Rate limit exceeded.
        '502':
          description: Upstream scrape failed.
          content:
            application/json:
              example:
                error:
                  message: Upstream scrape failed.
    post:
      tags:
      - Kleinanzeigen
      summary: 'Send a Kleinanzeigen message: a reply into conversation_id, or a first contact…'
      operationId: kleinanzeigen_v1_messages_send
      description: '**Live endpoint.** Credit cost: **1** (1 request = 1 credit).'
      security:
      - apiKeyAuth: []
      parameters:
      - name: x-session-id
        in: header
        required: true
        description: The session id returned by login. Sent as the x-session-id header.
        schema:
          type: string
          example: b6f0a1c2d3e4f5a6b7c8d9e0f1a2b3c4
      responses:
        '200':
          description: Platform-native JSON payload (ScrapeCreators-compatible).
          content:
            application/json:
              example:
                success: true
                conversation_id: '412778905'
                data:
                  delivered: true
        '400':
          description: Missing or invalid parameters.
          content:
            application/json:
              example:
                error:
                  message: 'Missing required parameter(s): handle'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                error:
                  message: Invalid API key.
        '402':
          description: Not enough credits.
          content:
            application/json:
              example:
                error:
                  message: Insufficient credits.
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              example:
                error:
                  message: Rate limit exceeded.
        '502':
          description: Upstream scrape failed.
          content:
            application/json:
              example:
                error:
                  message: Upstream scrape failed.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                message:
                  type: string
                  description: The message text.
                  example: Ist der Artikel noch verfuegbar?
                conversation_id:
                  type: string
                  description: One conversation of the inbox. Omit to list the inbox.
                  example: '412778905'
                ad_id:
                  type: string
                  description: Start a new thread on this listing (instead of replying to a conversation).
                  example: 5i79di5993027eh1d70e6f5d9g0h5h66
                ad_url:
                  type: string
                  description: The listing's full URL, an alternative to ad_id.
                  example: https://www.quoka.de/anzeigen/…/5i79di…html
              required:
              - message
            example:
              message: Ist der Artikel noch verfuegbar?
  /v1/kleinanzeigen/account:
    get:
      tags:
      - Kleinanzeigen
      summary: The signed-in Kleinanzeigen account's own profile
      operationId: kleinanzeigen_v1_account
      description: '**Live endpoint.** Credit cost: **1** (1 request = 1 credit).'
      security:
      - apiKeyAuth: []
      parameters:
      - name: x-session-id
        in: header
        required: true
        description: The session id returned by login. Sent as the x-session-id header.
        schema:
          type: string
          example: b6f0a1c2d3e4f5a6b7c8d9e0f1a2b3c4
      responses:
        '200':
          description: Platform-native JSON payload (ScrapeCreators-compatible).
          content:
            application/json:
              example:
                success: true
                data:
                  id: e63599e304f57gf2efi03735d45g21h6
                  name: Fabian
                  url: https://www.quoka.de/user-profile-e63599e304f57gf2efi03735d45g21h6
                  member_since: 13.07.2026
                  ad_count: 5
                  listings: []
        '400':
          description: Missing or invalid parameters.
          content:
            application/json:
              example:
                error:
                  message: 'Missing required parameter(s): handle'
        '401':
          description: Missing or invalid API key.
          content:
            application/json:
              example:
                error:
                  message: Invalid API key.
        '402':
          description: Not enough credits.
          content:
            application/json:
              example:
                error:
                  message: Insufficient credits.
        '429':
          description: Rate limit exceeded.
          content:
            application/json:
              example:
                error:
                  message: Rate limit exceeded.
        '502':
          description: Upstream scrape failed.
          content:
            application/json:
              example:
                error:
                  message: Upstream scrape failed.
components:
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: Your scraper-api.com API key.
x-tagGroups:
- name: Platforms
  tags:
  - Instagram
  - TikTok
  - YouTube
  - Facebook
  - LinkedIn
  - Twitter
  - Spotify
  - Apple Music
  - Kleinanzeigen
  - Quoka
  - markt.de
  - mobile.de
  - '11880'
  - Gelbe Seiten
  - ImmobilienScout24
  - immowelt
  - WG-Gesucht
  - Bayut
  - LOVOO
  - Jaumo
  - Tinder
  - Bumble
  - Snapchat
  - Google
  - Arbeitsagentur
  - Ausbildung.de
  - meinestadt.de