Immoweb Scraper: Belgian Property Listings, EPC & Agents
Pricing
from $0.70 / 1,000 listings
Immoweb Scraper: Belgian Property Listings, EPC & Agents
Every Immoweb.be listing in Belgium, for sale or rent, as a clean spreadsheet: price, address, GPS, living area, bedrooms, EPC score, cadastral income, photos and agency contacts. Type a postal code or paste a search. For investors, agencies and market research.
Pricing
from $0.70 / 1,000 listings
Rating
0.0
(0)
Developer
Kamil Ertekin
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
20 hours ago
Last modified
Categories
Share
Get property listings from Immoweb.be, Belgium's main property portal, as one clean row per home: price, address, GPS, living area, bedrooms, EPC energy score, cadastral income, photos and the listing agency. Type a postal code like 9000 and you get every house and apartment for sale in Ghent, ready for Excel, Google Sheets or your CRM.
It's built for investors and analysts pricing a town, agencies watching new listings in their area, relocation teams building shortlists, and researchers who need the whole market rather than a sample.
What you get
Every row has the listing basics. Switch on Include full listing details and each row grows from 50 to 122 columns.
| Field | Example | Notes |
|---|---|---|
url | https://www.immoweb.be/en/classified/apartment/for-sale/gent/9000/21918861 | Link to the listing |
transactionType | FOR_SALE | FOR_SALE or FOR_RENT |
propertyType, propertySubtype | APARTMENT, PENTHOUSE | House, apartment, villa, land, office... |
title | Bright apartment with 2 bedrooms... | As written by the agency. Immoweb cuts most titles at about 60 characters |
price | 449000 | EUR. Monthly rent for rentals. Projects show their lowest unit price |
pricePerSqm | 4490 | EUR per m² of living area (per month for rentals) |
bedroomCount, netHabitableSurface, landSurface | 2, 100, null | Living area and plot in m² |
street, streetNumber, postalCode, locality, province | Henri Dunantlaan, 22, 9000, Gent, East Flanders | Number always in its own column |
latitude, longitude | 51.0513346, 3.6994978 | Missing when the agency hides the address |
agencyName | Kleyo | The advertiser |
pictures, pictureCount | 4 preview photos | Every photo with full details |
lastModificationDate | 2026-10-16T06:02:01.770Z | ISO 8601, UTC |
epcScore, primaryEnergyConsumptionPerSqm | B, 101 | Full details. Energy label A++ to G, kWh/m² per year |
constructionYear, buildingCondition, facadeCount | 2013, AS_NEW, 3 | Full details. 4 facades means detached |
cadastralIncome, floodZoneType, monthlyCosts | 1086, NON_FLOOD_ZONE, null | Full details |
bathroomCount, heatingType, kitchenType | 1, GAS, INSTALLED | Full details |
hasLift, hasTerrace, hasGarden and 22 more | true | Full details. null means the agency didn't say |
agencyPhone, agencyEmail, agencyWebsite, agencyIpiNumber | +3292252524, info@agency.be | Full details. agencyEmail is only ever the agency's own address |
agencyLeadEmail | 200484@secure.fortissimmo.net | Full details. Lead-form inbox, kept apart from the agency's own email |
description, creationDate, viewCount | full text, 2026-10-16T06:01:57.821Z, 624 | Full details |
daysOnMarket | 13 | Full details. Whole days since the listing went online |
floorPlanUrls, virtualTourUrl | PDF links, https://youtu.be/… | Full details. Only when the agency added them. Floor plans are rare: 1 listing in 17 in our check |
monitorStatus, changedFields | changed, ["price"] | Daily feed only. new, changed or removed, and which columns changed |
isProject, projectName, priceMin, priceMax, bedroomRange | true, Dungelpark, 287500, 691500, 1 - 3 | New-build developments. Unit counts with full details |
How often fields are filled, measured on real runs: street and GPS 98%, bedrooms 96%, EPC score 96%, construction year 90%, agency phone 88%, flood zone 87%, cadastral income 53%.
How to use it
- Type one or more places into Places to search: a postal code (
9000), a province (Antwerp) or a larger town (Leuven). Or paste a search link from immoweb.be into Immoweb links. - Pick For sale or for rent, a Property type, and set Maximum results. That number also caps what you pay.
- Click Start. A 100-row run finishes in under 10 seconds. Download the results as CSV, Excel or JSON.
This input works as-is:
{"locations": ["9000"],"listingType": "forSale","propertyType": "apartment","maxPrice": 400000,"maxItems": 100}
Postal codes for the big cities
| City | Postal code | City | Postal code | |
|---|---|---|---|---|
| Brussels centre | 1000 | Ghent | 9000 | |
| Ixelles | 1050 | Leuven | 3000 | |
| Uccle | 1180 | Bruges | 8000 | |
| Antwerp city | 2000 | Liège city | 4000 | |
| Mechelen | 2800 | Namur city | 5000 | |
| Hasselt | 3500 | Charleroi | 6000 |
Typing "Antwerp", "Liège" or "Namur" searches the whole province. Use the postal code for the city only.
Input reference
| Field | What it does |
|---|---|
Places to search (locations) | Postal codes, provinces or larger towns. All searches the whole of Belgium. |
Immoweb links (startUrls) | Search or listing links from immoweb.be, in English, French or Dutch. Filters in the link are kept. |
For sale or for rent (listingType) | forSale or forRent. Used for places; a link keeps its own choice. |
Property type (propertyType) | House and apartment, house, apartment, villa, kot, land, office and more. |
Maximum results (maxItems) | Stops the run after this many listings. 0 means no limit. API callers can send limit or maxResults instead. |
Include full listing details (scrapeDetails) | Adds EPC, condition, cadastral income, agency contacts and every photo. |
| Filters | Price, bedrooms, living area, plot size, construction year, EPC labels, condition, sub-types and must-haves like a garden or a lift. |
Published or updated within (modifiedWithinDays) | Only listings put online or updated in the last this many days. A new listing always counts. |
Only new or changed listings (onlyNewSinceLastRun) | For scheduled runs. Returns only what's new or changed since the last run, says what changed, and lists listings that have left your search. |
Output example
One row with full details, trimmed:
{"id": 21918861,"url": "https://www.immoweb.be/en/classified/apartment/for-sale/gent/9000/21918861","transactionType": "FOR_SALE","propertyType": "APARTMENT","title": "Bright apartment with 2 bedrooms and 2 parking spaces for sale in Gent","price": 449000,"pricePerSqm": 4490,"bedroomCount": 2,"bathroomCount": 1,"netHabitableSurface": 100,"street": "Henri Dunantlaan","streetNumber": "22","postalCode": "9000","locality": "Gent","province": "East Flanders","latitude": 51.0513346,"longitude": 3.6994978,"epcScore": "B","primaryEnergyConsumptionPerSqm": 101,"constructionYear": 2013,"buildingCondition": "AS_NEW","cadastralIncome": 1086,"floodZoneType": "NON_FLOOD_ZONE","hasLift": true,"agencyName": "Kleyo","agencyEmail": null,"agencyLeadEmail": "inbound-automation@kleyo.be","agencyIpiNumber": "800115","pictureCount": 25,"creationDate": "2026-10-16T06:01:57.821Z","viewCount": 624}
Pricing
You pay per listing delivered. There's no start fee.
| Apify plan | Listing / 1,000 | Listing with full details / 1,000 |
|---|---|---|
| Free | $1.00 | $1.80 |
| Starter (Bronze) | $0.90 | $1.60 |
| Scale (Silver) | $0.80 | $1.40 |
| Business (Gold) and higher | $0.70 | $1.20 |
A row with full details is charged once, at the full-details price, not on top of the listing price.
Example: all 1,162 houses and apartments for sale in Ghent (9000) with full details cost about $2.09 on the Free plan, or about $1.39 on the Business plan. The same search without details costs about $1.16.
Not charged: duplicates, listings that were removed, places Immoweb doesn't know, listings outside your date window, and in a daily feed, unchanged listings and the rows that report a removed listing.
FAQ
How fresh is the data? Every run reads Immoweb live, so you get what's online at that moment. Schedule the run daily or hourly to keep a sheet up to date.
Can I get the newest listings first? Results come in Immoweb's own order, which isn't by date. To get only recent listings, set Published or updated within, for example to 7 days. For a running list of what's new, schedule a daily feed with Only new or changed listings.
How does the daily feed show what changed? Each row has monitorStatus: new for a listing the feed hasn't seen before, changed when its price, title, bedrooms, surface or project sales moved, with the changed columns named in changedFields (for example ["price"]). A listing that has left your search (sold, withdrawn, or no longer matching your filters) comes back once as a removed row with its link, free of charge. Removed listings are reported when the run reads the whole search, so set Maximum results above the number of matches, or to 0. They show up from the second run on.
Why do I get fewer rows than Immoweb shows? The same home is often listed by several agencies. Those copies are merged into one row so you don't pay five times for one villa. Turn off Merge duplicate listings under More options to get every listing.
Can I get more than 10,000 results? Yes. Immoweb shows at most about 10,000 results per search, but this scraper still returns every match. All of Belgium for sale is over 86,000 listings.
Why is agencyEmail empty when the agency clearly has an inbox? Many agencies publish a lead-form address first. That one goes into agencyLeadEmail, so agencyEmail only ever holds the agency's own address. For a full list of agencies with their own emails, VAT and IPI numbers, use the companion Immoweb Agency Scraper.
What do EPC, cadastral income and IPI mean? EPC (PEB in Brussels and Wallonia) is the energy label, A++ best to G worst. Cadastral income (KI or RC) is the notional rent used for property tax. IPI (BIV in Dutch) is the Belgian estate-agent licence number.
Can I run it on a schedule or connect it to other tools? Yes. Use Apify schedules for a daily feed, and Apify's integrations to send results to Google Sheets, Make, Zapier, n8n, Slack or a webhook. You can also fetch results from your own code through the Apify API.
Limits
- Belgian listings on Immoweb only, for sale or for rent. Immoweb doesn't publish sold prices.
- Some agencies hide the exact address. Those rows have the postal code and town but no street or GPS.
- Titles are cut by Immoweb itself at about 60 characters. The full text is in
description(full details). - A town name alone works for the larger towns listed in the input help. For anywhere else, use the 4-digit postal code.
- New-build projects have a price range (
priceMintopriceMax) rather than one price. Switch on One row per new-build unit for a row per flat. - Private sellers' personal contact details are not included. You're responsible for using agency contact data in line with GDPR.
Missing a field? Open an issue on the Issues tab.