# Immoweb Property Details Scraper (`alexist/immoweb-property-details-scraper`) Actor

Scrape detailed property information from Immoweb.be, Belgium's leading real estate platform. Collect prices, descriptions, images, property specifications, and transaction details from apartment, house, and villa listings — perfect for market analysis, lead generation, and investment research.

- **URL**: https://apify.com/alexist/immoweb-property-details-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Property Details Scraper: Extract Belgian Real Estate Data Efficiently

***

### What Is Immoweb.be?

Immoweb.be is Belgium's largest online property marketplace, hosting hundreds of thousands of residential listings for sale and rent across Flanders, Wallonia, and Brussels. Properties range from studio apartments to luxury villas, with detailed descriptions, pricing, and media. Collecting this real estate data manually is impractical — the **Immoweb Property Details Scraper** automates extraction of structured property data from individual listings at scale.

***

### Overview

The **Immoweb Property Details Scraper** extracts comprehensive property information from Immoweb.be listing pages, transforming raw HTML into clean, structured datasets. It is designed for:

- **Real estate analysts** tracking market trends and price movements
- **Investors** building property databases for due diligence and portfolio analysis
- **Property managers** monitoring competitor listings and valuations
- **Data scientists** studying Belgian housing markets
- **Aggregators** feeding property data into alternative platforms or mobile apps

Key strengths include support for multiple property types (apartments, houses, villas, new projects), granular data extraction across 17+ output fields, and reliable URL handling via `ignore_url_failures`.

***

### Input Format

The scraper accepts a JSON configuration specifying which properties to collect:

```json
{
  "urls": [
    "https://www.immoweb.be/en/classified/apartment/for-sale/ixelles/1050/21718631",
    "https://www.immoweb.be/en/classified/house/for-sale/mouscron-herseaux/7712/21722294",
    "https://www.immoweb.be/en/classified/villa/for-sale/mouscron-dottignies/7711/21712964"
  ],
  "max_items_per_url": 200,
  "ignore_url_failures": true
}
```

| Field | Description |
|---|---|
| `urls` | Array of direct links to Immoweb property detail pages. Copy URLs directly from your browser (one per listing). |
| `max_items_per_url` | Maximum data points extracted per URL. Set to `200` for comprehensive extraction. |
| `ignore_url_failures` | If `true`, continues processing remaining URLs even if some fail to load or parse. Recommended for large batch runs. |

**URL structure:** Properties follow the pattern `https://www.immoweb.be/[language]/classified/[property-type]/[sale-or-rent]/[city]/[postal-code]/[listing-id]`

> **Tip:** Use English-language URLs (`/en/`) for consistent data structure. Paste the full URL including the listing ID for accurate matching.

***

### Output Format

**Sample Output Record:**

```json
{
  "id": 21718631,
  "cluster": null,
  "customers": [
    {
      "id": 90001091,
      "type": "AGENCY",
      "email": "info@victoire.be",
      "logo_url": "https://media.immowebstatic.be/customers/001P600000TsgG9IAJ/logo/7fa065482e940bcd42536c281bd2fb2e.jpg",
      "phone_number": "+3223751020",
      "mobile_number": null,
      "name": "VICTOIRE JUNOT - Ixelles Vente",
      "website": null,
      "location": {
        "country": "Belgium",
        "region": null,
        "province": "Brussels",
        "district": "Brussels",
        "locality": "Ixelles",
        "postal_code": "1050",
        "street": "35 Rue Darwin",
        "number": null,
        "box": null,
        "property_name": null,
        "floor": null,
        "latitude": 50.817908,
        "longitude": 4.352473,
        "distance": null,
        "approximated": null,
        "region_code": null,
        "type": null,
        "has_sea_view": null,
        "points_of_interest": null,
        "place_name": null
      },
      "ipi_no": "518957",
      "is_owner": true,
      "contact_hours_mobile": null,
      "contact_hours_landline": null,
      "sales_representative": {
        "name": null,
        "email": "victoire-venteixelle@apilead.be",
        "land_line": null
      },
      "features": {
        "page404": true,
        "investor_flag": false,
        "related_classifieds": true,
        "leaflets_c_t_a": false,
        "lead_qualification": true,
        "recommendation": true
      },
      "year_of_foundation": null,
      "number_of_projects_sold": null,
      "number_of_active_projects": null
    }
  ],
  "premium_project_page": {
    "medias": null,
    "options": null,
    "promoter": null,
    "tabs": null
  },
  "flags": {
    "is_public_sale": false,
    "is_new_classified": true,
    "is_new_price": false,
    "is_investment_project": false,
    "is_newly_built": false,
    "is_notary_sale": null,
    "is_life_annuity_sale": false,
    "ad_quality": null,
    "date": null,
    "price_sqm": null,
    "price": null,
    "default": null,
    "is_sold_or_rented": false,
    "is_low_energy": null,
    "percent_sold": null,
    "is_passive_house": null,
    "is_new_real_estate_project": false,
    "is_an_interactive_sale": null,
    "is_under_option": false
  },
  "media": {
    "pictures": [
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/b45cd2f95d5477c77084e3a76c64cb56.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/b45cd2f95d5477c77084e3a76c64cb56.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/b45cd2f95d5477c77084e3a76c64cb56.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/b45cd2f95d5477c77084e3a76c64cb56.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/78ec454d464638f3db523e41cd34f5e3.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/78ec454d464638f3db523e41cd34f5e3.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/78ec454d464638f3db523e41cd34f5e3.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/78ec454d464638f3db523e41cd34f5e3.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/abe2b00be5c2108dce7e67239e26bf7e.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/abe2b00be5c2108dce7e67239e26bf7e.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/abe2b00be5c2108dce7e67239e26bf7e.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/abe2b00be5c2108dce7e67239e26bf7e.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/33c409899764f653fbb3da7bf5bb4a24.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/33c409899764f653fbb3da7bf5bb4a24.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/33c409899764f653fbb3da7bf5bb4a24.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/33c409899764f653fbb3da7bf5bb4a24.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/c43e51d519049ffb7477ef616d7dcf4b.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/c43e51d519049ffb7477ef616d7dcf4b.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/c43e51d519049ffb7477ef616d7dcf4b.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/c43e51d519049ffb7477ef616d7dcf4b.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/b9721a7393dfe2bbffef17ebbdd31730.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/b9721a7393dfe2bbffef17ebbdd31730.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/b9721a7393dfe2bbffef17ebbdd31730.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/b9721a7393dfe2bbffef17ebbdd31730.jpg",
        "is_vertical": true
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/f3611b46a9a5de821847dcbeec023fa7.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/f3611b46a9a5de821847dcbeec023fa7.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/f3611b46a9a5de821847dcbeec023fa7.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/f3611b46a9a5de821847dcbeec023fa7.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/83679153f0dee196cfb945b1abe06446.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/83679153f0dee196cfb945b1abe06446.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/83679153f0dee196cfb945b1abe06446.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/83679153f0dee196cfb945b1abe06446.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/5adef29cf198e39900582f69dbd0a6dc.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/5adef29cf198e39900582f69dbd0a6dc.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/5adef29cf198e39900582f69dbd0a6dc.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/5adef29cf198e39900582f69dbd0a6dc.jpg",
        "is_vertical": false
      },
      {
        "small_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/100x100/1c330efe0ce3508ac95c399cefbc8002.jpg",
        "medium_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/300x300/1c330efe0ce3508ac95c399cefbc8002.jpg",
        "large_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/736x736/1c330efe0ce3508ac95c399cefbc8002.jpg",
        "extralarge_url": "https://media-resize.immowebstatic.be/classifieds/91ee6ce3-de49-474a-a732-6a886f270e91/2560x1440/1c330efe0ce3508ac95c399cefbc8002.jpg",
        "is_vertical": false
      }
    ],
    "virtual_tour_url": null,
    "floor_plans": null,
    "specifications": null,
    "documents": [],
    "virtual_experience_url": null,
    "legal_documents": null,
    "external_video_url": null,
    "external_video_thumbnail_url": null,
    "external_video_embed_url": null
  },
  "property": {
    "type": "APARTMENT",
    "subtype": "APARTMENT",
    "title": "Heart of XL – Beautiful 2-bedroom apartment with rear terrac",
    "description": "Victoire Junot presents this brand-new two-bedroom apartment, featuring a rear terrace and located on the third floor of this completely rebuilt building behind its original façade. \r\nThis 96.8 sqm² apartment is laid out as follows: An entrance hall welcomes you and opens onto the spacious rear living area, which includes a fully equipped open kitchen (with laundry space), a dining area and a living room. The whole space extends onto a small terrace and overlooking a green roof.\r\nThe night hall, with separate toilet, leads to two well-sized bedrooms, each with its own shower room. The apartment also benefits from an impressive ceiling height of 3.22 m.\r\nThe renovation was carried out according to the 2026 energy standards, ensuring performance and durability. The apartment offers all the comfort of NEW construction: individual gas boiler, high-performance wooden frames at the front/PVC frames at the rear, and quality finishes. Kitchens and bathrooms were selected in an elegant and contemporary style.\r\nThe building has no parking, no cellar and no lift. The sale is subject to the 6% VAT regime.\r\nThe location is ideal on Chaussée d’Ixelles, just steps away from Place Fernand Cocq — an urban, lively neighbourhood perfect for city lovers!",
    "name": null,
    "is_holiday_property": null,
    "bedroom_count": 2,
    "bedrooms": [
      {
        "surface": 14
      },
      {
        "surface": 12
      }
    ],
    "bathroom_count": 2,
    "bathrooms": [],
    "location": {
      "country": "Belgium",
      "region": "Brussels",
      "province": "Brussels",
      "district": "Brussels",
      "locality": "Ixelles",
      "postal_code": "1050",
      "street": "CHAUSSÉE D'IXELLES",
      "number": "56",
      "box": null,
      "property_name": null,
      "floor": 3,
      "latitude": 50.83655299999999,
      "longitude": 4.3629091,
      "distance": null,
      "approximated": null,
      "region_code": "BRUSSELS",
      "type": null,
      "has_sea_view": null,
      "points_of_interest": null,
      "place_name": null
    },
    "net_habitable_surface": 96,
    "room_count": 2,
    "monthly_costs": 0,
    "attic": null,
    "has_attic": null,
    "basement": null,
    "has_basement": null,
    "has_dressing_room": false,
    "dining_room": null,
    "has_dining_room": null,
    "building": {
      "annex_count": null,
      "condition": "JUST_RENOVATED",
      "construction_year": 2026,
      "facade_count": 2,
      "floor_count": 4,
      "has_syndicator": null,
      "is_heritage_protected": "NO",
      "shared_spaces": null,
      "street_facade_width": null
    },
    "property_certificates": {
      "built_plan_status": null,
      "global_insulation_level": null,
      "oil_tank_certificate_status": "NOT_SPECIFIED",
      "primary_energy_consumption_level": null,
      "has_asbestos_certificate": false,
      "has_electrical_installation_compliance_certificate": false,
      "has_judicial_measure": null,
      "has_separate_electricity_meter": true,
      "has_separate_gas_meter": true,
      "has_separate_water_meter": true,
      "has_valid_flood_certificate": null,
      "enforcement_measures_register_consulted": null
    },
    "has_caretaker_or_concierge": false,
    "has_disabled_access": false,
    "has_lift": false,
    "construction_permit": {
      "construction_type": null,
      "flood_zone_type": "NON_FLOOD_ZONE",
      "is_obtained": false,
      "has_obligation_to_construct": null,
      "has_plot_division_authorization": false,
      "has_possible_priority_purchase_right": false,
      "is_breaching_urban_planning_regulation": false,
      "flood_zone_icon_url": null,
      "most_recent_urban_development_zoning": null,
      "total_buildable_ground_floor_surface": null,
      "urban_planning_information": null,
      "p_score": null,
      "g_score": null,
      "has_cadastral_plan": null,
      "has_first_refusal_right": null
    },
    "energy": {
      "heating_type": "GAS",
      "has_heat_pump": false,
      "has_photovoltaic_panels": false,
      "has_thermic_panels": false,
      "has_collective_water_heater": false,
      "has_double_glazing": true,
      "performance": null
    },
    "kitchen": {
      "surface": null,
      "type": "NOT_INSTALLED",
      "has_oven": null,
      "has_micro_wave_oven": null,
      "has_dishwasher": null,
      "has_washing_machine": null,
      "has_fridge": null,
      "has_freezer": null,
      "has_steam_oven": null
    },
    "land": null,
    "laundry_room": {
      "surface": null
    },
    "has_laundry_room": true,
    "living_room": {
      "surface": 38
    },
    "has_living_room": true,
    "is_first_occupation": null,
    "has_balcony": null,
    "has_barbecue": null,
    "has_garden": null,
    "garden_surface": null,
    "garden_orientation": null,
    "parking_count_indoor": null,
    "parking_count_outdoor": null,
    "parking_count_closed_box": null,
    "has_air_conditioning": false,
    "has_armored_door": false,
    "has_visiophone": true,
    "has_secure_access_alarm": false,
    "has_cable_t_v": false,
    "has_door_phone": true,
    "has_internet": false,
    "shower_room_count": 0,
    "shower_rooms": [],
    "specificities": {
      "internal_fixtures_and_fittings": null,
      "miscellaneous_fixtures_and_fittings": null,
      "total_floor_surface": null,
      "access_door_count": null,
      "sectional_door_count": null,
      "sliding_door_count": null,
      "loading_bay_count": null,
      "covered_bays_count": null,
      "loading_bay_with_lifting_device_count": null,
      "ceiling_height": null,
      "max_available_height": null,
      "min_available_height": null,
      "showroom_surface": null,
      "has_reception_desk": null,
      "shop_window_width": null,
      "has_goodwill": null,
      "goodwill_price": null,
      "has_office": false,
      "office": null,
      "has_workspace": false,
      "workspace": null
    },
    "toilet_count": 1,
    "toilets": [],
    "has_fitness_room": null,
    "has_tennis_court": null,
    "has_swimming_pool": false,
    "has_sauna": false,
    "has_jacuzzi": false,
    "has_hammam": null,
    "bedroom_surface": null,
    "alternative_descriptions": {
      "fr": "Victoire Junot vous présente cet appartement 2 chambres neuf, agrémenté d’une terrasse arrière et situé au 3ème étage. \r\nImplanté dans un immeuble entièrement reconstruit derrière sa façade d’origine, cet appartement de 96,8 m² se décline comme suit : \r\nLe hall d'entrée vous accueille et s'ouvre d'une part largement vers la grande pièce de vie à l'arrière comprenant la cuisine ouverte super équipée (avec espace buanderie) la salle à manger et le séjour. L'ensemble est prolongé d'une petite terrasse et d'une vue sur une toiture verte. Le hall de nuit avec toilettes séparées vous mène vers les 2 chambres de belles tailles chacune bénéficiant d'une salle de douche. Cet appartement bénéficie d'une très belle hauteur sous plafond de 3,22m. La rénovation a été réalisée selon les standards énergétiques 2026, garantissant performance et durabilité. Les appartements offrent tout le confort du NEUF : chaudière individuelle au gaz, châssis bois à l'avant/PVC de haute performance à l'arrière et finitions soignées. Les cuisines et salles d’eau ont été sélectionnées dans un style élégant et contemporain. L’immeuble ne dispose pas de parking ni de cave. Pas d'ascenseur. La vente est soumise au régime TVA à 6 %.\r\nLe quartier est idéal sur la Chaussée d’Ixelles, à deux pas de la Place Fernand Cocq, urbain et animé pour les amoureux de la vie en ville !",
      "nl": "Victoire Junot stelt u dit gloednieuwe appartement met twee slaapkamers voor, voorzien van een prachtig terras aan de achterzijde en gelegen op de derde verdieping van dit volledig heropgebouwde gebouw, waarvan enkel de originele voorgevel bewaard bleef.\r\nHet appartement van 96,8 m² is als volgt ingedeeld: een inkomhal verwelkomt u en geeft uit op de ruime achterleefruimte, bestaande uit een volledig uitgeruste open keuken (met wasruimte), een eetkamer en een woonkamer. De hele ruimte loopt door naar een terras met uitzicht op een groendak.\r\nDe nachthal, met apart toilet, leidt naar twee ruime slaapkamers, elk voorzien van een eigen doucheruimte. Het appartement beschikt bovendien over een indrukwekkende plafondhoogte van 3,22 m.\r\nDe renovatie werd uitgevoerd volgens de energienormen van 2026, wat prestaties en duurzaamheid garandeert. Het appartement biedt alle comfort van NIEUWbouw: individuele gasketel, hoogperformante houten ramen aan de voorzijde / PVC-ramen aan de achterzijde en kwalitatieve afwerkingen. Keukens en badkamers zijn geselecteerd in een elegante en eigentijdse stijl. Het gebouw beschikt niet over parking, kelder of lift.\r\nDe verkoop valt onder het btw-stelsel van 6 %.\r\nDe ligging is ideaal aan de Elsensesteenweg, op slechts enkele stappen van het Fernand Cocqplein — een stedelijke, levendige buurt, perfect voor liefhebbers van het stadsleven!"
    },
    "habitable_unit_count": null,
    "fireplace_count": null,
    "fireplace_exists": false,
    "has_terrace": true,
    "terrace_surface": 4,
    "terrace_orientation": null
  },
  "publication": {
    "creation_date": "2026-07-17T10:15:47.890Z",
    "expiration_date": null,
    "publisher_id": null,
    "visualisation_option": "XL",
    "last_modification_date": "2026-07-17T10:15:51.998Z",
    "detailed_page_visibility": "CLASSIC"
  },
  "transaction": {
    "type": "FOR_SALE",
    "subtype": "BUY_REGULAR",
    "availability_period_type": "IMMEDIATELY",
    "availability_date": null,
    "certificates": {
      "carbon_emission": null,
      "primary_energy_consumption_per_sqm": 85,
      "primary_energy_consumption_yearly": null,
      "epc_description": null,
      "epc_reference": "B",
      "epc_score": "B",
      "epc_url": "https://media.immowebstatic.be/epc/en/pics/bxlB3.gif",
      "renovation_obligation": null
    },
    "hide_price": null,
    "rental": null,
    "sale": {
      "price": 550000,
      "is_subject_to_vat": false,
      "cadastral_income": null,
      "public_sale": null,
      "price_per_sqm": null,
      "old_price": null,
      "life_annuity": null,
      "has_starting_price": null,
      "is_furnished": false,
      "home_to_build": null,
      "new_builds_total_price": "",
      "new_builds_v_a_t": "",
      "new_builds_land_price": "",
      "new_builds_land_taxes": ""
    },
    "investor": {
      "is_investment_property": false,
      "current_monthly_rental_income": null,
      "current_return_on_investment": null,
      "expected_monthly_rental_income": null,
      "expected_monthly_rental_income_description": null,
      "expected_return_on_investment": null,
      "habitable_unit_count": null,
      "occupancy_rate": null,
      "rental_income_date": null,
      "rental_income_vat_value": null
    }
  },
  "price_type": null,
  "price": {
    "type": "residential_sale",
    "main_value": 550000,
    "alternative_value": null,
    "additional_value": null,
    "old_value": null,
    "min_range_value": null,
    "max_range_value": null,
    "main_display_price": "€550,000",
    "h_t_m_l_display_price": "<span aria-hidden=\"true\">€550,000</span>",
    "alternative_display_price": "",
    "old_display_price": null,
    "short_display_price": "€550K",
    "accessibility_price": "550000€",
    "label": "Price",
    "date": null,
    "language": "en",
    "hide_price": false
  },
  "external_reference": "UCAL-56-58 -3",
  "is_bookmarked": false,
  "has_sections_array": {
    "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
  },
  "unit_groupings": [],
  "display_flags": {
    "main": "new",
    "secondary": [],
    "percent_sold": null
  },
  "statistics": {
    "bookmark_count": 9,
    "view_count": 1144,
    "alert_price": null,
    "creation_date": null,
    "description": null,
    "is_alert_email_set": null,
    "rating": null,
    "was_owner_contacted": null,
    "was_property_visited": null
  }
}
```

Each scraped property returns a detailed record with 17 primary fields:

#### Property Identification

| Field | Meaning | Example |
|---|---|---|
| `ID` | Unique Immoweb property identifier | `21718631` |
| `Cluster` | Grouping or region cluster assignment | `Brussels-South` |
| `External Reference` | Seller's or agent's external reference code | `AGENT-ABC-123` |
| `Property` | Comprehensive property object containing all details | *(see subsections below)* |

#### Pricing Information

| Field | Meaning | Example |
|---|---|---|
| `Price` | Listed sale or rental price in EUR | `450000` or `1200` |
| `Price Type` | Price classification (sale price, monthly rent, price per sqm) | `SALE_PRICE`, `MONTHLY_RENT` |
| `Transaction` | Transaction type and conditions | Sale, rent, lease, short-term rental |

#### Media & Visuals

| Field | Meaning |
|---|---|
| `Media` | Array of images, videos, and virtual tour URLs attached to the listing |
| `Display Flags` | Flags indicating which media types are publicly visible (e.g., hide agent contact, show virtual tour) |

#### Customer & Listing Management

| Field | Meaning |
|---|---|
| `Customers` | Agent or seller account metadata (name, phone, email) |
| `Premium Project Page` | Whether the property is featured on a premium developer/builder project page |
| `Is Bookmarked` | Whether the property is saved/bookmarked by current user *(user-specific)* |

#### Publication & Visibility

| Field | Meaning |
|---|---|
| `Publication` | Listing status, publication date, renewal date, and visibility settings |
| `Flags` | Boolean indicators (e.g., featured, urgent sale, newly listed, reduced price) |
| `Display Flags` | Controls for data display (featured placement, visibility in search results) |

#### Property Specifications

Within the `Property` object, you'll receive structured details:

- **Address:** Street, postal code, city, region (Flanders, Wallonia, Brussels)
- **Type:** Apartment, house, villa, townhouse, studio, or new project
- **Dimensions:** Living area (sqm), plot size, number of rooms, bedrooms, bathrooms
- **Features:** Garden, balcony, garage, parking, basement, attic, terrace
- **Energy:** EPC rating (A–G), heating type, insulation, solar panels
- **Condition:** Year built, renovation status (new, renovated, needs work)
- **Amenities:** Pool, gym, concierge, security, elevator, furnished
- **Legal:** Ownership type, building regulations compliance

#### Data Groupings

| Field | Meaning |
|---|---|
| `Unit Groupings` | Logical grouping of property units (for multi-unit buildings or projects) |
| `Has Sections Array` | Indicates whether detailed property sections are available for structured parsing |
| `Statistics` | View counts, days on market, inquiry frequency (when available) |

***

### How to Use

1. **Find property URLs** — Browse Immoweb.be and open individual property listing pages. Each property has a unique URL with a listing ID.
2. **Collect URLs** — Copy full URLs from the address bar. You can add 1–1000+ URLs at once in the `urls` array.
3. **Configure settings** — Set `max_items_per_url: 200` for comprehensive data extraction, and `ignore_url_failures: true` for reliable batch processing.
4. **Start the scraper** — Initiate the run and monitor progress in the logs.
5. **Download results** — Export the structured JSON output for analysis, import into databases, or integrate into your workflow.

**Best practices:**

- Use URLs from the desired language version (e.g., `/en/` or `/fr/`) for consistency.
- Include the full postal code and listing ID in the URL for accurate matching.
- For large batch runs (100+ properties), enable `ignore_url_failures` to handle occasional timeouts gracefully.
- Filter by property type (apartment, house, villa) in your URL selection to get targeted datasets.

**Handling common issues:**

- If a property URL returns no data, verify the listing ID is still active (hasn't been delisted).
- If Media or Statistics fields are empty, the property may be a reduced-data listing or private posting.
- Use region filtering (Flanders, Wallonia, Brussels) at the source to focus your scraping efforts.

***

### Use Cases & Business Value

- **Market analysis:** Extract pricing trends across Brussels, Flanders, and Wallonia to identify investment opportunities.
- **Lead generation:** Scrape new listings in specific price ranges or neighborhoods for real estate agents and investors.
- **Competitive intelligence:** Monitor competitor property listings, pricing strategies, and market positioning.
- **Academic research:** Study Belgian housing affordability, urbanization patterns, and market dynamics.
- **Valuation models:** Build datasets of comparable properties to train price prediction algorithms.
- **Platform aggregation:** Populate alternative property search engines or BI dashboards with Immoweb data.

The Immoweb Property Details Scraper transforms hours of manual browsing into minutes of automated data collection, delivering ready-to-analyze datasets that power smarter real estate decisions.

***

### Conclusion

The **Immoweb Property Details Scraper** is an essential tool for anyone requiring structured Belgian property market data. With extraction of 17+ fields covering pricing, features, media, and metadata, it unlocks insights across residential real estate at scale. Whether you're an investor, analyst, or developer, this scraper delivers the data you need to navigate Belgium's competitive property market confidently.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the Specific property urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## Actor input object example

```json
{
  "urls": [
    "https://www.immoweb.be/en/classified/apartment/for-sale/ixelles/1050/21718631",
    "https://www.immoweb.be/en/classified/house/for-sale/mouscron-herseaux/7712/21722294",
    "https://www.immoweb.be/en/classified/house/for-sale/mouscron/7700/21722292",
    "https://www.immoweb.be/en/classified/villa/for-sale/mouscron-dottignies/7711/21712964",
    "https://www.immoweb.be/en/classified/new-real-estate-project-houses/for-sale/mouscron/7700/21713085"
  ],
  "ignore_url_failures": true
}
```

# 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 = {
    "urls": [
        "https://www.immoweb.be/en/classified/apartment/for-sale/ixelles/1050/21718631",
        "https://www.immoweb.be/en/classified/house/for-sale/mouscron-herseaux/7712/21722294",
        "https://www.immoweb.be/en/classified/house/for-sale/mouscron/7700/21722292",
        "https://www.immoweb.be/en/classified/villa/for-sale/mouscron-dottignies/7711/21712964",
        "https://www.immoweb.be/en/classified/new-real-estate-project-houses/for-sale/mouscron/7700/21713085"
    ],
    "ignore_url_failures": true
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/immoweb-property-details-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 = {
    "urls": [
        "https://www.immoweb.be/en/classified/apartment/for-sale/ixelles/1050/21718631",
        "https://www.immoweb.be/en/classified/house/for-sale/mouscron-herseaux/7712/21722294",
        "https://www.immoweb.be/en/classified/house/for-sale/mouscron/7700/21722292",
        "https://www.immoweb.be/en/classified/villa/for-sale/mouscron-dottignies/7711/21712964",
        "https://www.immoweb.be/en/classified/new-real-estate-project-houses/for-sale/mouscron/7700/21713085",
    ],
    "ignore_url_failures": True,
}

# Run the Actor and wait for it to finish
run = client.actor("alexist/immoweb-property-details-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 '{
  "urls": [
    "https://www.immoweb.be/en/classified/apartment/for-sale/ixelles/1050/21718631",
    "https://www.immoweb.be/en/classified/house/for-sale/mouscron-herseaux/7712/21722294",
    "https://www.immoweb.be/en/classified/house/for-sale/mouscron/7700/21722292",
    "https://www.immoweb.be/en/classified/villa/for-sale/mouscron-dottignies/7711/21712964",
    "https://www.immoweb.be/en/classified/new-real-estate-project-houses/for-sale/mouscron/7700/21713085"
  ],
  "ignore_url_failures": true
}' |
apify call alexist/immoweb-property-details-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/acts/uJdK8fI1eQBjme2Kx/builds/q9MVVIpjUoHEG6MyK/openapi.json
