# Immoweb.be Scraper with Contacts | Fast & Reliable (`fatihtahta/immoweb-be-scraper`) Actor

Extract unlimited Immoweb.be property listings across Belgium with rich property detail, agency contacts, EPC data, media, pricing, and flexible market filters. Built for enterprise-grade Belgian real estate intelligence, lead enrichment, and automated analytics pipelines.

- **URL**: https://apify.com/fatihtahta/immoweb-be-scraper.md
- **Developed by:** [Fatih Tahta](https://apify.com/fatihtahta) (community)
- **Categories:** Real estate, Lead generation, Agents
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.70 / 1,000 property listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Immoweb.be Scraper

**Slug:** `fatihtahta/immoweb-be-scraper`

### Overview

Immoweb.be Scraper collects structured Belgian real estate listing data, including property identity, pricing, location, building attributes, transaction details, media, contacts, publication metadata, and source context. [Immoweb.be](https://www.immoweb.be) is a major Belgian property marketplace, making its public listing data useful for market research, investment analysis, rental monitoring, and property intelligence workflows. The actor turns repeatable search criteria into normalized JSON records that can be exported, scheduled, and connected to downstream systems. It is designed for operationally consistent recurring data acquisition, helping teams validate, monitor, and refresh property datasets without relying on manual collection. Results reflect the public information available at run time and can vary based on listing availability, filters, and source data completeness.

### Why Use This Actor

- **Market research and analytics teams:** collect structured extraction results for pricing analysis, supply tracking, geographic comparisons, and operational reporting.
- **Product and content teams:** enrich internal property experiences with normalized listing attributes, images, locations, and public availability signals.
- **Developers and data engineering teams:** feed repeatable collection jobs into downstream systems, warehouses, dashboards, and dataset normalization workflows.
- **Lead generation and enrichment teams:** build property, agency, and listing datasets for qualification, CRM enrichment, and market intelligence.
- **Monitoring and competitive tracking teams:** schedule recurring data acquisition to track new listings, price movement, availability, and category-level changes.

### Common Use Cases

- **Market intelligence:** monitor supply, pricing, availability, property categories, bedroom counts, EPC labels, and geographic distribution.
- **Lead generation:** build targeted prospect lists from public property listings and agency contact information when available.
- **Competitive monitoring:** track listing movement, new inventory, pricing changes, and market positioning across Belgian real estate segments.
- **Catalog and directory building:** populate internal property databases with structured public records, media, address data, and transaction attributes.
- **Data enrichment:** add current public listing attributes to CRM, BI, underwriting, portfolio, or analytics datasets.
- **Recurring reporting:** schedule periodic runs for dashboards, alerts, and trend analysis across selected locations or property types.

### Quick Start

1. Choose a `deal_type` such as `buy` or `rent`, then select a `property_type` that matches the inventory you want to collect.
2. Add a Belgian `location` when you need a focused market, or leave it empty for Belgium-wide discovery.
3. Set a small `limit`, such as `25`, for the first validation run.
4. Run the actor in Apify Console and wait for the dataset to be created.
5. Inspect the first records to confirm that fields such as `pricing`, `location`, `property`, and `source_context` match your workflow.
6. Increase the `limit`, add filters, adjust `enrich_data`, or schedule recurring runs once the output is verified.

### Input Parameters

Configure sale or rental listing collection by deal type, property category, optional Belgian location, filters, sorting, enrichment, and result limit.

| Parameter | Type | Description | Default |
| --- | --- | --- | --- |
| `deal_type` | string | Listing mode to collect. Allowed values: `buy`, `rent`. | `buy` |
| `property_type` | string | Property category to collect. Allowed values: `house`, `apartment`, `house_and_apartment`, `kot`, `garage`, `office`, `business`, `industry`, `land`, `other`. | `house_and_apartment` |
| `location` | string | Belgian city, postal code, district, province, neighborhood, or market. Leave empty for a national search. | - |
| `min_price` | integer | Minimum listing price in EUR. For rental searches, this applies to rental price; for sale searches, it applies to purchase price. | - |
| `max_price` | integer | Maximum listing price in EUR. Leave empty when you do not want an upper price cap. | - |
| `min_building_year` | integer | Earliest construction year to include. | - |
| `max_building_year` | integer | Latest construction year to include. | - |
| `immediately_available` | boolean | When `true`, only includes listings marked as immediately available. | `false` |
| `min_area` | integer | Minimum living area in square meters. | - |
| `max_area` | integer | Maximum living area in square meters. | - |
| `min_bedroom` | integer | Minimum number of bedrooms. | - |
| `max_bedroom` | integer | Maximum number of bedrooms. | - |
| `min_parking` | integer | Minimum number of parking spaces required. | - |
| `3d_tour` | boolean | When `true`, only includes listings with a virtual visit or 360-degree tour where available. | `false` |
| `epc_label` | array of strings | EPC energy labels to include. Allowed values: `A++`, `A+`, `A`, `B`, `C`, `D`, `E`, `F`, `G`, `X`. Leave empty to include all available labels. | - |
| `sort_by` | string | Result order. Allowed values: `relevance`, `cheapest`, `most_expensive`, `postal_code`, `newest`. | `relevance` |
| `enrich_data` | boolean | When `true`, collects richer property listing details, such as full descriptions, all photos, detailed features, agent contacts, and more. | `true` |
| `maximize_coverage` | boolean | When `true`, keeps collecting within the selected criteria when a broad search may exceed Immoweb's visible-result limit. | `true` |
| `limit` | integer | Maximum number of listings to save. Minimum value: `1`. Leave empty to collect as many matching listings as are available. | - |

### Choosing Inputs

Use `deal_type` and `property_type` to define the core market segment before adding optional filters. A specific `location` is best for city, postal-code, district, province, neighborhood, or local market reporting; leaving it empty is better for broad Belgium-wide discovery. Narrower filters such as price, bedroom count, living area, construction year, immediate availability, parking, 3D tour, and EPC labels produce more targeted datasets, while broader inputs improve discovery. Use `maximize_coverage` for very broad searches where Immoweb reports more matching listings than are usually visible at once. Use `sort_by` to prioritize the collection order, for example `newest` for monitoring or `cheapest` for affordability analysis. Start with a small `limit` to validate the output shape, then increase it after confirming that the results match your intended scope.

### Example Inputs

#### Broad discovery with a conservative limit

```json
{
  "deal_type": "buy",
  "property_type": "house_and_apartment",
  "sort_by": "relevance",
  "enrich_data": false,
  "limit": 25
}
````

#### Brussels rental monitoring

```json
{
  "deal_type": "rent",
  "property_type": "apartment",
  "location": "Brussels",
  "max_price": 1800,
  "min_bedroom": 1,
  "sort_by": "newest",
  "limit": 50
}
```

#### Targeted sale search with energy and size filters

```json
{
  "deal_type": "buy",
  "property_type": "house",
  "location": "Antwerp",
  "min_area": 120,
  "min_bedroom": 3,
  "epc_label": ["A", "B", "C"],
  "enrich_data": true,
  "limit": 100
}
```

### Output

#### Output destination

The actor writes results to an Apify dataset as JSON records. The dataset is designed for direct consumption by analytics tools, ETL pipelines, and downstream APIs with minimal post-processing.

The example output below documents the listing record shape produced by this actor. If future runs contain multiple entity types or record shapes, each shape should be documented separately based on representative output records.

#### Record envelope and stable identifiers

Each dataset item represents one Immoweb property listing. The strongest recommended idempotency key is `id`, which matches `identifiers.listing_id` in the example output; `source_context.canonical_url` and `source_context.fingerprint` are useful fallback or audit keys when syncing records over time.

Use the recommended idempotency key for deduplication and upserts when loading results into warehouses, CRMs, search indexes, or internal databases. Stable identifiers make records easier to merge, deduplicate, and sync across repeated runs without creating duplicate listings.

The `source_context` object documents where the record came from, including `source_url`, `canonical_url`, `fingerprint`, search context, and applied filters when available.

#### Examples

##### Example: listing record

```json
{
  "id": 21990001,
  "url": "https://www.immoweb.be/en/classified/apartment/for-sale/bruxelles/1000/21990001",
  "title": "BRUSSELS CENTRE - Bright 3-bedroom triplex with indoor parking",
  "description": "Renovated triplex | Rue des Jardins, central Brussels | This fully renovated triplex of ±198 m² offers a bright living area, three bedrooms, two bathrooms, a multipurpose room, and an outdoor terrace with open city views. 1st level - Living space (± 75 m²) · Reception room ± 45 m² · Kitchen ± 15 m² · Entrance hall ± 13 m² · Guest WC ± 2 m² 2nd level - Sleeping & comfort (± 84 m²) · Master bedroom ± 33 m² + en-suite bathroom ± 9 m² · Bedroom 2 ± 15 m² · Bedroom 3 ± 10 m² · Shower room ± 5 m² · Night hall ± 11 m² 3rd level - Terrace & flexibility (± 54 m²) · Multipurpose room ± 32 m² · Utility room ± 10 m² · Outdoor terrace ± 12 m² Key features Full renovation - high-end finishes Private cellar Underground parking (mandatory option): €50,000 EPC: D Immediate surroundings: shops, restaurants, schools, and public transport Interested? Click on \"Book a viewing\" to select a time slot online. Example Realty Brussels | brussels-office@example.com | +3225550199",
  "property_type": "APARTMENT",
  "property_subtype": "TRIPLEX",
  "transaction_type": "FOR_SALE",
  "pricing": {
    "price": 725000,
    "display_price": "€725,000",
    "short_display_price": "€725K",
    "accessibility_price": "725000€",
    "label": "Price",
    "currency": "EUR",
    "type": "residential_sale",
    "details": {
      "type": "residential_sale",
      "main_value": 725000,
      "main_display_price": "€725,000",
      "html_display_price": "€725,000",
      "short_display_price": "€725K",
      "accessibility_price": "725000€",
      "label": "Price",
      "language": "en"
    }
  },
  "location": {
    "country": "Belgium",
    "region": "Brussels",
    "province": "Brussels",
    "district": "Brussels",
    "locality": "Bruxelles",
    "postal_code": "1000",
    "street": "Rue des Jardins",
    "number": "12",
    "floor": 2,
    "latitude": 50.8466,
    "longitude": 4.3528,
    "region_code": "BRUSSELS",
    "type": "URBAN",
    "place_name": "Bruxelles"
  },
  "property": {
    "type": "APARTMENT",
    "subtype": "TRIPLEX",
    "bedroom_count": 3,
    "bedrooms": [
      {
        "surface": 15
      },
      {
        "surface": 10
      }
    ],
    "bathroom_count": 2,
    "net_habitable_surface": 198,
    "room_count": 14,
    "basement": {
      "surface": 2
    },
    "has_basement": true,
    "building": {
      "condition": "AS_NEW",
      "construction_year": 1847,
      "facade_count": 2,
      "floor_count": 3
    },
    "property_certificates": {
      "has_electrical_installation_compliance_certificate": false
    },
    "has_disabled_access": false,
    "has_lift": true,
    "construction_permit": {
      "flood_zone_type": "NON_FLOOD_ZONE",
      "has_possible_priority_purchase_right": false
    },
    "energy": {
      "heating_type": "GAS",
      "has_double_glazing": true
    },
    "kitchen": {
      "surface": 14,
      "type": "HYPER_EQUIPPED"
    },
    "has_laundry_room": true,
    "living_room": {
      "surface": 45
    },
    "has_living_room": true,
    "has_armored_door": true,
    "has_cable_tv": true,
    "shower_room_count": 1,
    "toilet_count": 2,
    "has_swimming_pool": false,
    "alternative_descriptions": {
      "fr": "Triplex rénové | Rue des Jardins, centre de Bruxelles | Ce triplex entièrement rénové de ±198 m² comprend un séjour lumineux, trois chambres, deux salles d'eau, un espace polyvalent et une terrasse extérieure. Points clés: rénovation complète, cave privative, parking souterrain en option obligatoire à €50,000, PEB D, commerces et transports à proximité. Example Realty Brussels | brussels-office@example.com | +3225550199",
      "nl": "Gerenoveerde triplex | Rue des Jardins, centrum Brussel | Deze volledig gerenoveerde triplex van ±198 m² omvat een lichte leefruimte, drie slaapkamers, twee badkamers, een polyvalente ruimte en een buitenterras. Troeven: volledige renovatie, privatieve kelder, ondergrondse parking als verplichte optie voor €50,000, EPC D, winkels en openbaar vervoer in de buurt. Example Realty Brussels | brussels-office@example.com | +3225550199"
    },
    "fireplace_exists": false,
    "has_terrace": true,
    "terrace_surface": 12,
    "terrace_orientation": "WEST"
  },
  "transaction": {
    "type": "FOR_SALE",
    "subtype": "BUY_REGULAR",
    "availability_date": "2026-02-05",
    "certificates": {
      "carbon_emission": 38,
      "primary_energy_consumption_per_sqm": 196,
      "primary_energy_consumption_yearly": 36698,
      "epc_reference": "20260101-0000000000-01-1",
      "epc_score": "D",
      "epc_url": "https://media.immowebstatic.be/epc/en/pics/bxlD3.gif"
    },
    "sale": {
      "price": 725000,
      "is_subject_to_vat": false,
      "has_starting_price": true
    },
    "investor": {
      "is_investment_property": false
    }
  },
  "media": {
    "primary_image_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/259327371e947e1f105f4583a95871f2.jpg",
    "image_urls": [
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/259327371e947e1f105f4583a95871f2.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/ba6c550bd7cb60dbc62cb9b6f7a8dc47.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/da2ee567535fdd6437e2b6b3a020703e.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/e7ec423324f67c99d2967678ec1c1104.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/63bba1cf786a6e8913698970667b23c4.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/323b26d6d64bb7f618937db063a70729.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/2cb952c40d0c6bad4deac75958a4331f.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/f71baae90314cf165a9c8546c3b60507.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/b45b243a609e50e9960d1edb1ed0944f.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/434300e419bb38f12e8672c2c4fe7f36.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/a302df403a276d49c6c7a778b66b1111.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/f63730115f9b429bb9194e70c1b740a9.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/046ac86d17c9410f94a1c533d22e5c3d.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/762ce7c4aeb582003a6183919bcdec67.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/2202e148092531a3ae67792f340a58f3.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/4be55a482978fc82f9bed96fc73d1318.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/a4786e74ac2fc9ccaa4c0eabb9e52f8b.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/4280820bdd672e143b78a1494c1c55de.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/9c5e35c4be0fa16afbf680939a6d320e.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/9e5d8041be419628869f25f77d2fecaa.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/94a10aea47907d6b9a0b2d4edc41b4aa.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/96732039852cfc400f180491472bf2ea.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/a779a75821a462206815bd1063f3792c.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/45f2191b6caaf95eea0d560c5c5c25a6.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/1cebc9ceeacc1ecaaab88ccc495a6108.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/f1f38a9ad0d4fcd1b283825796767632.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/1b2b51bf3019a3c928b2707e642f0f67.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/c1b4e6c61093f417c33e2ef6dee1e4e2.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/55d313c2cc7a9f7c789433718f8b0ef0.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/efe8224633aed61cbc207f86d5568711.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/259327371e947e1f105f4583a95871f2.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/ba6c550bd7cb60dbc62cb9b6f7a8dc47.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/da2ee567535fdd6437e2b6b3a020703e.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/e7ec423324f67c99d2967678ec1c1104.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/63bba1cf786a6e8913698970667b23c4.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/323b26d6d64bb7f618937db063a70729.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/2cb952c40d0c6bad4deac75958a4331f.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/f71baae90314cf165a9c8546c3b60507.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/b45b243a609e50e9960d1edb1ed0944f.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/434300e419bb38f12e8672c2c4fe7f36.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/a302df403a276d49c6c7a778b66b1111.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/f63730115f9b429bb9194e70c1b740a9.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/046ac86d17c9410f94a1c533d22e5c3d.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/762ce7c4aeb582003a6183919bcdec67.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/2202e148092531a3ae67792f340a58f3.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/4be55a482978fc82f9bed96fc73d1318.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/a4786e74ac2fc9ccaa4c0eabb9e52f8b.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/4280820bdd672e143b78a1494c1c55de.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/9c5e35c4be0fa16afbf680939a6d320e.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/9e5d8041be419628869f25f77d2fecaa.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/94a10aea47907d6b9a0b2d4edc41b4aa.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/96732039852cfc400f180491472bf2ea.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/a779a75821a462206815bd1063f3792c.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/45f2191b6caaf95eea0d560c5c5c25a6.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/1cebc9ceeacc1ecaaab88ccc495a6108.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/f1f38a9ad0d4fcd1b283825796767632.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/1b2b51bf3019a3c928b2707e642f0f67.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/c1b4e6c61093f417c33e2ef6dee1e4e2.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/55d313c2cc7a9f7c789433718f8b0ef0.jpg",
      "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/efe8224633aed61cbc207f86d5568711.jpg"
    ],
    "pictures": [
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/259327371e947e1f105f4583a95871f2.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/259327371e947e1f105f4583a95871f2.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/259327371e947e1f105f4583a95871f2.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/259327371e947e1f105f4583a95871f2.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/ba6c550bd7cb60dbc62cb9b6f7a8dc47.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/ba6c550bd7cb60dbc62cb9b6f7a8dc47.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/ba6c550bd7cb60dbc62cb9b6f7a8dc47.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/ba6c550bd7cb60dbc62cb9b6f7a8dc47.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/da2ee567535fdd6437e2b6b3a020703e.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/da2ee567535fdd6437e2b6b3a020703e.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/da2ee567535fdd6437e2b6b3a020703e.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/da2ee567535fdd6437e2b6b3a020703e.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/e7ec423324f67c99d2967678ec1c1104.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/e7ec423324f67c99d2967678ec1c1104.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/e7ec423324f67c99d2967678ec1c1104.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/e7ec423324f67c99d2967678ec1c1104.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/63bba1cf786a6e8913698970667b23c4.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/63bba1cf786a6e8913698970667b23c4.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/63bba1cf786a6e8913698970667b23c4.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/63bba1cf786a6e8913698970667b23c4.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/323b26d6d64bb7f618937db063a70729.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/323b26d6d64bb7f618937db063a70729.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/323b26d6d64bb7f618937db063a70729.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/323b26d6d64bb7f618937db063a70729.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/2cb952c40d0c6bad4deac75958a4331f.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/2cb952c40d0c6bad4deac75958a4331f.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/2cb952c40d0c6bad4deac75958a4331f.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/2cb952c40d0c6bad4deac75958a4331f.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/f71baae90314cf165a9c8546c3b60507.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/f71baae90314cf165a9c8546c3b60507.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/f71baae90314cf165a9c8546c3b60507.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/f71baae90314cf165a9c8546c3b60507.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/b45b243a609e50e9960d1edb1ed0944f.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/b45b243a609e50e9960d1edb1ed0944f.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/b45b243a609e50e9960d1edb1ed0944f.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/b45b243a609e50e9960d1edb1ed0944f.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/434300e419bb38f12e8672c2c4fe7f36.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/434300e419bb38f12e8672c2c4fe7f36.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/434300e419bb38f12e8672c2c4fe7f36.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/434300e419bb38f12e8672c2c4fe7f36.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/a302df403a276d49c6c7a778b66b1111.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/a302df403a276d49c6c7a778b66b1111.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/a302df403a276d49c6c7a778b66b1111.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/a302df403a276d49c6c7a778b66b1111.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/f63730115f9b429bb9194e70c1b740a9.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/f63730115f9b429bb9194e70c1b740a9.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/f63730115f9b429bb9194e70c1b740a9.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/f63730115f9b429bb9194e70c1b740a9.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/046ac86d17c9410f94a1c533d22e5c3d.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/046ac86d17c9410f94a1c533d22e5c3d.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/046ac86d17c9410f94a1c533d22e5c3d.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/046ac86d17c9410f94a1c533d22e5c3d.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/762ce7c4aeb582003a6183919bcdec67.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/762ce7c4aeb582003a6183919bcdec67.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/762ce7c4aeb582003a6183919bcdec67.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/762ce7c4aeb582003a6183919bcdec67.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/2202e148092531a3ae67792f340a58f3.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/2202e148092531a3ae67792f340a58f3.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/2202e148092531a3ae67792f340a58f3.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/2202e148092531a3ae67792f340a58f3.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/4be55a482978fc82f9bed96fc73d1318.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/4be55a482978fc82f9bed96fc73d1318.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/4be55a482978fc82f9bed96fc73d1318.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/4be55a482978fc82f9bed96fc73d1318.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/a4786e74ac2fc9ccaa4c0eabb9e52f8b.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/a4786e74ac2fc9ccaa4c0eabb9e52f8b.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/a4786e74ac2fc9ccaa4c0eabb9e52f8b.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/a4786e74ac2fc9ccaa4c0eabb9e52f8b.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/4280820bdd672e143b78a1494c1c55de.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/4280820bdd672e143b78a1494c1c55de.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/4280820bdd672e143b78a1494c1c55de.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/4280820bdd672e143b78a1494c1c55de.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/9c5e35c4be0fa16afbf680939a6d320e.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/9c5e35c4be0fa16afbf680939a6d320e.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/9c5e35c4be0fa16afbf680939a6d320e.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/9c5e35c4be0fa16afbf680939a6d320e.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/9e5d8041be419628869f25f77d2fecaa.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/9e5d8041be419628869f25f77d2fecaa.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/9e5d8041be419628869f25f77d2fecaa.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/9e5d8041be419628869f25f77d2fecaa.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/94a10aea47907d6b9a0b2d4edc41b4aa.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/94a10aea47907d6b9a0b2d4edc41b4aa.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/94a10aea47907d6b9a0b2d4edc41b4aa.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/94a10aea47907d6b9a0b2d4edc41b4aa.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/96732039852cfc400f180491472bf2ea.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/96732039852cfc400f180491472bf2ea.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/96732039852cfc400f180491472bf2ea.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/96732039852cfc400f180491472bf2ea.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/a779a75821a462206815bd1063f3792c.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/a779a75821a462206815bd1063f3792c.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/a779a75821a462206815bd1063f3792c.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/a779a75821a462206815bd1063f3792c.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/45f2191b6caaf95eea0d560c5c5c25a6.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/45f2191b6caaf95eea0d560c5c5c25a6.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/45f2191b6caaf95eea0d560c5c5c25a6.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/45f2191b6caaf95eea0d560c5c5c25a6.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/1cebc9ceeacc1ecaaab88ccc495a6108.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/1cebc9ceeacc1ecaaab88ccc495a6108.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/1cebc9ceeacc1ecaaab88ccc495a6108.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/1cebc9ceeacc1ecaaab88ccc495a6108.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/f1f38a9ad0d4fcd1b283825796767632.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/f1f38a9ad0d4fcd1b283825796767632.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/f1f38a9ad0d4fcd1b283825796767632.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/f1f38a9ad0d4fcd1b283825796767632.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/1b2b51bf3019a3c928b2707e642f0f67.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/1b2b51bf3019a3c928b2707e642f0f67.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/1b2b51bf3019a3c928b2707e642f0f67.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/1b2b51bf3019a3c928b2707e642f0f67.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/c1b4e6c61093f417c33e2ef6dee1e4e2.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/c1b4e6c61093f417c33e2ef6dee1e4e2.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/c1b4e6c61093f417c33e2ef6dee1e4e2.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/c1b4e6c61093f417c33e2ef6dee1e4e2.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/55d313c2cc7a9f7c789433718f8b0ef0.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/55d313c2cc7a9f7c789433718f8b0ef0.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/55d313c2cc7a9f7c789433718f8b0ef0.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/55d313c2cc7a9f7c789433718f8b0ef0.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/100x100/efe8224633aed61cbc207f86d5568711.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/300x300/efe8224633aed61cbc207f86d5568711.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/736x736/efe8224633aed61cbc207f86d5568711.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/demo-listing-media-0001/2560x1440/efe8224633aed61cbc207f86d5568711.jpg",
        "is_vertical": false
      }
    ],
    "virtual_experience_url": "https://www.youtube.com/shorts/exampleTour001",
    "has_virtual_tour": true,
    "specifications": [
      "https://media.immowebstatic.be/classifieds/demo-listing-media-0001/specifications/demo-document-en-0001.pdf",
      "https://media.immowebstatic.be/classifieds/demo-listing-media-0001/specifications/demo-document-nl-0001.pdf",
      "https://media.immowebstatic.be/classifieds/demo-listing-media-0001/specifications/demo-document-fr-0001.pdf"
    ],
    "documents": {
      "demo-document-en-0001": {
        "original_name": "property-brochure-example-en-BE.pdf",
        "id": "demo-document-en-0001",
        "type": "specifications",
        "url": "https://media.immowebstatic.be/classifieds/demo-listing-media-0001/specifications/demo-document-en-0001.pdf"
      },
      "demo-document-nl-0001": {
        "original_name": "property-brochure-example-nl-BE.pdf",
        "id": "demo-document-nl-0001",
        "type": "specifications",
        "url": "https://media.immowebstatic.be/classifieds/demo-listing-media-0001/specifications/demo-document-nl-0001.pdf"
      },
      "demo-document-fr-0001": {
        "original_name": "property-brochure-example-fr-BE.pdf",
        "id": "demo-document-fr-0001",
        "type": "specifications",
        "url": "https://media.immowebstatic.be/classifieds/demo-listing-media-0001/specifications/demo-document-fr-0001.pdf"
      }
    }
  },
  "contacts": {
    "agency_name": "Example Realty Brussels",
    "customers": [
      {
        "id": 90000001,
        "type": "AGENCY",
        "email": "brussels-office@example.com",
        "logo_url": "https://media.immowebstatic.be/customers/demo-agency-logo/logo/demoagencylogo000000000000000000000.jpg",
        "phone_number": "+3225550199",
        "name": "Example Realty Brussels",
        "website": "https://example.com/agencies/brussels",
        "location": {
          "country": "Belgium",
          "province": "Brussels",
          "district": "Brussels",
          "locality": "Bruxelles",
          "postal_code": "1000",
          "street": "25 Avenue Louise",
          "latitude": 50.8347,
          "longitude": 4.3564
        },
        "ipi_no": "500000",
        "is_owner": true,
        "features": {
          "page404": true,
          "investor_flag": false,
          "related_classifieds": true,
          "leaflets_cta": false,
          "lead_qualification": true,
          "recommendation": true
        }
      }
    ]
  },
  "publication": {
    "creation_date": "2026-05-19T14:26:28.875Z",
    "visualisation_option": "XL",
    "last_modification_date": "2026-05-19T14:26:33.133Z",
    "detailed_page_visibility": "CLASSIC"
  },
  "flags": {
    "main": "new",
    "is_public_sale": false,
    "is_new_classified": true,
    "is_new_price": false,
    "is_investment_project": false,
    "is_newly_built": false,
    "is_life_annuity_sale": false,
    "is_sold_or_rented": false,
    "is_new_real_estate_project": false,
    "is_under_option": false
  },
  "metrics": {
    "bookmark_count": 2,
    "view_count": 149
  },
  "identifiers": {
    "listing_id": 21990001,
    "external_reference": "BE-DEMO-1042"
  },
  "attributes": {
    "has_sections": {
      "has_general_section": true,
      "has_interior_section": true,
      "has_exterior_section": true,
      "has_facilities_section": true,
      "has_energy_section": true,
      "has_planning_section": true,
      "has_financial_section": true,
      "has_public_sale_section": false
    },
    "visual_context": {
      "has_virtual_staging": false
    }
  },
  "source_context": {
    "source_url": "https://www.immoweb.be/en/search-results/house-and-apartment/for-sale/brussels-city/1000?countries=BE&orderBy=relevance&page=1",
    "canonical_url": "https://www.immoweb.be/en/classified/apartment/for-sale/bruxelles/1000/21990001",
    "fingerprint": "demo-fingerprint-0001",
    "seed_id": "demo-seed-0001",
    "seed_type": "search",
    "location_query": "brussels city",
    "page_index": 1,
    "domain": "www.immoweb.be",
    "search_filters": {
      "deal_type": "buy",
      "property_type": "house_and_apartment",
      "immediately_available": false,
      "sort_by": "relevance",
      "has_3d_tour": false
    }
  }
}
```

### Field Reference

#### Listing record

**id** *(integer, required)*: Stable Immoweb listing identifier.

**url** *(string, required)*: Public listing URL.

**title** *(string, optional)*: Listing title.

**description** *(string, optional)*: Public listing description.

**property\_type** *(string, optional)*: High-level property type, such as `APARTMENT`.

**property\_subtype** *(string, optional)*: More specific property subtype, such as `TRIPLEX`.

**transaction\_type** *(string, optional)*: Transaction category, such as `FOR_SALE`.

**pricing.price / pricing.currency** *(integer/string, optional)*: Numeric price and ISO currency code.

**pricing.display\_price / pricing.short\_display\_price / pricing.accessibility\_price** *(string, optional)*: Display-ready price variants.

**pricing.label** *(string, optional)*: Price label.

**pricing.type** *(string, optional)*: Price classification.

**pricing.details.type** *(string, optional)*: Detailed price classification.

**pricing.details.main\_value** *(integer, optional)*: Main numeric price value.

**pricing.details.main\_display\_price / pricing.details.html\_display\_price / pricing.details.short\_display\_price / pricing.details.accessibility\_price** *(string, optional)*: Detailed display price variants.

**pricing.details.label / pricing.details.language** *(string, optional)*: Price label and language metadata.

**location.country / location.region / location.province / location.district / location.locality** *(string, optional)*: Geographic administrative fields.

**location.postal\_code** *(string, optional)*: Belgian postal code.

**location.street / location.number / location.floor** *(string/integer, optional)*: Address and floor details when available.

**location.latitude / location.longitude** *(number, optional)*: Geographic coordinates.

**location.region\_code / location.type / location.place\_name** *(string, optional)*: Additional location classification fields.

**property.type / property.subtype** *(string, optional)*: Property type and subtype.

**property.bedroom\_count / property.bathroom\_count / property.room\_count** *(integer, optional)*: Room and bedroom counts.

**property.bedrooms\[].surface** *(integer, optional)*: Bedroom surface in square meters when supplied.

**property.net\_habitable\_surface** *(integer, optional)*: Net habitable surface in square meters.

**property.basement.surface / property.has\_basement** *(integer/boolean, optional)*: Basement area and availability.

**property.building.condition** *(string, optional)*: Building condition.

**property.building.construction\_year** *(integer, optional)*: Construction year.

**property.building.facade\_count / property.building.floor\_count** *(integer, optional)*: Facade and floor counts.

**property.property\_certificates.has\_electrical\_installation\_compliance\_certificate** *(boolean, optional)*: Electrical certificate availability.

**property.has\_disabled\_access / property.has\_lift** *(boolean, optional)*: Accessibility and lift indicators.

**property.construction\_permit.flood\_zone\_type** *(string, optional)*: Flood-zone classification.

**property.construction\_permit.has\_possible\_priority\_purchase\_right** *(boolean, optional)*: Priority purchase right indicator.

**property.energy.heating\_type / property.energy.has\_double\_glazing** *(string/boolean, optional)*: Energy-related property attributes.

**property.kitchen.surface / property.kitchen.type** *(integer/string, optional)*: Kitchen size and equipment type.

**property.has\_laundry\_room / property.has\_living\_room / property.has\_armored\_door / property.has\_cable\_tv** *(boolean, optional)*: Interior and facility indicators.

**property.living\_room.surface** *(integer, optional)*: Living room surface in square meters.

**property.shower\_room\_count / property.toilet\_count** *(integer, optional)*: Shower room and toilet counts.

**property.has\_swimming\_pool** *(boolean, optional)*: Swimming pool indicator.

**property.alternative\_descriptions.fr / property.alternative\_descriptions.nl** *(string, optional)*: Alternative public descriptions by language when available.

**property.fireplace\_exists** *(boolean, optional)*: Fireplace indicator.

**property.has\_terrace / property.terrace\_surface / property.terrace\_orientation** *(boolean/integer/string, optional)*: Terrace availability, size in square meters, and orientation.

**transaction.type / transaction.subtype** *(string, optional)*: Transaction type and subtype.

**transaction.availability\_date** *(string, optional)*: Availability date in ISO date format when available.

**transaction.certificates.carbon\_emission** *(integer, optional)*: Carbon emission value.

**transaction.certificates.primary\_energy\_consumption\_per\_sqm / transaction.certificates.primary\_energy\_consumption\_yearly** *(integer, optional)*: Energy consumption values.

**transaction.certificates.epc\_reference / transaction.certificates.epc\_score / transaction.certificates.epc\_url** *(string, optional)*: EPC reference, score, and document or image URL.

**transaction.sale.price** *(integer, optional)*: Sale price in EUR.

**transaction.sale.is\_subject\_to\_vat / transaction.sale.has\_starting\_price** *(boolean, optional)*: Sale pricing flags.

**transaction.investor.is\_investment\_property** *(boolean, optional)*: Investment-property indicator.

**media.primary\_image\_url** *(string, optional)*: Primary listing image URL.

**media.image\_urls\[]** *(array of strings, optional)*: Listing image URLs.

**media.pictures\[].small\_url / media.pictures\[].medium\_url / media.pictures\[].large\_url / media.pictures\[].extralarge\_url** *(string, optional)*: Image URLs by size.

**media.pictures\[].is\_vertical** *(boolean, optional)*: Image orientation indicator.

**media.virtual\_experience\_url / media.has\_virtual\_tour** *(string/boolean, optional)*: Virtual-tour URL and availability flag.

**media.specifications\[]** *(array of strings, optional)*: Specification document URLs.

**media.documents.\<document\_id>.original\_name** *(string, optional)*: Original document name.

**media.documents.\<document\_id>.id / media.documents.\<document\_id>.type / media.documents.\<document\_id>.url** *(string, optional)*: Document identifier, type, and URL.

**contacts.agency\_name** *(string, optional)*: Agency name associated with the listing.

**contacts.customers\[].id / contacts.customers\[].type** *(integer/string, optional)*: Contact or agency identifier and type.

**contacts.customers\[].email / contacts.customers\[].phone\_number / contacts.customers\[].website** *(string, optional)*: Public contact details when available.

**contacts.customers\[].logo\_url / contacts.customers\[].name / contacts.customers\[].ipi\_no** *(string, optional)*: Agency logo, name, and professional identifier.

**contacts.customers\[].location.country / contacts.customers\[].location.province / contacts.customers\[].location.district / contacts.customers\[].location.locality** *(string, optional)*: Contact location details.

**contacts.customers\[].location.postal\_code / contacts.customers\[].location.street** *(string, optional)*: Contact postal code and street.

**contacts.customers\[].location.latitude / contacts.customers\[].location.longitude** *(number, optional)*: Contact coordinates.

**contacts.customers\[].is\_owner** *(boolean, optional)*: Indicates whether the customer is marked as owner.

**contacts.customers\[].features.page404 / contacts.customers\[].features.investor\_flag / contacts.customers\[].features.related\_classifieds / contacts.customers\[].features.leaflets\_cta / contacts.customers\[].features.lead\_qualification / contacts.customers\[].features.recommendation** *(boolean, optional)*: Public feature flags associated with the contact.

**publication.creation\_date / publication.last\_modification\_date** *(string, optional)*: Publication timestamps in ISO datetime format.

**publication.visualisation\_option / publication.detailed\_page\_visibility** *(string, optional)*: Public visibility and presentation metadata.

**flags.main** *(string, optional)*: Main listing flag, such as `new`.

**flags.is\_public\_sale / flags.is\_new\_classified / flags.is\_new\_price / flags.is\_investment\_project / flags.is\_newly\_built / flags.is\_life\_annuity\_sale / flags.is\_sold\_or\_rented / flags.is\_new\_real\_estate\_project / flags.is\_under\_option** *(boolean, optional)*: Listing status and classification flags.

**metrics.bookmark\_count / metrics.view\_count** *(integer, optional)*: Public engagement counters when available.

**identifiers.listing\_id** *(integer, optional)*: Listing identifier, generally matching `id`.

**identifiers.external\_reference** *(string, optional)*: External reference value when available.

**attributes.has\_sections.has\_general\_section / attributes.has\_sections.has\_interior\_section / attributes.has\_sections.has\_exterior\_section / attributes.has\_sections.has\_facilities\_section / attributes.has\_sections.has\_energy\_section / attributes.has\_sections.has\_planning\_section / attributes.has\_sections.has\_financial\_section / attributes.has\_sections.has\_public\_sale\_section** *(boolean, optional)*: Indicators for available listing information sections.

**attributes.visual\_context.has\_virtual\_staging** *(boolean, optional)*: Virtual staging indicator.

**source\_context.source\_url** *(string, optional)*: Search or source page associated with the record.

**source\_context.canonical\_url** *(string, optional)*: Canonical listing URL.

**source\_context.fingerprint** *(string, optional)*: Stable fingerprint useful for audit and fallback deduplication.

**source\_context.seed\_id / source\_context.seed\_type** *(string, optional)*: Collection context identifiers.

**source\_context.location\_query** *(string, optional)*: Location query associated with the result.

**source\_context.page\_index** *(integer, optional)*: Source result page index.

**source\_context.domain** *(string, optional)*: Source domain.

**source\_context.search\_filters.deal\_type / source\_context.search\_filters.property\_type / source\_context.search\_filters.sort\_by** *(string, optional)*: Applied search filters.

**source\_context.search\_filters.immediately\_available / source\_context.search\_filters.has\_3d\_tour** *(boolean, optional)*: Applied boolean search filters.

### Data Quality, Guarantees, And Handling

- **Structured records:** results are normalized into predictable JSON objects for downstream use.
- **Best-effort extraction:** fields may vary by region, session, availability, listing type, or source-side presentation changes.
- **Optional fields:** null-check optional fields in downstream code, especially media, contact, certificate, and detailed property attributes.
- **Deduplication:** use `id` as the recommended stable key, with `source_context.canonical_url` or `source_context.fingerprint` as useful fallback keys.
- **Freshness:** results reflect the publicly available data at run time.
- **Repeated runs:** use the recommended idempotency key when syncing data into warehouses, CRMs, search indexes, or internal applications.

### Tips For Best Results

- Start with a small `limit` to validate the output shape before scaling up.
- Use one geography, property category, or market segment per run when you need cleaner segmentation.
- Leave optional filters empty when the goal is broad discovery.
- Add price, bedroom, area, construction-year, EPC, and availability filters gradually to understand how each field changes coverage.
- Use `sort_by: "newest"` for recurring monitoring and `sort_by: "relevance"` for general discovery.
- Enable `enrich_data` when deeper property records are more important than faster lightweight collection.
- Use stable identifiers for deduplication when storing results over time.

### How to Run on Apify

1. Open the actor in Apify Console.
2. Configure the available input fields for your target scope.
3. Set the maximum number of outputs to collect with `limit`.
4. Click **Start** and wait for the run to finish.
5. Open the dataset and review the first records.
6. Download results in JSON, CSV, Excel, or another supported format.

### Scheduling & Automation

#### Scheduling

**Automated Data Collection**

Schedule runs to keep Belgian property datasets current without manual collection. Recurring runs are useful for price monitoring, new-listing alerts, availability checks, and periodic reporting.

- Navigate to **Schedules** in Apify Console
- Create a new schedule, such as daily, weekly, or custom cron
- Configure input parameters
- Enable notifications for run completion
- Add webhooks for automated processing

#### Integration Options

- **BI dashboards:** monitor pricing, availability, property type mix, EPC distribution, and geographic coverage over time.
- **Data warehouses:** load normalized listing records into historical tables for trend analysis and reporting.
- **CRM enrichment:** sync public property, agency, and contact attributes into account or lead records.
- **Google Sheets or Airtable:** review smaller market segments, validation runs, and curated lead lists with business users.
- **Webhooks:** trigger ingestion, validation, notification, or alerting workflows after each completed run.
- **ETL and enrichment pipelines:** merge listing data with internal portfolio, underwriting, or market intelligence datasets.

### Export Formats And Downstream Use

Apify datasets can be exported or consumed by downstream systems for reporting, analysis, and operational workflows.

- **JSON:** for APIs, applications, and data pipelines
- **CSV or Excel:** for spreadsheet workflows and manual review
- **API access:** for automated ingestion into internal systems
- **BI and warehouses:** for reporting, dashboards, and historical analysis

### Performance

These are estimated run times and can vary by input scope:

- **Small runs (< 1,000 outputs):** ~3–5 minutes
- **Medium runs (1,000–5,000 outputs):** ~5–15 minutes
- **Large runs (5,000+ outputs):** ~15–30 minutes

Execution time varies based on filters, result volume, and how much information is returned per record. Highly filtered runs can finish faster, while broad discovery or detail-rich records may take longer.

### Limitations

- Availability depends on what <https://www.immoweb.be> publicly exposes at run time.
- Some optional fields may be missing on sparse listings or records with limited public information.
- Very broad searches may take longer or require higher `limit` values to capture enough records.
- Target-side changes can affect field availability, naming, formatting, or visible result counts.
- Regional, account, language, or availability differences may change which listings and attributes are visible.
- Media, contact, certificate, and engagement fields are available only when present in the public listing data.

### Troubleshooting

- **No results returned:** check filters, location or category spelling, and whether Immoweb has matching public records for the selected scope.
- **Fewer results than expected:** broaden filters, raise `limit`, or verify that the target contains enough matching public listings.
- **Some fields are empty:** optional fields depend on what each listing publicly provides.
- **Run takes longer than expected:** reduce scope, lower `limit` for validation, or split broad collection into smaller market segments.
- **Output changed:** compare the current output with the field reference and include a small sample when reporting the issue.

### FAQ

#### What data does this actor collect?

It collects public Immoweb property listing records, including listing identifiers, URLs, titles, descriptions, property type, pricing, location, property attributes, transaction details, media, contact information when available, publication metadata, flags, metrics, and source context.

#### Can I filter by location, category, price, or other criteria?

Yes. The actor supports `location`, `deal_type`, `property_type`, price range, construction year, immediate availability, living area, bedroom count, parking, 3D tour availability, EPC labels, sorting, enrichment, and result limits.

#### Can I filter by date?

There is no date input parameter in the current schema. For monitoring recently active listings, use `sort_by: "newest"` with a recurring schedule and compare results across runs.

#### Why did I receive fewer results than my limit?

The selected filters may match fewer public listings than the requested `limit`, or some listings may not expose enough information to be saved as complete records.

#### Can I schedule recurring runs?

Yes. Use Apify schedules to run the actor daily, weekly, or on a custom cron schedule with the same input settings.

#### How do I avoid duplicates across runs?

Use `id` as the primary deduplication key. You can also keep `source_context.canonical_url` and `source_context.fingerprint` as fallback or audit fields.

#### Can I export the data to CSV, Excel, or JSON?

Yes. Apify datasets support exports in JSON, CSV, Excel, and other formats available in Apify Console.

#### Does this actor collect private data?

The actor is intended to collect publicly available listing information from Immoweb. Users are responsible for using the data in accordance with applicable laws, regulations, and platform terms.

#### What should I include when reporting an issue?

Include the input used with sensitive values redacted, the run ID, expected versus actual behavior, and a small output sample when helpful.

### Compliance & Ethics

#### Responsible Data Collection

This actor collects publicly available **Belgian real estate listing** information from **https://www.immoweb.be** for legitimate business purposes, including:

- **Real estate** research and market analysis
- Property monitoring, pricing intelligence, and inventory reporting
- CRM enrichment, data validation, and operational analytics

This section is informational and not legal advice. Users are responsible for ensuring that their collection and use of data complies with applicable laws, regulations, and the target site's terms.

#### Best Practices

- Use collected data in accordance with applicable laws, regulations, and the target site's terms
- Respect individual privacy and personal information
- Use data responsibly and avoid disruptive or excessive collection
- Do not use this actor for spamming, harassment, or other harmful purposes
- Follow relevant data protection requirements where applicable, such as GDPR and CCPA

### Support

For help, use the actor page or Issues section. Include the input used with sensitive values redacted, the run ID, expected versus actual behavior, and a small output sample if it helps explain the issue.

# Actor input Schema

## `deal_type` (type: `string`):

Select the listing mode to collect. Choose sale for purchase opportunities or rent for rental listings; the default starts with properties for sale.

## `property_type` (type: `string`):

Choose the category of listings to collect. The default searches houses and apartments together, which is a practical starting point for residential market research.

## `location` (type: `string`):

Enter a Belgian city, postal code, district, province, neighborhood, or market. Use a specific area for targeted collection, or leave it empty to keep the search national.

## `min_price` (type: `integer`):

Enter the lowest price to include. For rent searches, this applies to the rental price; for sale searches, it applies to the listing price.

## `max_price` (type: `integer`):

Enter the highest price to include. Leave this empty when you do not want to cap the upper end of the market.

## `min_building_year` (type: `integer`):

Include only properties built in or after this year. Leave empty to avoid applying a lower construction-year boundary.

## `max_building_year` (type: `integer`):

Include only properties built in or before this year. Leave empty to avoid applying an upper construction-year boundary.

## `immediately_available` (type: `boolean`):

Turn this on when move-in timing is important and you only want listings marked as immediately available.

## `min_area` (type: `integer`):

Enter the minimum living area in square meters. Leave empty when smaller homes should stay in the results.

## `max_area` (type: `integer`):

Enter the maximum living area in square meters. Leave empty when larger homes should stay in the results.

## `min_bedroom` (type: `integer`):

Enter the fewest bedrooms a listing should have. Leave empty to include studios and listings with any bedroom count.

## `max_bedroom` (type: `integer`):

Enter the most bedrooms a listing should have. Leave empty when larger properties should stay in the results.

## `min_parking` (type: `integer`):

Enter the minimum number of parking spaces required. Leave empty to include listings regardless of parking count.

## `3d_tour` (type: `boolean`):

Turn this on when remote review quality matters and you only want listings with virtual-tour media.

## `epc_label` (type: `array`):

Choose one or more EPC energy labels to include. Leave empty to collect listings across all available EPC ratings.

## `sort_by` (type: `string`):

Order matching listings by relevance, price, postal code, or recent listing activity.

## `enrich_data` (type: `boolean`):

Enable this for more complete property listings. This may make the run slower because the actor may spend more time collecting details for each result. Turn it off for faster runs when the standard result fields are enough.

## `maximize_coverage` (type: `boolean`):

Keep this enabled for large searches that may exceed the visible-result limit. Turn it off for faster exploratory runs where the first visible set of matching listings is enough.

## `limit` (type: `integer`):

Set the maximum number of listings to save for the search. Leave empty to collect as many matching listings as are available.

## Actor input object example

```json
{
  "deal_type": "buy",
  "property_type": "house_and_apartment",
  "immediately_available": false,
  "3d_tour": false,
  "sort_by": "relevance",
  "enrich_data": true,
  "maximize_coverage": true,
  "limit": 100
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "limit": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("fatihtahta/immoweb-be-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "limit": 100 }

# Run the Actor and wait for it to finish
run = client.actor("fatihtahta/immoweb-be-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "limit": 100
}' |
apify call fatihtahta/immoweb-be-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=fatihtahta/immoweb-be-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Immoweb.be Scraper with Contacts | Fast & Reliable",
        "description": "Extract unlimited Immoweb.be property listings across Belgium with rich property detail, agency contacts, EPC data, media, pricing, and flexible market filters. Built for enterprise-grade Belgian real estate intelligence, lead enrichment, and automated analytics pipelines.",
        "version": "0.0",
        "x-build-id": "8JJNAW6o1Q5LlFxA3"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/fatihtahta~immoweb-be-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-fatihtahta-immoweb-be-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/fatihtahta~immoweb-be-scraper/runs": {
            "post": {
                "operationId": "runs-sync-fatihtahta-immoweb-be-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/fatihtahta~immoweb-be-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-fatihtahta-immoweb-be-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": {
                    "deal_type": {
                        "title": "Choose Sale or Rent Listings",
                        "enum": [
                            "buy",
                            "rent"
                        ],
                        "type": "string",
                        "description": "Select the listing mode to collect. Choose sale for purchase opportunities or rent for rental listings; the default starts with properties for sale.",
                        "default": "buy"
                    },
                    "property_type": {
                        "title": "Choose Property Category",
                        "enum": [
                            "house",
                            "apartment",
                            "house_and_apartment",
                            "kot",
                            "garage",
                            "office",
                            "business",
                            "industry",
                            "land",
                            "other"
                        ],
                        "type": "string",
                        "description": "Choose the category of listings to collect. The default searches houses and apartments together, which is a practical starting point for residential market research.",
                        "default": "house_and_apartment"
                    },
                    "location": {
                        "title": "Add Belgian Search Area",
                        "type": "string",
                        "description": "Enter a Belgian city, postal code, district, province, neighborhood, or market. Use a specific area for targeted collection, or leave it empty to keep the search national."
                    },
                    "min_price": {
                        "title": "Set Minimum Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the lowest price to include. For rent searches, this applies to the rental price; for sale searches, it applies to the listing price."
                    },
                    "max_price": {
                        "title": "Set Maximum Price",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the highest price to include. Leave this empty when you do not want to cap the upper end of the market."
                    },
                    "min_building_year": {
                        "title": "Set Earliest Building Year",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Include only properties built in or after this year. Leave empty to avoid applying a lower construction-year boundary."
                    },
                    "max_building_year": {
                        "title": "Set Latest Building Year",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Include only properties built in or before this year. Leave empty to avoid applying an upper construction-year boundary."
                    },
                    "immediately_available": {
                        "title": "Require Immediate Availability",
                        "type": "boolean",
                        "description": "Turn this on when move-in timing is important and you only want listings marked as immediately available.",
                        "default": false
                    },
                    "min_area": {
                        "title": "Set Minimum Living Area",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the minimum living area in square meters. Leave empty when smaller homes should stay in the results."
                    },
                    "max_area": {
                        "title": "Set Maximum Living Area",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the maximum living area in square meters. Leave empty when larger homes should stay in the results."
                    },
                    "min_bedroom": {
                        "title": "Set Minimum Bedrooms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the fewest bedrooms a listing should have. Leave empty to include studios and listings with any bedroom count."
                    },
                    "max_bedroom": {
                        "title": "Set Maximum Bedrooms",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the most bedrooms a listing should have. Leave empty when larger properties should stay in the results."
                    },
                    "min_parking": {
                        "title": "Set Minimum Parking Spaces",
                        "minimum": 0,
                        "type": "integer",
                        "description": "Enter the minimum number of parking spaces required. Leave empty to include listings regardless of parking count."
                    },
                    "3d_tour": {
                        "title": "Require a 3D Tour",
                        "type": "boolean",
                        "description": "Turn this on when remote review quality matters and you only want listings with virtual-tour media.",
                        "default": false
                    },
                    "epc_label": {
                        "title": "Choose EPC Labels",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Choose one or more EPC energy labels to include. Leave empty to collect listings across all available EPC ratings.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "A++",
                                "A+",
                                "A",
                                "B",
                                "C",
                                "D",
                                "E",
                                "F",
                                "G",
                                "X"
                            ],
                            "enumTitles": [
                                "A++",
                                "A+",
                                "A",
                                "B",
                                "C",
                                "D",
                                "E",
                                "F",
                                "G",
                                "X"
                            ]
                        }
                    },
                    "sort_by": {
                        "title": "Choose Result Order",
                        "enum": [
                            "relevance",
                            "cheapest",
                            "most_expensive",
                            "postal_code",
                            "newest"
                        ],
                        "type": "string",
                        "description": "Order matching listings by relevance, price, postal code, or recent listing activity.",
                        "default": "relevance"
                    },
                    "enrich_data": {
                        "title": "Collect Richer property listing Details",
                        "type": "boolean",
                        "description": "Enable this for more complete property listings. This may make the run slower because the actor may spend more time collecting details for each result. Turn it off for faster runs when the standard result fields are enough.",
                        "default": true
                    },
                    "maximize_coverage": {
                        "title": "Collect More Matching Listings",
                        "type": "boolean",
                        "description": "Keep this enabled for large searches that may exceed the visible-result limit. Turn it off for faster exploratory runs where the first visible set of matching listings is enough.",
                        "default": true
                    },
                    "limit": {
                        "title": "Set Maximum Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Set the maximum number of listings to save for the search. Leave empty to collect as many matching listings as are available."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
