{
  "openapi": "3.0.1",
  "info": {
    "title": "Immoweb.be $1💰 Powerful Filters + Deep Search",
    "description": "From $1/1K. Extract property listings from immoweb.be. Get price, location, coordinates, images, and 27 structured fields per listing. Enable detail page fetching for 70+ additional fields, including description, EPC score, building details, energy features, and agent contact.",
    "version": "0.1",
    "x-build-id": "s7Z6Pdw7zeVwPirFZ"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/abotapi~immoweb-scraper/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-abotapi-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/abotapi~immoweb-scraper/runs": {
      "post": {
        "operationId": "runs-sync-abotapi-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/abotapi~immoweb-scraper/run-sync": {
      "post": {
        "operationId": "run-sync-abotapi-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",
        "required": [
          "mode"
        ],
        "properties": {
          "mode": {
            "title": "1. Search mode",
            "enum": [
              "search",
              "url"
            ],
            "type": "string",
            "description": "Search mode = use the filter fields below to build the search query. URL mode = paste any immoweb.be search URL already refined in a browser (recommended for complex filters).",
            "default": "search"
          },
          "transactionType": {
            "title": "Transaction Type (Search mode)",
            "enum": [
              "for-sale",
              "for-rent"
            ],
            "type": "string",
            "description": "Listings to search for. Search mode only.",
            "default": "for-sale"
          },
          "propertyTypes": {
            "title": "Property Types",
            "type": "array",
            "description": "Filter by property type (leave empty for all types)",
            "items": {
              "type": "string",
              "enum": [
                "house",
                "apartment",
                "house-and-apartment",
                "new-real-estate-project-houses",
                "new-real-estate-project-apartments",
                "land",
                "parking",
                "office",
                "industry",
                "business",
                "apartment-block",
                "garage"
              ],
              "enumTitles": [
                "House",
                "Apartment",
                "House or Apartment",
                "New Project — Houses",
                "New Project — Apartments",
                "Land",
                "Parking",
                "Office",
                "Industry",
                "Commercial",
                "Apartment Block",
                "Garage"
              ]
            }
          },
          "postalCodes": {
            "title": "Postal Codes",
            "type": "array",
            "description": "Belgian postal codes to search in (e.g. 1000 for Brussels, 2000 for Antwerp). Leave empty to search all of Belgium.",
            "items": {
              "type": "string",
              "pattern": "^[0-9]{4}$"
            }
          },
          "countries": {
            "title": "Countries",
            "type": "array",
            "description": "Countries to include (Immoweb also lists properties in neighboring regions).",
            "items": {
              "type": "string",
              "enum": [
                "BE",
                "FR",
                "LU",
                "NL",
                "DE"
              ],
              "enumTitles": [
                "Belgium",
                "France",
                "Luxembourg",
                "Netherlands",
                "Germany"
              ]
            },
            "default": [
              "BE"
            ]
          },
          "orderBy": {
            "title": "Sort Order",
            "enum": [
              "relevance",
              "newest",
              "cheapest",
              "most-expensive",
              "postal-code"
            ],
            "type": "string",
            "description": "Sort order for search results (search mode only).",
            "default": "newest"
          },
          "priceMin": {
            "title": "Minimum Price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum property price in EUR."
          },
          "priceMax": {
            "title": "Maximum Price (EUR)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum property price in EUR."
          },
          "bedroomsMin": {
            "title": "Minimum Bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Minimum number of bedrooms."
          },
          "bedroomsMax": {
            "title": "Maximum Bedrooms",
            "minimum": 0,
            "maximum": 20,
            "type": "integer",
            "description": "Maximum number of bedrooms."
          },
          "livingAreaMin": {
            "title": "Minimum Living Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Minimum living area in square meters."
          },
          "livingAreaMax": {
            "title": "Maximum Living Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum living area in square meters."
          },
          "landAreaMin": {
            "title": "Minimum Land Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Only relevant for houses and land listings."
          },
          "landAreaMax": {
            "title": "Maximum Land Area (m²)",
            "minimum": 0,
            "type": "integer",
            "description": "Maximum land area in square meters."
          },
          "constructionYearMin": {
            "title": "Minimum Construction Year",
            "minimum": 1800,
            "maximum": 2100,
            "type": "integer",
            "description": "Filter out buildings older than this year."
          },
          "buildingConditions": {
            "title": "Building Condition",
            "type": "array",
            "description": "Filter by building condition (leave empty for any).",
            "items": {
              "type": "string",
              "enum": [
                "as-new",
                "just-renovated",
                "good",
                "to-be-done-up",
                "to-renovate",
                "to-restore"
              ],
              "enumTitles": [
                "As new",
                "Just renovated",
                "Good",
                "To be done up",
                "To renovate",
                "To restore"
              ]
            }
          },
          "epcGradeMax": {
            "title": "Maximum EPC Grade",
            "enum": [
              "A++",
              "A+",
              "A",
              "B",
              "C",
              "D",
              "E",
              "F",
              "G"
            ],
            "type": "string",
            "description": "Only include listings with an energy rating at or better than this grade (A++ is best)."
          },
          "hasGarden": {
            "title": "Has Garden",
            "type": "boolean",
            "description": "Only include listings with a garden.",
            "default": false
          },
          "hasTerrace": {
            "title": "Has Terrace",
            "type": "boolean",
            "description": "Only include listings with a terrace.",
            "default": false
          },
          "hasSwimmingPool": {
            "title": "Has Swimming Pool",
            "type": "boolean",
            "description": "Only include listings with a swimming pool.",
            "default": false
          },
          "newBuildsOnly": {
            "title": "New Builds Only",
            "type": "boolean",
            "description": "Only include new-build projects.",
            "default": false
          },
          "urls": {
            "title": "Search URLs (URL mode)",
            "type": "array",
            "description": "Immoweb search result page URLs. The ?page=N query param sets the starting page; pagination then walks forward up to Maximum Pages per URL. Tip: open immoweb.be in your browser, apply filters, then paste the resulting URL here. In URL mode, all the search-mode filter fields above are ignored.",
            "items": {
              "type": "string"
            }
          },
          "fetchDetails": {
            "title": "Fetch Detail Pages (applies to both modes)",
            "type": "boolean",
            "description": "Fetch each listing's detail page for 70+ extra attributes: description, EPC score, building details, energy features, agent contact, amenities, view count, etc. Applies regardless of search mode.",
            "default": false
          },
          "maxItems": {
            "title": "Maximum Listings",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after scraping this many listings (0 = unlimited).",
            "default": 20
          },
          "maxPagesPerUrl": {
            "title": "Maximum Pages per URL",
            "minimum": 0,
            "type": "integer",
            "description": "Optional safety limit on how many search result pages to walk forward per URL (~30 listings each). Leave empty to walk every result page — 'Maximum Listings' above is the real hard cap; the walk also stops on its own once the site's reported total is reached or a page returns no new listings."
          },
          "resumeFromRunId": {
            "title": "Resume from a previous run (delta)",
            "type": "string",
            "description": "Optional. ID of a previous run of this actor (or a dataset ID) to continue ONE interrupted crawl. Listings already in that dataset are skipped, so this run returns only NEW listings (a delta). Combine both runs' datasets for the full set. For a search you run on a RECURRING schedule, use Incremental mode below instead — it remembers state itself so you don't paste an id every time."
          },
          "incrementalMode": {
            "title": "Incremental mode (recurring monitoring)",
            "type": "boolean",
            "description": "For a search you run repeatedly on a schedule. When ON, the actor remembers the previous run of the SAME search itself (see Resume above instead for a one-off continuation by id) and adds changeType (NEW/UPDATED/REAPPEARED/EXPIRED/UNCHANGED) + changedFields/firstSeenAt/lastSeenAt to every listing. UNCHANGED listings are neither pushed nor billed unless 'Emit unchanged listings' is on. Off by default — existing schedules and output are unaffected.",
            "default": false
          },
          "stateKey": {
            "title": "State key (optional, Incremental mode only)",
            "type": "string",
            "description": "Only used when Incremental mode is on. Name this monitoring campaign so its baseline is tracked separately from any other search. Leave empty to auto-derive a key from your search filters or URLs — two differently-filtered searches never share a baseline either way."
          },
          "emitUnchanged": {
            "title": "Emit unchanged listings (Incremental mode only)",
            "type": "boolean",
            "description": "Only used when Incremental mode is on. When ON, listings with no change since the last run are still pushed to the dataset (changeType=UNCHANGED) and billed like any other row. Off by default, so a recurring run returns and bills only what actually changed.",
            "default": false
          },
          "emitExpired": {
            "title": "Emit expired listings (Incremental mode only)",
            "type": "boolean",
            "description": "Only used when Incremental mode is on. When ON, and this run scans the tracked search to completion, listings that were previously tracked but no longer appear are pushed once with changeType=EXPIRED (and billed). Off by default. Never fires on a capped, resumed, or otherwise partial run.",
            "default": false
          },
          "proxyConfiguration": {
            "title": "Proxy configuration",
            "type": "object",
            "description": "Requires Apify residential proxy access ($8/GB). Add residential proxy credit to your account to use this actor.",
            "default": {
              "useApifyProxy": true,
              "apifyProxyGroups": []
            }
          },
          "mcpConnectors": {
            "title": "Pipe results into your apps (optional)",
            "type": "array",
            "description": "Optionally send the scraped results into the apps you already use, via Model Context Protocol (MCP) connectors. Authorize a connector once under Apify → Settings → Integrations, then select it here. The connector receives a condensed, human-readable summary per item (title + key fields), not the full JSON — the complete record stays in the dataset. Leave empty to skip. Supported: Notion (https://mcp.notion.com/mcp), Linear (https://mcp.linear.app/sse), Airtable (https://mcp.airtable.com/mcp), Apify (https://mcp.apify.com)."
          },
          "notionParentPageUrl": {
            "title": "Notion parent page (Notion connector only)",
            "type": "string",
            "description": "URL (or id) of the Notion page under which item pages are created. Required to enable the Notion export; ignored by other connectors."
          },
          "maxNotifyListings": {
            "title": "Max items to export per connector",
            "minimum": 1,
            "maximum": 1000,
            "type": "integer",
            "description": "Cap on items written to each connector per run. Does not affect the dataset.",
            "default": 50
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}