Immoweb Belgium Real Estate & Agent Contacts Scraper avatar

Immoweb Belgium Real Estate & Agent Contacts Scraper

Pricing

from $25.50 / 1,000 results

Go to Apify Store
Immoweb Belgium Real Estate & Agent Contacts Scraper

Immoweb Belgium Real Estate & Agent Contacts Scraper

Scrape Belgian property listings from Immoweb: price in EUR, for-sale or for-rent, type, bedrooms, bathrooms, surface, EPC energy score, address, postal code, GPS plus the listing agency name and phone. Export to JSON, CSV or Excel.

Pricing

from $25.50 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Share

Immoweb Belgium Real Estate & Agent Contacts Scraper

Immoweb Belgium Real Estate & Agent Contacts Scraper

Here is one real result, with every field the actor returns:

{
"searchLocation": "brussels",
"id": 21727635,
"listingUrl": "https://www.immoweb.be/en/classified/21727635",
"transactionType": "for-sale",
"propertyType": "APARTMENT",
"propertySubtype": "APARTMENT",
"title": "Apartment",
"price": 249000,
"currency": "EUR",
"priceLabel": "€249,000",
"bedrooms": 2,
"bathrooms": 1,
"netHabitableSurface": 73,
"landSurface": null,
"roomCount": null,
"epcScore": "D",
"primaryEnergyConsumptionPerSqm": 157,
"heatingType": "GAS",
"constructionYear": 1978,
"condition": "GOOD",
"hasGarden": null,
"hasTerrace": true,
"address": "Rue Katteput 38",
"locality": "BERCHEM-SAINTE-AGATHE",
"postalCode": "1082",
"province": "Brussels",
"region": "Brussels",
"country": "Belgium",
"latitude": 50.8661292,
"longitude": 4.3066255,
"agencyName": "Cap'Houses",
"agencyType": "AGENCY",
"phone": "+3210872087",
"mobilePhone": null,
"email": "caphouses-jodoigne@omniwebsites.be",
"agencyWebsite": "http://www.caphouses.be",
"agencyIpiNo": "500823",
"source": "immoweb.be",
"observedAt": "2026-07-25T13:27:29.738Z"
}

The most complete Immoweb scraper available. It returns every listing field the property page exposes, from price and EPC energy score to GPS coordinates, plus the listing agency's name, phone, email and IPI number, and gives you location, transaction and bedroom filters to target exactly the properties you need.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches Immoweb for homes and apartments for sale or for rent across the Belgian locations you pass, opens each matching listing, and writes one normalized record per property to the run's dataset. Each record carries the price in euros, property type and subtype, bedrooms, bathrooms, habitable and land surface, EPC energy score and primary energy consumption, heating type, construction year, condition, garden/terrace flags, full address with postal code and GPS coordinates, and the listing agency's name, type, phone, mobile, email, website and IPI number. Missing source values are returned as null.

Data covers Belgium listings only. Optional AI add-ons write an English buyer/renter summary, extract structured features, and translate the French/Dutch description into English. A separate contact-enrichment add-on can look up a public business email and contact name for listings that do not expose one.

Immoweb is fronted by an anti-bot challenge; the actor clears it through a hosted browser solver and stays HTTP-only. Runs are therefore slower than a plain API scraper, and a location can occasionally return no listings when the upstream challenge cannot be cleared within the run window. Re-running usually succeeds.

Quickstart

Open the actor, paste this into the input, and press Run. It returns up to 10 apartments and houses for sale in Brussels and Antwerp.

{
"locations": ["brussels", "antwerp"],
"transactionType": "for-sale",
"maxListings": 10
}

Each location can be a province name (brussels, antwerp, liege, east flanders) or one or more 4-digit postal codes separated by commas (1000, 1050). Every input field is optional; with an empty input the actor searches Brussels for-sale.

Input reference

FieldTypeRequiredDefaultDescription
maxListingsintegerno10Maximum number of listings to collect across all locations in this run (1 to 500).
transactionTypeenumnofor-salefor-sale or for-rent.
locationsstring[]no["brussels"]One or more Belgian locations. Each item is a province name (for example brussels, east flanders) or comma-separated 4-digit postal codes (for example 1000, 1050). One run searches every location.
minBedroomsintegerno(none)Keep only listings with at least this many bedrooms.
withSummarybooleannofalseAI add-on. Writes a concise English buyer/renter summary of each listing. Paid Apify plans only.
withFeaturesbooleannofalseAI add-on. Extracts structured beds/baths/size/amenities/condition tags. Paid Apify plans only.
withTranslatebooleannofalseAI add-on. Translates the French/Dutch description into English. Paid Apify plans only.
enrichContactsbooleannofalsePaid add-on. For each result without an email, attempt to find a public business contact email and person name. Billed per attempt, plus an extra charge only when an email is found.
enrichContactsMaxintegerno50Cap how many results the contact add-on tries to enrich. Free Apify accounts are capped at 3.

Output reference

One dataset item per listing. Types: string, integer, number, boolean, or null when the source value is absent.

FieldTypeDescription
searchLocationstringThe input location that produced this listing.
idintegerImmoweb listing id.
listingUrlstringDirect link to the listing page.
transactionTypestringfor-sale or for-rent.
propertyTypestringProperty type (for example HOUSE, APARTMENT).
propertySubtypestringMore specific property subtype.
titlestringListing title.
descriptionstringListing description text, when present (trimmed to 4000 characters). null if not exposed.
pricenumberPrice in EUR.
currencystringCurrency, EUR when a price is present.
priceLabelstringPrice as displayed (for example €249,000).
bedroomsintegerNumber of bedrooms.
bathroomsintegerNumber of bathrooms.
netHabitableSurfacenumberNet habitable surface in m2.
landSurfacenumberLand surface in m2.
roomCountintegerTotal room count, when exposed.
epcScorestringEPC energy label (for example A, D, G).
primaryEnergyConsumptionPerSqmnumberPrimary energy consumption in kWh/m2/year.
heatingTypestringHeating type (for example GAS).
constructionYearintegerYear of construction.
conditionstringBuilding condition (for example GOOD).
hasGardenbooleanWhether the property has a garden.
hasTerracebooleanWhether the property has a terrace.
addressstringStreet address.
localitystringLocality / municipality.
postalCodestringPostal code.
provincestringProvince.
regionstringRegion.
countrystringCountry. Always Belgium.
latitudenumberLatitude.
longitudenumberLongitude.
agencyNamestringListing agency name.
agencyTypestringAgency type (for example AGENCY).
phonestringAgency phone.
mobilePhonestringAgency mobile.
emailstringAgency email, when exposed.
agencyWebsitestringAgency website.
agencyIpiNostringAgency IPI (professional) number.
aiSummarystringAI English listing summary. null unless withSummary is on.
aiBeds / aiBaths / aiSizeSqftnumberAI-extracted features. null unless withFeatures is on.
aiAmenitiesstring[]AI-extracted amenity tags. null unless withFeatures is on.
aiConditionstringAI-extracted condition. null unless withFeatures is on.
aiDescriptionEnstringAI English translation of the description. null unless withTranslate is on.
sourcestringData source label (immoweb.be).
observedAtstringISO 8601 timestamp of when the record was collected.

Example output record

Real record from a live run (a for-sale house in Woluwe-Saint-Lambert with garden, terrace and EPC score G):

{
"searchLocation": "brussels",
"id": 21708520,
"listingUrl": "https://www.immoweb.be/en/classified/21708520",
"transactionType": "for-sale",
"propertyType": "HOUSE",
"propertySubtype": "HOUSE",
"title": "Exclusivité ABITA : maison avec jardin et beau potentiel",
"price": 695000,
"currency": "EUR",
"priceLabel": "€695,000",
"bedrooms": 4,
"bathrooms": 1,
"netHabitableSurface": 170,
"landSurface": 222,
"roomCount": null,
"epcScore": "G",
"primaryEnergyConsumptionPerSqm": 390,
"heatingType": null,
"constructionYear": 1959,
"condition": "GOOD",
"hasGarden": true,
"hasTerrace": true,
"address": "Avenue des Dix Arpents 44",
"locality": "Woluwe-Saint-Lambert",
"postalCode": "1200",
"province": "Brussels",
"region": "Brussels",
"country": "Belgium",
"latitude": 50.8569579,
"longitude": 4.43934,
"agencyName": "ABITA IMMO",
"agencyType": "AGENCY",
"phone": "+3227268975",
"mobilePhone": null,
"email": "immoabita_woluwe_st_lambert@importfrommedia.be",
"agencyWebsite": "http://www.immoabita.be",
"agencyIpiNo": "500168",
"source": "immoweb.be",
"observedAt": "2026-07-16T04:29:56.684Z"
}

Run via API and CLI

Start a run and wait for it to finish, then read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~immoweb-belgium-realestate-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"locations":["brussels"],"transactionType":"for-sale","maxListings":25}'

Start a run asynchronously:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~immoweb-belgium-realestate-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"locations":["1000, 1050"],"transactionType":"for-rent","minBedrooms":2,"maxListings":100}'

Apify CLI:

apify call scrapers_lat/immoweb-belgium-realestate-scraper \
--input '{"locations":["antwerp"],"maxListings":10}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per listing record returned (result event). See the pricing tab for the current per-result price.
  • AI and contact add-ons bill separately. When on, the ai_listing_summary, ai_features, ai_translate, and contact-enrichment events are charged only when they produce usable output. All are off by default.
  • No charge on failure. Failed or unavailable listings are written untagged and are not charged. Empty runs cost nothing.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 listings per run. Upgrade for higher maxListings.
  • AI add-ons require a paid Apify plan. On a free plan they are disabled for the run.

FAQ and troubleshooting

A run returned "No listings found". Why? Either the filters matched nothing, or the upstream anti-bot challenge could not be cleared within the run window for that location. Re-run, narrow to a specific postal code, or try again shortly. Runs that return no billable listings are not charged.

Can I get properties for rent as well as for sale? Yes. Set transactionType to for-rent.

Does it include the agent's contact details? Yes. When the listing exposes them you get the agency name, type, phone, mobile, email, website and IPI number.

How do I search several places in one run? Pass multiple entries in locations. Each can be a province name or comma-separated postal codes, and the actor searches every one.

Why are some fields null? Not every listing publishes every field. Missing source values are returned as null, never invented.

Is this an official Immoweb tool? No. This actor is independent and has no affiliation with Immoweb. It reads only public listing data. Use the results in accordance with the source's terms.

More scrapers at scrapers.lat

Built and maintained by scrapers.lat, where we publish scrapers for US and Latin American public platforms: company registries, government data, finance, e-commerce and more. Browse the catalog or request a custom scraper at scrapers.lat.


Independent tool, not affiliated with Immoweb. Accesses only publicly available listing data. Use the results in accordance with the source's terms.