{
  "openapi": "3.0.1",
  "info": {
    "title": "Willhaben.at Scraper - Austria’s Classifieds",
    "description": "Scrape willhaben.at - Austria’s largest classifieds platform. All four sections including jobs, real estate, cars, and marketplace. Paste any search URL with filters and incremental change tracking. Compact output for AI agents and MCP workflows.",
    "version": "0.2",
    "x-build-id": "vbmYCHewc0lYbrq4z"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/blackfalcondata~willhaben-all-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-blackfalcondata-willhaben-all-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/blackfalcondata~willhaben-all-scraper/runs": {
      "post": {
        "operationId": "runs-sync-blackfalcondata-willhaben-all-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/blackfalcondata~willhaben-all-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-blackfalcondata-willhaben-all-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": {
          "searchUrl": {
            "title": "Search URL",
            "type": "string",
            "description": "Paste any willhaben.at search URL — section, sub-type, keyword and all filters are extracted automatically. Other fields below override individual values if needed."
          },
          "section": {
            "title": "Section",
            "enum": [
              "marktplatz",
              "immobilien",
              "autos",
              "jobs"
            ],
            "type": "string",
            "description": "Which part of willhaben.at to scrape.",
            "default": "marktplatz"
          },
          "immoSubType": {
            "title": "Immobilien Sub-Type",
            "enum": [
              "mietwohnungen",
              "eigentumswohnungen",
              "haus-kaufen",
              "haus-mieten",
              "buero-gewerbe"
            ],
            "type": "string",
            "description": "Category within the Immobilien section. Only used when section = immobilien.",
            "default": "mietwohnungen"
          },
          "query": {
            "title": "Keyword",
            "type": "string",
            "description": "Search keyword (optional). Leave empty to get all listings in the section."
          },
          "location": {
            "title": "Location",
            "type": "string",
            "description": "City or district name for Marktplatz, Immobilien, and Autos searches (e.g. 'Wien'). For Jobs, use jobLocation instead."
          },
          "priceMin": {
            "title": "Price Min (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum listing price in EUR. Not applicable for Jobs."
          },
          "priceMax": {
            "title": "Price Max (€)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum listing price in EUR. Not applicable for Jobs."
          },
          "jobLocation": {
            "title": "Job Location",
            "type": "string",
            "description": "City or location filter for jobs (e.g. 'Wien'). Only used when section = jobs."
          },
          "jobRegion": {
            "title": "Job Region",
            "type": "string",
            "description": "Federal state or region filter (e.g. 'wien'). Only used when section = jobs."
          },
          "jobOperationArea": {
            "title": "Operation Area",
            "type": "string",
            "description": "Job operation/industry area filter. Only used when section = jobs."
          },
          "jobEmploymentMode": {
            "title": "Employment Mode",
            "type": "string",
            "description": "Employment type filter (e.g. 'vollzeit', 'teilzeit'). Only used when section = jobs."
          },
          "jobPosition": {
            "title": "Position Level",
            "type": "string",
            "description": "Position/seniority filter. Only used when section = jobs."
          },
          "jobCompanyType": {
            "title": "Company Type",
            "type": "string",
            "description": "Type of employer (e.g. 'private', 'public'). Only used when section = jobs."
          },
          "jobTimeLimit": {
            "title": "Time Limit",
            "type": "string",
            "description": "Contract duration filter (e.g. 'unbefristet'). Only used when section = jobs."
          },
          "maxResults": {
            "title": "Max Results",
            "minimum": 0,
            "maximum": 10000,
            "type": "integer",
            "description": "Maximum number of listings to return. 0 = unlimited.",
            "default": 50
          },
          "includeDetails": {
            "title": "Include Details",
            "type": "boolean",
            "description": "Fetch the full listing detail page for each result. Adds description, contact info, and richer field data. Slower but more complete.",
            "default": true
          },
          "descriptionMaxLength": {
            "title": "Description Max Length",
            "minimum": 0,
            "type": "integer",
            "description": "Truncate description text to N characters. 0 = no truncation.",
            "default": 0
          },
          "compact": {
            "title": "Compact Output",
            "type": "boolean",
            "description": "Return core fields only (listingId, title, price, location, section-key fields). Smaller payload for AI-agent and MCP workflows.",
            "default": false
          },
          "incrementalMode": {
            "title": "Incremental Mode",
            "type": "boolean",
            "description": "Only emit new or changed listings. Requires stateKey. Unchanged listings are skipped. Change tracking is free — no extra charge per run.",
            "default": false
          },
          "stateKey": {
            "title": "State Key",
            "type": "string",
            "description": "Stable identifier for this tracked search (e.g. 'vw-golf-wien'). Required when incrementalMode is true. Different searches must use different keys."
          },
          "skipReposts": {
            "title": "Skip Reposts",
            "type": "boolean",
            "description": "When enabled, suppress listings that appear to be reposts of previously seen (and now expired) listings based on content fingerprint matching.",
            "default": false
          }
        }
      },
      "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
                  }
                }
              },
              "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}