{
  "openapi": "3.0.1",
  "info": {
    "title": "Immoweb Scraper: Belgian Property Listings, EPC & Agents",
    "description": "Every Immoweb.be listing in Belgium, for sale or rent, as a clean spreadsheet: price, address, GPS, living area, bedrooms, EPC score, cadastral income, photos and agency contacts. Type a postal code or paste a search. For investors, agencies and market research.",
    "version": "0.3",
    "x-build-id": "GJkcyMRxKXw9hMqhW"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/studioxl~immoweb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-studioxl-immoweb-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/studioxl~immoweb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-studioxl-immoweb-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/studioxl~immoweb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-studioxl-immoweb-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": {
          "locations": {
            "title": "Places to search",
            "type": "array",
            "description": "Postal codes (\"9000\", \"1050\"), provinces (\"Antwerp\", \"Liège\", \"West-Vlaanderen\") or larger towns (\"Ghent\", \"Leuven\"). Type \"All\" for the whole of Belgium.",
            "items": {
              "type": "string"
            }
          },
          "startUrls": {
            "title": "Immoweb links",
            "type": "array",
            "description": "Or paste a search or listing link from immoweb.be, in English, French or Dutch. The filters in the link are kept, for example https://www.immoweb.be/en/search/apartment/for-rent/brussels/province",
            "items": {
              "type": "object",
              "required": [
                "url"
              ],
              "properties": {
                "url": {
                  "type": "string",
                  "title": "URL of a web page",
                  "format": "uri"
                }
              }
            }
          },
          "listingType": {
            "title": "For sale or for rent",
            "enum": [
              "forSale",
              "forRent"
            ],
            "type": "string",
            "description": "Used for the places above. A pasted link keeps its own choice.",
            "default": "forSale"
          },
          "propertyType": {
            "title": "Property type",
            "enum": [
              "house-and-apartment",
              "house",
              "apartment",
              "villa",
              "chalet",
              "kot",
              "apartment-block",
              "mixed-use-building",
              "new-real-estate-project-houses",
              "new-real-estate-project-apartments",
              "garage",
              "office",
              "business",
              "industry",
              "land",
              "other"
            ],
            "type": "string",
            "description": "Used for the places above. \"House and apartment\" returns both.",
            "default": "house-and-apartment"
          },
          "maxItems": {
            "title": "Maximum results",
            "minimum": 0,
            "type": "integer",
            "description": "The run stops after this many listings, so this also caps what you pay. Use 0 for no limit.",
            "default": 100
          },
          "scrapeDetails": {
            "title": "Include full listing details",
            "type": "boolean",
            "description": "Adds about 70 fields per listing: EPC energy score, construction year, condition, cadastral income, flood zone, agency phone and email, and every photo. Charged at the full-details price.",
            "default": false
          },
          "minPrice": {
            "title": "Minimum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Total price for sales, monthly rent for rentals. Example: 250000."
          },
          "maxPrice": {
            "title": "Maximum price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Total price for sales, monthly rent for rentals. Example: 450000."
          },
          "minBedrooms": {
            "title": "Minimum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Example: 2."
          },
          "maxBedrooms": {
            "title": "Maximum bedrooms",
            "minimum": 0,
            "type": "integer",
            "description": "Example: 4."
          },
          "minLivingArea": {
            "title": "Minimum living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Habitable surface. Example: 80."
          },
          "maxLivingArea": {
            "title": "Maximum living area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Habitable surface. Example: 200."
          },
          "minLandSurface": {
            "title": "Minimum plot size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Land around a house. Example: 500."
          },
          "maxLandSurface": {
            "title": "Maximum plot size (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Example: 2000."
          },
          "minYearBuilt": {
            "title": "Built in or after",
            "minimum": 0,
            "type": "integer",
            "description": "Earliest construction year. Example: 1990."
          },
          "maxYearBuilt": {
            "title": "Built in or before",
            "minimum": 0,
            "type": "integer",
            "description": "Latest construction year. Example: 2010."
          },
          "minRooms": {
            "title": "Minimum rooms",
            "minimum": 0,
            "type": "integer",
            "description": "All rooms counted. Example: 4."
          },
          "maxRooms": {
            "title": "Maximum rooms",
            "minimum": 0,
            "type": "integer",
            "description": "All rooms counted. Example: 8."
          },
          "minTerraceSurface": {
            "title": "Minimum terrace (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Example: 10."
          },
          "minGardenSurface": {
            "title": "Minimum garden (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Example: 100."
          },
          "minKitchenSurface": {
            "title": "Minimum kitchen (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Example: 12."
          },
          "minParkingPlaces": {
            "title": "Minimum parking places",
            "minimum": 0,
            "type": "integer",
            "description": "Indoor and outdoor together. Example: 1."
          },
          "minFacades": {
            "title": "Minimum facades",
            "minimum": 0,
            "type": "integer",
            "description": "4 facades is a detached house, 3 is semi-detached, 2 is terraced."
          },
          "maxFacades": {
            "title": "Maximum facades",
            "minimum": 0,
            "type": "integer",
            "description": "Example: 2 for terraced houses only."
          },
          "epcScores": {
            "title": "EPC energy labels",
            "type": "array",
            "description": "Keep only these energy labels (EPC in Flanders, PEB in Brussels and Wallonia). A++ is the most efficient, G the least.",
            "items": {
              "type": "string",
              "enum": [
                "A++",
                "A+",
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ],
              "enumTitles": [
                "A++",
                "A+",
                "A",
                "B",
                "C",
                "D",
                "E",
                "F",
                "G"
              ]
            }
          },
          "buildingConditions": {
            "title": "Building condition",
            "type": "array",
            "description": "Keep only listings in these conditions, for example \"To renovate\".",
            "items": {
              "type": "string",
              "enum": [
                "AS_NEW",
                "GOOD",
                "JUST_RENOVATED",
                "TO_BE_DONE_UP",
                "TO_RENOVATE",
                "TO_RESTORE"
              ],
              "enumTitles": [
                "As new",
                "Good",
                "Just renovated",
                "To be done up",
                "To renovate",
                "To restore"
              ]
            }
          },
          "propertySubtypes": {
            "title": "Property sub-types",
            "type": "array",
            "description": "Narrow to specific kinds, for example only penthouses or only villas. Leave empty for all.",
            "items": {
              "type": "string",
              "enum": [
                "VILLA",
                "BUNGALOW",
                "CHALET",
                "CASTLE",
                "FARMHOUSE",
                "COUNTRY_COTTAGE",
                "MANSION",
                "TOWN_HOUSE",
                "EXCEPTIONAL_PROPERTY",
                "APARTMENT_BLOCK",
                "MIXED_USE_BUILDING",
                "GROUND_FLOOR",
                "PENTHOUSE",
                "DUPLEX",
                "TRIPLEX",
                "LOFT",
                "SERVICE_FLAT",
                "KOT"
              ],
              "enumTitles": [
                "Villa",
                "Bungalow",
                "Chalet",
                "Castle",
                "Farmhouse",
                "Country cottage",
                "Mansion",
                "Town house",
                "Exceptional property",
                "Apartment block",
                "Mixed-use building",
                "Ground floor",
                "Penthouse",
                "Duplex",
                "Triplex",
                "Loft",
                "Service flat",
                "Student flat (kot)"
              ]
            }
          },
          "hasTerrace": {
            "title": "Terrace",
            "type": "boolean",
            "description": "Only listings with a terrace.",
            "default": false
          },
          "hasGarden": {
            "title": "Garden",
            "type": "boolean",
            "description": "Only listings with a garden.",
            "default": false
          },
          "hasTerraceOrGarden": {
            "title": "Terrace or garden",
            "type": "boolean",
            "description": "Only listings with at least one of the two.",
            "default": false
          },
          "hasSwimmingPool": {
            "title": "Swimming pool",
            "type": "boolean",
            "description": "Only listings with a swimming pool.",
            "default": false
          },
          "hasFireplace": {
            "title": "Fireplace",
            "type": "boolean",
            "description": "Only listings with a fireplace.",
            "default": false
          },
          "hasLift": {
            "title": "Lift",
            "type": "boolean",
            "description": "Only listings with a lift.",
            "default": false
          },
          "hasDisabledAccess": {
            "title": "Wheelchair accessible",
            "type": "boolean",
            "description": "Only listings marked as accessible.",
            "default": false
          },
          "isImmediatelyAvailable": {
            "title": "Available now",
            "type": "boolean",
            "description": "Only listings you can move into right away.",
            "default": false
          },
          "isFurnished": {
            "title": "Furnished (rentals)",
            "enum": [
              "any",
              "true",
              "false"
            ],
            "type": "string",
            "description": "Only used for rentals. Ignored for sales.",
            "default": "any"
          },
          "isAPublicSale": {
            "title": "Public sales only",
            "type": "boolean",
            "description": "Properties sold at public auction. Ignored for rentals.",
            "default": false
          },
          "isALifeAnnuitySale": {
            "title": "Life annuity sales only",
            "type": "boolean",
            "description": "Life-annuity sales (viager / lijfrente). Ignored for rentals.",
            "default": false
          },
          "isUnderOption": {
            "title": "Under option only",
            "type": "boolean",
            "description": "Properties that already have an option on them. Ignored for rentals.",
            "default": false
          },
          "modifiedWithinDays": {
            "title": "Published or updated within",
            "minimum": 0,
            "maximum": 365,
            "type": "integer",
            "description": "Only listings put online or updated in the last this many days, for example 7. A new listing always counts. Updates include price changes and agencies re-saving a listing. Leave empty for any date. Large searches take longer with this on, because every result is checked."
          },
          "onlyNewSinceLastRun": {
            "title": "Only new or changed listings",
            "type": "boolean",
            "description": "For scheduled runs: return only listings that are new, or whose price or details changed, since the last run. Changed rows name what changed in changedFields. Listings that have left your search come back as free rows marked removed. Unchanged listings are skipped and not charged.",
            "default": false
          },
          "dedupeStoreName": {
            "title": "Feed name",
            "type": "string",
            "description": "Runs with the same name share one memory. Use a different name per feed, for example \"ghent-rentals\".",
            "default": "immoweb-dedupe"
          },
          "maxItemsPerLocation": {
            "title": "Maximum per place",
            "minimum": 0,
            "type": "integer",
            "description": "Cap each place or pasted link separately, so one busy area cannot fill the whole run. Use 0 for no cap.",
            "default": 0
          },
          "mergeDuplicateListings": {
            "title": "Merge duplicate listings",
            "type": "boolean",
            "description": "The same home listed by several agencies comes back as one row, so you pay once. Turn off to get every listing.",
            "default": true
          },
          "expandProjectUnits": {
            "title": "One row per new-build unit",
            "type": "boolean",
            "description": "Needs \"Include full listing details\". Each unit in a new-build project gets its own row with price, size, floor and sale status.",
            "default": false
          },
          "splitLargeSearches": {
            "title": "Get every match on big searches",
            "type": "boolean",
            "description": "Immoweb shows at most about 10,000 results per search. Leave this on to still get every match when your maximum is higher.",
            "default": true
          },
          "proxyConfiguration": {
            "title": "Connection settings",
            "type": "object",
            "description": "Leave as is. The default works on every Apify plan.",
            "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}