{
  "openapi": "3.0.1",
  "info": {
    "title": "Homegate Property Scraper (Stable API)",
    "description": "Lightning-fast Homegate.ch scraper using direct API extraction. Scrape rent/buy listings, prices, agent details, and coordinates. Supports all Swiss cantons, cities, and zip codes.",
    "version": "0.0",
    "x-build-id": "yET917CPYWg32b4i4"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/ducto~homegate-property-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-ducto-homegate-property-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/ducto~homegate-property-scraper/runs": {
      "post": {
        "operationId": "runs-sync-ducto-homegate-property-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/ducto~homegate-property-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-ducto-homegate-property-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",
        "required": [
          "offerType"
        ],
        "properties": {
          "searchUrls": {
            "title": "Start URLs (Optional)",
            "type": "array",
            "description": "Paste direct Homegate.ch listing URLs here (e.g., https://www.homegate.ch/rent/12345678). If provided, location filters below are ignored.",
            "items": {
              "type": "string"
            }
          },
          "locations": {
            "title": "Locations (Cities, Cantons, Zip Codes)",
            "type": "array",
            "description": "E.g., 'Zurich', 'Bern', '8001'. The actor automatically resolves these to Homegate GeoTags.",
            "default": [
              "Zurich"
            ],
            "items": {
              "type": "string"
            }
          },
          "offerType": {
            "title": "Offer Type",
            "enum": [
              "RENT",
              "BUY"
            ],
            "type": "string",
            "description": "Select whether you are looking to rent or buy properties.",
            "default": "RENT"
          },
          "categories": {
            "title": "Property Categories",
            "type": "array",
            "description": "Select specific property types (e.g., Apartment, House). Leave empty to search all categories.",
            "items": {
              "type": "string",
              "enum": [
                "APARTMENT",
                "MAISONETTE",
                "DUPLEX",
                "ATTIC_FLAT",
                "ROOF_FLAT",
                "STUDIO",
                "SINGLE_ROOM",
                "TERRACE_FLAT",
                "LOFT",
                "HOUSE",
                "ROW_HOUSE",
                "BIFAMILIAR_HOUSE",
                "TERRACE_HOUSE",
                "VILLA",
                "FARM_HOUSE",
                "CHALET",
                "RUSTICO",
                "SINGLE_HOUSE",
                "COMMERCIAL",
                "OFFICE",
                "SHOP",
                "RESTAURANT",
                "GARAGE",
                "PARKING_SPACE",
                "BUILDING_LAND",
                "AGRICULTURAL_LAND",
                "INDUSTRIAL_LAND"
              ],
              "enumTitles": [
                "Apartment",
                "Maisonette",
                "Duplex",
                "Attic Flat",
                "Roof Flat",
                "Studio",
                "Single Room",
                "Terrace Flat",
                "Loft",
                "House",
                "Row House",
                "Bifamiliar House",
                "Terrace House",
                "Villa",
                "Farm House",
                "Chalet",
                "Rustico",
                "Single House",
                "Commercial",
                "Office",
                "Shop",
                "Restaurant",
                "Garage",
                "Parking Space",
                "Building Land",
                "Agricultural Land",
                "Industrial Land"
              ]
            }
          },
          "agencyIds": {
            "title": "Target Specific Agencies (listerIds)",
            "type": "array",
            "description": "Only scrape properties from these specific Agency IDs (e.g., 'w002'). Leave empty for all.",
            "items": {
              "type": "string"
            }
          },
          "priceMin": {
            "title": "Minimum Price (CHF)",
            "minimum": 0,
            "type": "integer",
            "description": "The lowest price (rent or purchase) to include in the search."
          },
          "priceMax": {
            "title": "Maximum Price (CHF)",
            "minimum": 0,
            "type": "integer",
            "description": "The highest price (rent or purchase) to include in the search."
          },
          "roomsMin": {
            "title": "Minimum Rooms",
            "minimum": 0.5,
            "type": "number",
            "description": "Minimum number of rooms (supports half-rooms, e.g., 2.5)."
          },
          "roomsMax": {
            "title": "Maximum Rooms",
            "type": "number",
            "description": "Maximum number of rooms (supports half-rooms, e.g., 5.5)."
          },
          "livingSpaceMin": {
            "title": "Minimum Living Space (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "The minimum interior living area in square meters."
          },
          "livingSpaceMax": {
            "title": "Maximum Living Space (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "The maximum interior living area in square meters."
          },
          "features": {
            "title": "Required Features",
            "type": "array",
            "description": "Only return properties that have ALL of these selected features.",
            "items": {
              "type": "string",
              "enum": [
                "hasBalcony",
                "arePetsAllowed",
                "hasElevator",
                "isNewBuilding",
                "hasParkingOrGarage",
                "isWheelchairAccessible",
                "hasNiceView",
                "hasFireplace",
                "hasSwimmingPool",
                "isOldBuilding",
                "isChildFriendly",
                "isMinergieGeneral"
              ],
              "enumTitles": [
                "Has Balcony",
                "Pets Allowed",
                "Has Elevator",
                "New Building",
                "Has Parking/Garage",
                "Wheelchair Accessible",
                "Nice View",
                "Has Fireplace",
                "Has Swimming Pool",
                "Old Building",
                "Child Friendly",
                "Minergie Certified"
              ]
            }
          },
          "outputLanguage": {
            "title": "Output Language",
            "enum": [
              "de",
              "en",
              "fr",
              "it"
            ],
            "type": "string",
            "description": "The language in which property titles and descriptions will be returned.",
            "default": "de"
          },
          "maxItems": {
            "title": "Max Items to Scrape",
            "minimum": 0,
            "type": "integer",
            "description": "The maximum number of property listings to extract in this run.",
            "default": 100
          },
          "maxConcurrency": {
            "title": "Max Concurrent Requests",
            "minimum": 1,
            "type": "integer",
            "description": "Maximum number of simultaneous API requests. Recommended between 10 and 50.",
            "default": 30
          },
          "proxyConfiguration": {
            "title": "Proxy Settings",
            "type": "object",
            "description": "Select proxies to use. Swiss (CH) residential proxies are highly recommended to avoid blocks."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}