{
  "openapi": "3.0.1",
  "info": {
    "title": "Kleinanzeigen Scraper & API - eBay Kleinanzeigen Ads & Prices",
    "description": "Kleinanzeigen scraper and API (formerly eBay Kleinanzeigen): search Kleinanzeigen.de ads by keyword, category, city or postcode + radius, price and seller type. One result = one ad: title, price, VB, place, date, seller type, shop, photos, URL. Details included, no start fee. $0.35 per 1,000.",
    "version": "1.0",
    "x-build-id": "C9BfVUaTBNa3BOlef"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/rel8ble~kleinanzeigen-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-rel8ble-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/rel8ble~kleinanzeigen-scraper/runs": {
      "post": {
        "operationId": "runs-sync-rel8ble-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/rel8ble~kleinanzeigen-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-rel8ble-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": {
          "searchQueries": {
            "title": "Search keywords",
            "type": "array",
            "description": "Optional. What you would type into the Kleinanzeigen search box, one per line, in German or as product names: \"fahrrad\", \"iphone 13\", \"ikea kallax\", \"e-bike\", \"lego technic\". Each keyword is one search (times each category and place). Leave empty to list a whole category or place instead.",
            "items": {
              "type": "string"
            }
          },
          "categories": {
            "title": "Categories",
            "type": "array",
            "description": "Optional. Kleinanzeigen category ids or German names, one per line: \"217\" or \"Fahrräder & Zubehör\", \"161\" (Elektronik), \"173\" (Handy & Telekom). The id is the number after \"c\" in a result URL (/s-fahrraeder/c217). Top-level ids: 210 = Auto, Rad & Boot, 297 = Dienstleistungen, 231 = Eintrittskarten & Tickets, 161 = Elektronik, 17 = Familie, Kind & Baby, 185 = Freizeit, Hobby & Nachbarschaft, 80 = Haus & Garten, 130 = Haustiere, 195 = Immobilien, 102 = Jobs, 153 = Mode & Beauty, 73 = Musik, Filme & Bücher, 400 = Nachbarschaftshilfe, 235 = Unterricht & Kurse, 272 = Verschenken & Tauschen. Several = one search per category. Empty = all categories.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Places (city, district or postcode)",
            "type": "array",
            "description": "Optional. German places, one per line: a city (\"Berlin\", \"München\"), a district (\"Hamburg-Altona\") or a 5-digit postcode (\"80331\"). Resolved with the site's own place lookup; an unknown place is left out and listed in the run summary. A Kleinanzeigen location id like \"l3331\" also works. Several = one search per place. Empty = all of Germany.",
            "items": {
              "type": "string"
            }
          },
          "radiusKm": {
            "title": "Radius around the place (km)",
            "minimum": 0,
            "maximum": 200,
            "type": "integer",
            "description": "Optional, only used with places. Search radius in km around each place: 5, 10, 20, 30, 50, 100, 150, 200 (other numbers are rounded to the nearest of these). Empty or 0 = only the place itself. Rows then carry distanceKm."
          },
          "priceMin": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Lowest price in whole euros, e.g. 50. Empty = no minimum. Note: ads without a price (\"VB\" only) are left out by any price filter, as on the website."
          },
          "priceMax": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Highest price in whole euros, e.g. 300. 0 together with priceMin 0 = only free items (\"Zu verschenken\"). Empty = no maximum."
          },
          "sellerType": {
            "title": "Seller type",
            "enum": [
              "any",
              "private",
              "commercial"
            ],
            "type": "string",
            "description": "Optional. \"any\" (default), \"private\" (private individuals) or \"commercial\" (businesses and shops, which come with their shop name and link).",
            "default": "any"
          },
          "adType": {
            "title": "Offers or wanted ads",
            "enum": [
              "offer",
              "wanted",
              "any"
            ],
            "type": "string",
            "description": "Optional. \"offer\" (default: items for sale), \"wanted\" (people looking for something, \"Gesuche\") or \"any\" (both, as the website shows by default).",
            "default": "offer"
          },
          "buyNowOnly": {
            "title": "Only \"Direkt kaufen\" ads",
            "type": "boolean",
            "description": "Optional boolean, default false. true = only ads that can be bought online with Kleinanzeigen's \"Direkt kaufen\" (buy now).",
            "default": false
          },
          "shipping": {
            "title": "Shipping",
            "enum": [
              "any",
              "yes",
              "no"
            ],
            "type": "string",
            "description": "Optional. \"any\" (default), \"yes\" (seller ships) or \"no\" (pick-up only).",
            "default": "any"
          },
          "sort": {
            "title": "Sort by",
            "enum": [
              "newest",
              "price_asc",
              "price_desc"
            ],
            "type": "string",
            "description": "Optional. \"newest\" (default, the site's own order; use it on a schedule to catch new ads), \"price_asc\" or \"price_desc\".",
            "default": "newest"
          },
          "startUrls": {
            "title": "Kleinanzeigen URLs",
            "type": "array",
            "description": "Optional. URLs copied from kleinanzeigen.de, one per line. A result URL (\"https://www.kleinanzeigen.de/s-fahrraeder/berlin/preis:100:500/e-bike/k0c217l3331r10\", a category or place page, or one with attribute filters like \"+fahrraeder.type_s:ebike\") is scraped with every filter in it; the filter fields above are not applied to it. An ad URL (\"https://www.kleinanzeigen.de/s-anzeige/.../3543804064-217-7414\") is looked up directly with full details. Seller and shop pages are not supported.",
            "items": {
              "type": "string"
            }
          },
          "maxItems": {
            "title": "Max ads per search",
            "minimum": 0,
            "type": "integer",
            "description": "Optional. Maximum ads saved per search (one keyword x category x place, or one URL), integer >= 0. Default 100; 0 = every ad the search has. You pay per ad saved ($0.00035 each), so 1,000 ads = $0.35. Use 10-20 for a quick answer.",
            "default": 100
          },
          "deepSearch": {
            "title": "Deep search (go past the 1,250-ad limit)",
            "type": "boolean",
            "description": "Optional boolean, default true. Kleinanzeigen shows at most 1,250 ads per search (50 pages of 25). With deep search on, a bigger search is split automatically by German state, then sub-category, then price band, and the results are merged without duplicates. Only kicks in when maxItems is above 1,250 (or 0). Costs extra requests and time, not extra money per ad.",
            "default": true
          },
          "includeDetails": {
            "title": "Include ad details (slower)",
            "type": "boolean",
            "description": "Optional boolean. false (default) = data from the result pages: title, price, price type (VB), old price, place, postcode, date, category, seller type, shop name, shipping, photos, URL; 25 ads per request. true = also open each ad for the full description (contact details masked), all attributes (Zustand, Art, Typ, Größe ...), features, offer/wanted, shipping cost, posting date, approximate map position, all photos, and seller badges / member-since date. Same price per ad, about 1 extra request per ad.",
            "default": false
          },
          "maxConcurrency": {
            "title": "Max concurrency",
            "minimum": 1,
            "maximum": 20,
            "type": "integer",
            "description": "Optional, advanced. Parallel requests, integer 1-20. Default 5; requests are also paced to stay polite. Leave unset.",
            "default": 5
          },
          "maxRequestRetries": {
            "title": "Max retries per request",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Optional, advanced. Retries per failed or blocked request, integer 0-20; each retry uses a new session and proxy IP. Default 8. Leave unset.",
            "default": 8
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Optional, advanced. Apify Proxy settings object. Default {\"useApifyProxy\": true} (datacenter proxy). Leave unset.",
            "default": {
              "useApifyProxy": true
            }
          },
          "residentialFallback": {
            "title": "Retry stubborn requests on residential IPs",
            "type": "boolean",
            "description": "Optional, advanced boolean, default true. When a request fails 5 times in a row on the datacenter proxy, it is retried through a German residential IP (capped at 50 requests per run). Leave unset.",
            "default": 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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}