{
  "openapi": "3.0.1",
  "info": {
    "title": "Kleinanzeigen.de Scraper — German Classifieds Search",
    "description": "Kleinanzeigen.de (ex eBay Kleinanzeigen) scraper for resellers, dealers and AI agents: search by keyword, 159 categories, 48 German cities with radius, price, private/commercial, offers vs wanted ads, shipping.",
    "version": "0.1",
    "x-build-id": "r2tYnl2eTSOiwO8sT"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/yadroo~kleinanzeigen-de/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-yadroo-kleinanzeigen-de",
        "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/yadroo~kleinanzeigen-de/runs": {
      "post": {
        "operationId": "runs-sync-yadroo-kleinanzeigen-de",
        "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/yadroo~kleinanzeigen-de/run-sync": {
      "post": {
        "operationId": "run-sync-yadroo-kleinanzeigen-de",
        "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",
        "properties": {
          "query": {
            "title": "Search query",
            "type": "string",
            "description": "Keyword(s), e.g. \"e-bike\", \"iphone 15 pro\", \"3 zimmer wohnung\". May be empty when a category is set (browse a whole category)."
          },
          "category": {
            "title": "Category",
            "type": "string",
            "description": "Category id, \"c<id>\" code, slug or German name (umlauts optional, e.g. \"Fahrräder & Zubehör\" or \"fahrraeder\"). Empty or \"k0\" = all categories. Anything else fails before the search with a \"did you mean\"; names the site uses twice (e.g. \"altenpflege\") need the id. Top level: Auto, Rad & Boot = 210 (auto-rad-boot); Elektronik = 161 (multimedia-elektronik); Haus & Garten = 80 (haus-garten); Jobs = 102 (jobs); Nachbarschaftshilfe = 400 (nachbarschaftshilfe); Dienstleistungen = 297 (dienstleistungen); Familie, Kind & Baby = 17 (familie-kind-baby); Haustiere = 130 (haustiere); Mode & Beauty = 153 (mode-beauty); Unterricht & Kurse = 235 (unterricht-kurse); Eintrittskarten & Tickets = 231 (eintrittskarten-tickets); Freizeit, Hobby & Nachbarschaft = 185 (freizeit-nachbarschaft); Immobilien = 195 (immobilien); Musik, Filme & Bücher = 73 (musik-film-buecher); Verschenken & Tauschen = 272 (zu-verschenken-tauschen). Popular sub-categories: autos 216, fahrraeder 217, handy-telekom 173, notebooks 278, konsolen 279, wohnung-mieten 203, wohnung-kaufen 196, haus-kaufen 208, kleidung-damen 154. All 159 ids: README → Reference."
          },
          "location": {
            "title": "City",
            "type": "string",
            "description": "German city from the built-in list (Berlin, Hamburg, München, Köln, Frankfurt am Main, Stuttgart, Düsseldorf, Leipzig, Dortmund, Dresden, Hannover, Bonn, Mannheim, Kiel, Mainz, Potsdam… — README → Reference), written in full; umlauts optional (\"Muenchen\"). A name that is not on the list fails before the search with a \"did you mean\". For any other place use locationId + locationSlug. Empty = all Germany."
          },
          "locationSlug": {
            "title": "Location slug (advanced)",
            "type": "string",
            "description": "URL slug of the place, e.g. \"berlin\", \"bad-toelz\" (v0.1 input). Use together with locationId for places not in the built-in list."
          },
          "locationId": {
            "title": "Location ID (advanced)",
            "type": "string",
            "description": "Number after \"l\" in a kleinanzeigen URL, e.g. l3331 for Berlin, l6411 München, l9409 Hamburg. Takes any place; add locationSlug (e.g. \"bad-toelz\") for places outside the built-in list."
          },
          "radiusKm": {
            "title": "Radius, km",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Search around the location: 5, 10, 20, 30, 50, 100, 150 or 200 km. Needs a location."
          },
          "priceFrom": {
            "title": "Price from, €",
            "minimum": 0,
            "type": "integer",
            "description": "Lowest price in euro."
          },
          "priceTo": {
            "title": "Price to, €",
            "minimum": 0,
            "type": "integer",
            "description": "Highest price in euro."
          },
          "sellerType": {
            "title": "Seller",
            "enum": [
              "all",
              "private",
              "commercial"
            ],
            "type": "string",
            "description": "Private or commercial sellers.",
            "default": "all"
          },
          "adType": {
            "title": "Ad type",
            "enum": [
              "offer",
              "wanted",
              "all"
            ],
            "type": "string",
            "description": "Offers = items for sale/rent; wanted = people looking to buy/rent (buyer-intent leads).",
            "default": "offer"
          },
          "shippingOnly": {
            "title": "Shipping possible only",
            "type": "boolean",
            "description": "Only ads with \"Versand möglich\".",
            "default": false
          },
          "attributes": {
            "title": "Category attributes",
            "type": "object",
            "description": "Category-specific filters copied from a kleinanzeigen URL after \"+\", e.g. {\"fahrraeder.type_s\": \"ebike\"}, {\"fahrraeder.art_s\": \"damen\"}, {\"autos.marke_s\": \"bmw\"}, {\"global.zustand\": \"like_new\"}. Requires category."
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "newest",
              "price_asc",
              "distance"
            ],
            "type": "string",
            "description": "Sort order supported by the site.",
            "default": "newest"
          },
          "sinceHours": {
            "title": "Posted within (hours)",
            "minimum": 1,
            "maximum": 8760,
            "type": "integer",
            "description": "Only ads posted in the last N hours (from \"Heute/Gestern, HH:MM\" and dates on the cards). With newest sort pagination stops at the first page that is entirely older."
          },
          "includeTopAds": {
            "title": "Include top ads",
            "type": "boolean",
            "description": "Keep the paid top ads pinned above the results (recognised by the site's top-ad flag; they ignore the sort order and may not match the filters).",
            "default": false
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "maximum": 1250,
            "type": "integer",
            "description": "Stop after this many ads (25 per page; kleinanzeigen.de shows at most 50 pages = 1,250 ads per search). With \"Open ad pages\" about 900 ads fit in the default 1-hour run timeout; a run that reaches the timeout stops just before it and keeps what it saved.",
            "default": 50
          },
          "maxPages": {
            "title": "Max pages",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Search pages to read at most (25 ads each). The default 10 caps a run at 250 ads even when maxItems is higher; the status says when maxPages stopped the run. kleinanzeigen.de rate-limits per IP range — keep this low for scheduled runs.",
            "default": 10
          },
          "detail": {
            "title": "Open ad pages",
            "type": "boolean",
            "description": "+1 request per ad (about 3.75 s each with the polite pause, ~900 ads per hour): full description, category attributes (Art, Typ, Zustand, Wohnfläche, Kilometerstand…), features, coordinates, seller name, private/commercial, active since, badges, all photos. If kleinanzeigen.de blocks ad pages, the rest of that search page is saved without detail (detailError says why), no further pages are read, and the status says so.",
            "default": false
          },
          "fields": {
            "title": "Output fields",
            "type": "array",
            "description": "Keep only these fields, in this order, e.g. [\"title\",\"price\",\"postcode\",\"publishedAt\",\"url\"]. \"id\" is always kept (and \"detailError\" with \"Open ad pages\"). Names: README → Output. Wrong letter case or a near miss is read as the field and noted in the status; unknown names are ignored with a note; if none is valid the run fails before the search. Empty = all fields.",
            "items": {
              "type": "string"
            }
          }
        }
      },
      "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "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
                  },
                  "PROXY_UNBLOCKER_UNITS": {
                    "type": "integer",
                    "example": 0
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}