{
  "openapi": "3.0.1",
  "info": {
    "title": "Kleinanzeigen.de Scraper: Listings, Prices & Ad Details",
    "description": "Scrape Kleinanzeigen.de (ex eBay Kleinanzeigen) ads by keyword, category, place or search URL, past the 125-result limit. Price, VB, category, postcode, date, shipping, photos; optional details: full description, attributes, coordinates. Private sellers stay anonymous. Unofficial.",
    "version": "0.1",
    "x-build-id": "WzssU4Ijp1n0eE3jn"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/kyungminlee~kleinanzeigen-listings-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-kyungminlee-kleinanzeigen-listings-scraper",
        "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/kyungminlee~kleinanzeigen-listings-scraper/runs": {
      "post": {
        "operationId": "runs-sync-kyungminlee-kleinanzeigen-listings-scraper",
        "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/kyungminlee~kleinanzeigen-listings-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-kyungminlee-kleinanzeigen-listings-scraper",
        "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": {
          "searchQueries": {
            "title": "Search terms",
            "type": "array",
            "description": "What you would type into the Kleinanzeigen search box, one per line (German works best), e.g. `fahrrad`, `iphone 15`, `sofa`. Each term is searched in every place selected below (or all of Germany). Leave empty to browse a category or place without a keyword.",
            "items": {
              "type": "string"
            }
          },
          "category": {
            "title": "Category",
            "enum": [
              "210",
              "216",
              "223",
              "211",
              "217",
              "305",
              "306",
              "276",
              "280",
              "220",
              "241",
              "297",
              "288",
              "289",
              "290",
              "293",
              "291",
              "292",
              "294",
              "295",
              "296",
              "298",
              "231",
              "286",
              "254",
              "287",
              "252",
              "255",
              "257",
              "251",
              "256",
              "161",
              "172",
              "226",
              "245",
              "176",
              "408",
              "279",
              "278",
              "228",
              "225",
              "173",
              "409",
              "285",
              "407",
              "175",
              "227",
              "405",
              "406",
              "168",
              "17",
              "236",
              "22",
              "19",
              "258",
              "21",
              "237",
              "25",
              "20",
              "23",
              "18",
              "185",
              "232",
              "248",
              "187",
              "282",
              "240",
              "191",
              "249",
              "233",
              "234",
              "230",
              "250",
              "189",
              "242",
              "80",
              "91",
              "93",
              "246",
              "239",
              "89",
              "90",
              "84",
              "86",
              "82",
              "81",
              "88",
              "87",
              "130",
              "138",
              "134",
              "136",
              "132",
              "135",
              "139",
              "133",
              "283",
              "243",
              "313",
              "195",
              "199",
              "402",
              "196",
              "275",
              "197",
              "277",
              "207",
              "208",
              "205",
              "203",
              "403",
              "238",
              "198",
              "102",
              "118",
              "111",
              "114",
              "110",
              "105",
              "107",
              "125",
              "123",
              "247",
              "117",
              "109",
              "153",
              "224",
              "154",
              "159",
              "160",
              "158",
              "156",
              "157",
              "155",
              "73",
              "76",
              "281",
              "284",
              "77",
              "79",
              "78",
              "74",
              "75",
              "400",
              "401",
              "235",
              "269",
              "260",
              "265",
              "263",
              "264",
              "262",
              "268",
              "261",
              "271",
              "267",
              "266",
              "270",
              "272",
              "273",
              "274",
              "192"
            ],
            "type": "string",
            "description": "Limit the search terms (or browsing) to one Kleinanzeigen category. Leave empty for all categories."
          },
          "locations": {
            "title": "Places",
            "type": "array",
            "description": "Search in these German states or cities. Leave empty for all of Germany. For any other town or district, open kleinanzeigen.de, choose the place there and paste the result URL into **Kleinanzeigen URLs**.",
            "items": {
              "type": "string",
              "enum": [
                "baden-wuerttemberg",
                "bayern",
                "berlin",
                "brandenburg",
                "bremen",
                "hamburg",
                "hessen",
                "mecklenburg-vorpommern",
                "niedersachsen",
                "nordrhein-westfalen",
                "rheinland-pfalz",
                "saarland",
                "sachsen",
                "sachsen-anhalt",
                "schleswig-holstein",
                "thueringen",
                "muenchen",
                "koeln",
                "frankfurt-am-main",
                "stuttgart",
                "duesseldorf",
                "leipzig",
                "dortmund",
                "essen",
                "dresden",
                "hannover",
                "nuernberg",
                "duisburg",
                "bochum",
                "wuppertal",
                "bielefeld",
                "bonn",
                "muenster",
                "mannheim",
                "karlsruhe",
                "augsburg",
                "wiesbaden",
                "braunschweig",
                "chemnitz",
                "aachen",
                "freiburg-im-breisgau",
                "kassel",
                "regensburg",
                "oldenburg",
                "osnabrueck",
                "heidelberg",
                "darmstadt",
                "wuerzburg"
              ],
              "enumTitles": [
                "Baden-Württemberg (state)",
                "Bayern (state)",
                "Berlin (state)",
                "Brandenburg (state)",
                "Bremen (state)",
                "Hamburg (state)",
                "Hessen (state)",
                "Mecklenburg-Vorpommern (state)",
                "Niedersachsen (state)",
                "Nordrhein-Westfalen (state)",
                "Rheinland-Pfalz (state)",
                "Saarland (state)",
                "Sachsen (state)",
                "Sachsen-Anhalt (state)",
                "Schleswig-Holstein (state)",
                "Thüringen (state)",
                "München",
                "Köln",
                "Frankfurt am Main",
                "Stuttgart",
                "Düsseldorf",
                "Leipzig",
                "Dortmund",
                "Essen",
                "Dresden",
                "Hannover",
                "Nürnberg",
                "Duisburg",
                "Bochum",
                "Wuppertal",
                "Bielefeld",
                "Bonn",
                "Münster (Westfalen)",
                "Mannheim",
                "Karlsruhe",
                "Augsburg",
                "Wiesbaden",
                "Braunschweig",
                "Chemnitz",
                "Aachen",
                "Freiburg im Breisgau",
                "Kassel",
                "Regensburg",
                "Oldenburg",
                "Osnabrück",
                "Heidelberg",
                "Darmstadt",
                "Würzburg"
              ]
            }
          },
          "searchUrls": {
            "title": "Kleinanzeigen URLs",
            "type": "array",
            "description": "Paste URLs from kleinanzeigen.de, one per line: search result pages (`https://www.kleinanzeigen.de/s-...`, with any place, category or keyword) or single ads (`https://www.kleinanzeigen.de/s-anzeige/...`). Ad URLs always return the full ad details. Filters that Kleinanzeigen's robots.txt does not allow in URLs are handled as described in the README: price, offer/wanted and \"Direkt kaufen\" filters are applied to the results by the Actor; sorting, radius and seller-type filters are removed.",
            "items": {
              "type": "string"
            }
          },
          "maxResults": {
            "title": "Maximum ads per search",
            "minimum": 0,
            "type": "integer",
            "description": "How many ads to save for each search (each search term in each place, and each search URL). 0 = as many as can be reached. Ads already saved by another search in the same run are skipped and do not count. The run's maximum charge can lower this.",
            "default": 100
          },
          "splitSearches": {
            "title": "Get more than 125 ads per search (split by place and category)",
            "type": "boolean",
            "description": "Kleinanzeigen's robots.txt allows only the first 5 result pages (125 ads) of any search. When a search has more ads and you ask for more, the Actor first saves those 125 newest ads, then reads the same search in each sub-place (state → city → district) and, where a place is still too big, in each category, and merges everything without duplicates. Turn off to stop at 125.",
            "default": true
          },
          "includeDetails": {
            "title": "Include ad details",
            "type": "boolean",
            "description": "Also open every ad page to add the full description, all attributes (e.g. condition, size, mileage, rooms, living space, rent costs), features, all photos, state, coordinates, shipping details and the last bump time. One extra request per ad, charged as `listing-detail` instead of `listing`.",
            "default": false
          },
          "minPrice": {
            "title": "Minimum price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only ads with at least this price. Ads without a price (only \"VB\") are left out when a price filter is set."
          },
          "maxPrice": {
            "title": "Maximum price (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Keep only ads with at most this price. Free ads (\"Zu verschenken\") count as 0 €."
          },
          "offerType": {
            "title": "Offers or wanted ads",
            "enum": [
              "all",
              "offers",
              "wanted"
            ],
            "type": "string",
            "description": "Kleinanzeigen mixes offers with \"Gesuch\" (wanted) ads. Keep both, or only one kind.",
            "default": "all"
          },
          "maxConcurrency": {
            "title": "Parallel sessions",
            "minimum": 1,
            "maximum": 5,
            "type": "integer",
            "description": "How many pages are loaded at the same time, each session pausing 1-2 seconds between its requests. Higher is faster; lower is gentler.",
            "default": 3
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "With the default Apify proxy, requests go out on the run's own connection first (the most reliable in our tests) and switch to Apify datacenter proxy IPs whenever Kleinanzeigen blocks or rate-limits it, with a fresh IP for every retry. If you choose specific proxy groups (e.g. residential) or your own proxy URLs, they are used for every request. Turn the proxy off to use only the run's own connection (with longer pauses when blocked).",
            "default": {
              "useApifyProxy": true
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}