{
  "openapi": "3.0.1",
  "info": {
    "title": "Kleinanzeigen Scraper — Listings, Prices & Sellers",
    "description": "Scrape Kleinanzeigen.de (eBay Kleinanzeigen) ads from any search URL or keyword + location: price, VB, postcode, date, attributes, images, seller type, optional full details.",
    "version": "0.1",
    "x-build-id": "DquULh5aKau094Cz4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/tortuga~kleinanzeigen-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-tortuga-kleinanzeigen-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/tortuga~kleinanzeigen-scraper/runs": {
      "post": {
        "operationId": "runs-sync-tortuga-kleinanzeigen-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/tortuga~kleinanzeigen-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-tortuga-kleinanzeigen-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": {
          "startUrls": {
            "title": "Start URLs",
            "type": "array",
            "description": "Kleinanzeigen.de results pages with any filters and sort applied in the browser, e.g. https://www.kleinanzeigen.de/s-autos/muenchen/preis:1000:5000/c216l6411 or https://www.kleinanzeigen.de/s-handy-telekom/berlin/iphone-13/k0c173l3331r10. Single ad URLs (https://www.kleinanzeigen.de/s-anzeige/...) are accepted too and return that one ad with full details. Old ebay-kleinanzeigen.de links are rewritten. Leave empty if you use the search fields below.",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "searchQuery": {
            "title": "Search keyword",
            "type": "string",
            "description": "Alternative to Start URLs: what you would type in the Kleinanzeigen search box, e.g. \"iphone 15\", \"lego star wars\", \"3 zimmer wohnung\"."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City, district or postcode, resolved by Kleinanzeigen's own search box, e.g. Berlin, München, Köln, 20095. Leave empty for all of Germany."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Used with Location: search radius around it (Kleinanzeigen offers 5, 10, 20, 30, 50, 100, 150, 200). Leave empty for the location itself."
          },
          "categoryId": {
            "title": "Category",
            "enum": [
              "",
              "210",
              "216",
              "195",
              "203",
              "161",
              "173",
              "80",
              "153",
              "17",
              "130",
              "102",
              "297",
              "217",
              "223",
              "185",
              "192",
              "73",
              "230",
              "278",
              "305",
              "228",
              "279",
              "172",
              "176",
              "88",
              "86",
              "81",
              "84",
              "89",
              "23",
              "25",
              "154",
              "160",
              "157",
              "134",
              "136",
              "196",
              "208",
              "205",
              "199",
              "234",
              "74",
              "76",
              "231"
            ],
            "type": "string",
            "description": "Used with the search fields. Pick a category or leave empty for all categories. Any other category id works too (it is the number after 'c' in a Kleinanzeigen URL, e.g. 217 in /s-fahrraeder/c217).",
            "default": ""
          },
          "minPrice": {
            "title": "Min price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Used with the search fields."
          },
          "maxPrice": {
            "title": "Max price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Used with the search fields."
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "",
              "private",
              "commercial"
            ],
            "type": "string",
            "description": "Used with the search fields: only private sellers or only commercial sellers (shops, dealers, agents).",
            "default": ""
          },
          "adType": {
            "title": "Ad type",
            "enum": [
              "",
              "offer",
              "wanted"
            ],
            "type": "string",
            "description": "Used with the search fields: offers (Angebote) or wanted ads (Gesuche).",
            "default": ""
          },
          "sort": {
            "title": "Sort",
            "enum": [
              "newest",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Used with the search fields. Newest first is Kleinanzeigen's default and the best choice for monitoring new ads.",
            "default": "newest"
          },
          "maxItems": {
            "title": "Max items",
            "minimum": 1,
            "type": "integer",
            "description": "Stop after this many listings in total (across all searches). Keeps cost predictable. Kleinanzeigen shows 25 ads per page and at most 50 pages (about 1,250 ads) per search, so split large searches by category, location or price range to get more.",
            "default": 100
          },
          "maxPagesPerSearch": {
            "title": "Max pages per search",
            "minimum": 1,
            "maximum": 50,
            "type": "integer",
            "description": "Stop each search after this many result pages (1-50). Useful for 'newest ads' monitoring where only the first pages matter.",
            "default": 50
          },
          "includeDetails": {
            "title": "Include ad details",
            "type": "boolean",
            "description": "Also open every ad page to get the full description, the complete attribute table (e.g. make, model, mileage, first registration, living space, rooms, condition), equipment features, region, seller display name, member-since date, badges and number of active ads. One extra request per listing; charged as an extra 'detail' event (see pricing).",
            "default": false
          },
          "onlyNewOrChanged": {
            "title": "Only new or changed items",
            "type": "boolean",
            "description": "Remember what earlier runs of this search returned and output only new ads or ads whose price changed. Use with a Schedule; unchanged ads are not charged. With this on, Max items is the number of listings checked per run (e.g. the newest 100).",
            "default": false
          },
          "monitoringKey": {
            "title": "Monitoring key",
            "type": "string",
            "description": "Name for this watch, so several schedules on the same search stay separate; defaults to a key derived from the search input"
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Proxy for search result pages and the first attempt at ad pages. Apify Proxy (datacenter) works well for Kleinanzeigen search pages and is the default.",
            "default": {
              "useApifyProxy": true
            }
          },
          "detailsProxyConfiguration": {
            "title": "Proxy for ad pages (fallback)",
            "type": "object",
            "description": "Kleinanzeigen blocks many datacenter IP ranges on ad pages (not on search pages). When 'Include ad details' is on and an ad page is blocked on the main proxy, it is retried through this proxy. Residential Germany is the default and is reliable; residential traffic is billed by Apify per GB (an ad page is roughly 0.1-0.3 MB compressed), and only blocked ad pages use it. Untick 'Use Apify Proxy' here to never use residential.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": [
                "RESIDENTIAL"
              ],
              "apifyProxyCountry": "DE"
            }
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}