{
  "openapi": "3.0.1",
  "info": {
    "title": "Kleinanzeigen Scraper - New Ads & Price Drop Alerts",
    "description": "Scrape Kleinanzeigen.de (ex eBay Kleinanzeigen) without login: any search link or keyword, location, radius, price, offer and seller type. Schedule it with only-new ads and price-drop tracking. Full ad page optional. No seller data. US$ 1.00 per 1,000 ads.",
    "version": "0.1",
    "x-build-id": "3Rch5iiYx56Vsxgop"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/scrapewise~kleinanzeigen-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-scrapewise-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/scrapewise~kleinanzeigen-scraper/runs": {
      "post": {
        "operationId": "runs-sync-scrapewise-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/scrapewise~kleinanzeigen-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-scrapewise-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": {
          "searchUrls": {
            "title": "Kleinanzeigen links",
            "type": "array",
            "description": "Search or category links from kleinanzeigen.de, one per line, with every filter you set on the site, for example https://www.kleinanzeigen.de/s-wohnung-mieten/berlin/c203l3331. Ad links (/s-anzeige/...) or numeric ad ids return the full ad page. Each ad is charged once as 'Kleinanzeigen ad delivered'. Also accepts 'startUrls' or 'urls'.",
            "items": {
              "type": "string"
            }
          },
          "keywords": {
            "title": "Keywords",
            "type": "array",
            "description": "Search terms, one per line, each one a separate search with the filters below, for example iphone 15, golf 7 or ps5. German or English both work. Leave empty with a category or location to get every ad there.",
            "items": {
              "type": "string"
            }
          },
          "categoryId": {
            "title": "Category id",
            "type": "string",
            "description": "Optional Kleinanzeigen category number, the digits after 'c' in a site link: 216 cars, 203 apartments for rent, 196 apartments for sale, 173 phones, 161 electronics, 217 bicycles, 192 free stuff. Empty = all categories."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "German city, district or 5-digit postal code as the site writes it, for example Berlin, München, Köln or 10115. Used by keyword searches; links keep their own location. Empty = all of Germany."
          },
          "radiusKm": {
            "title": "Radius (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Distance around the location in km: 0 (default, the place itself), 5, 10, 20, 30, 50, 100, 150 or 200. Other values snap to the nearest one. Needs a location.",
            "default": 0
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads at or above this price in euros, as a whole number, for example 100. Empty = no minimum."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Only ads at or below this price in euros, as a whole number, for example 800. Empty = no maximum."
          },
          "adType": {
            "title": "Offers or wanted",
            "enum": [
              "all",
              "offers",
              "wanted"
            ],
            "type": "string",
            "description": "All (default), Offers (Angebote, ads that sell something) or Wanted (Gesuche, ads looking for something).",
            "default": "all"
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "all",
              "private",
              "commercial"
            ],
            "type": "string",
            "description": "All (default), Private sellers or Commercial sellers, as Kleinanzeigen classifies them. Only the type is returned, never who the seller is.",
            "default": "all"
          },
          "sortBy": {
            "title": "Sort by",
            "enum": [
              "newest",
              "recommended",
              "priceLowToHigh",
              "priceHighToLow"
            ],
            "type": "string",
            "description": "Kleinanzeigen's own order for keyword searches: Newest (default), Recommended, Price low to high, or Price high to low. With a limit it also decides which ads you get. Links keep their own order. 'Only new ads' and 'Only new ads and price changes' always use newest.",
            "default": "newest"
          },
          "maxItemsPerSearch": {
            "title": "Max ads per search",
            "minimum": 0,
            "type": "integer",
            "description": "Stop each search (each link and each keyword) after this many ads, for example 50 (default). The site shows 25 per page and at most 50 pages (1,250 ads) per search. 0 = as many as the site shows. You pay per ad delivered, so this caps the cost of each search.",
            "default": 50
          },
          "includeTopAds": {
            "title": "Include TOP ads",
            "type": "boolean",
            "description": "Keep the paid TOP ads Kleinanzeigen pins above the results (flagged isTopAd). Empty = on for normal searches and off with 'Only new ads' or 'Only new ads and price changes', because TOP ads rotate and are often weeks old."
          },
          "onlyNew": {
            "title": "Only new ads since the last run",
            "type": "boolean",
            "description": "Deliver only ads this search never returned before. Ads already delivered are skipped, not charged and do not count toward the limit, so a quiet run costs nothing. The first run delivers up to the limit and remembers every ad on the pages it read. Forces the newest order.",
            "default": false
          },
          "trackPriceChanges": {
            "title": "Track price changes",
            "type": "boolean",
            "description": "Remember the last price seen for every ad of the search and add previousPrice, priceChange, priceChangePct, isPriceDrop, isNewAd, firstSeenAt and previousSeenAt to each row. On the first run every ad is new.",
            "default": false
          },
          "onlyChanged": {
            "title": "Only new ads and price changes",
            "type": "boolean",
            "description": "Deliver only ads that are new to this search or whose price changed since they were last seen. Turns on price tracking and replaces 'Only new ads'. Unchanged ads are checked but not delivered and not charged; the limit counts checked ads.",
            "default": false
          },
          "includeDetails": {
            "title": "Full ad page",
            "type": "boolean",
            "description": "Off (default): rows come from the search results (title, price, location, date, first image, short text). On: opens each delivered ad and adds the full description, attributes (mileage, rooms, condition...), features, every image, creation date, category path and shipping options. One extra request per ad, charged as a separate 'Full ad page read' event. Never any seller data.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy",
            "type": "object",
            "description": "Apify datacenter proxy is the default. If Kleinanzeigen refuses it several times in a row, the run switches to a stronger proxy group on its own (only when you did not pick a proxy group), with no extra charge.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}