Immoweb Scraper - Belgium Real Estate & Agency Leads
Pricing
from $4.00 / 1,000 listing scrapeds
Immoweb Scraper - Belgium Real Estate & Agency Leads
Scrape Immoweb.be, Belgium's #1 real estate portal: houses & apartments for sale and rent with prices, EPC energy score, full specs, all photos, geo and agency leads (email, phone & website). Filter by postal code, province, price & type. Monitor new listings. Export JSON, CSV.
Pricing
from $4.00 / 1,000 listing scrapeds
Rating
0.0
(0)
Developer
Scrape Sage
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Immoweb Scraper — Belgium Real Estate, Prices & Agency Leads
Extract complete real estate data from Immoweb — Belgium's #1 property portal. Scrape houses and apartments for sale and for rent with the fields other scrapers miss: EPC energy score and consumption, cadastral income, construction year & condition, every amenity, full floor plans, view & bookmark counts — plus the agency's direct email, phone and website on every listing.
No login, no cookies, no browser — fast extraction straight from Immoweb's own keyless JSON API.
Why this Immoweb scraper?
Most Immoweb scrapers return a thin slice of the search card and stop there. This actor reads Immoweb's internal search API and the full classified detail object, and ships the richest dataset in the category — every spec, the energy certificate, and the agency contact details nobody else extracts.
| Data | Typical scrapers | This actor |
|---|---|---|
| Price + old price (price drops), €/m² | partial | ✅ |
| Full address (street, number, box, postal code) + geo | partial | ✅ |
| Bedrooms, bathrooms, surface, land, room count | partial | ✅ |
| EPC energy score + consumption + carbon emission | ❌ | ✅ |
| Cadastral income, monthly costs, VAT, furnished | ❌ | ✅ |
| Construction year, building condition, facades, floors | ❌ | ✅ |
| Every amenity — garden, terrace, parking, lift, pool, AC… | ❌ | ✅ |
| Full photo gallery + floor plans + virtual tour/video | partial | ✅ |
| View count + bookmark count (demand signal) | ❌ | ✅ |
| For sale and for rent, all property types | partial | ✅ |
| Agency direct email + phone + website | ❌ | ✅ opt-in |
| Deduplicated agency leads with 0–100 lead score | ❌ | ✅ opt-in |
| New-listing / price-drop monitoring | ❌ | ✅ |
Use cases
- Lead generation — every listing carries an estate agency. Export deduplicated agencies with direct email, phone, mobile and website, active-listing count, areas and price range, scored 0–100 — perfect for proptech, mortgage, insurance, moving, photography, staging and SaaS sales teams.
- Market & price intelligence — track asking prices, €/m², EPC ratings, days-on-market signals (view/bookmark counts) and inventory across Brussels, Antwerp, Ghent, Liège and every Belgian postal code.
- Property valuation & comps — pull full attributes, cadastral income and energy data for any area to power AVMs, CMAs and investor underwriting.
- Relocation & investment research — feed apps and dashboards with structured listings + geo for international buyers, expats and relocation services.
- Monitoring & alerts — schedule recurring runs to capture only new listings and price drops in a saved search.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the Immoweb Scraper, enter Belgian postal codes or provinces (or paste Immoweb URLs), choose For sale / For rent, and click Start.
- Watch results stream into the dataset table.
- Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.
Input
{"transactionType": "for-sale","propertyType": "house-and-apartment","postalCodes": ["1000", "2000"],"priceMax": 600000,"minBedrooms": 2,"includeListingDetails": true,"outputAgencyLeads": true,"maxResults": 500,"monitorMode": false}
- transactionType (default
for-sale) —for-saleorfor-rent. - propertyType (default
house-and-apartment) —house,apartment,new-real-estate,land,office, and more. - postalCodes — Belgian postal codes (
1000Brussels,2000Antwerp,9000Ghent,4000Liège). provinces — search whole provinces instead. - startUrls — paste any Immoweb URL: a search page (
/en/search/house/for-sale/...) or a listing (/en/classified/...). The easiest way to scrape an exact search — build it on immoweb.be with the filters you want, then paste the URL. - listingUrls — direct
/classified/URLs to fetch full detail for. - priceMin / priceMax / minBedrooms / maxBedrooms / minSurface / maxSurface / orderBy — filters.
- includeListingDetails (default false) — open each listing for the full description, every spec (EPC energy score, cadastral income, construction year, condition, heating, kitchen, all amenities), the complete gallery & floor plans, view/bookmark counts, and the agency's direct email, phone & website.
- outputAgencyLeads (default false) — also output one deduplicated lead record per agency. Implies full listing details.
- maxResults / maxAgencyLeads / maxPagesPerSearch — caps.
- monitorMode (default false) + monitorKey — emit only what's new since the last run.
Output
One record per listing (type: "listing"), plus optional agency leads (type: "agencyLead"). A listing with details enabled:
{"type": "listing","listingId": "21648089","url": "https://www.immoweb.be/en/classified/apartment/for-sale/woluwe-saint-lambert/1200/21648089","transactionType": "for-sale","propertyType": "APARTMENT","propertySubtype": "GROUND_FLOOR","title": "Ground-floor 3-bed with private garden","price": 549000,"oldPrice": null,"currency": "EUR","cadastralIncome": 2307,"monthlyCosts": 300,"bedroomCount": 3,"bathroomCount": 2,"netHabitableSurface": 121,"constructionYear": 2015,"buildingCondition": "AS_NEW","epcScore": "B","primaryEnergyConsumptionPerSqm": 77,"carbonEmission": 15,"heatingType": "GAS","kitchenType": "HYPER_EQUIPPED","hasTerrace": true,"hasGarden": true,"locality": "Woluwe-Saint-Lambert","postalCode": "1200","street": "Rue Vervloesem","streetNumber": "152","latitude": 50.848324,"longitude": 4.4295851,"viewCount": 2309,"bookmarkCount": 77,"imageCount": 26,"images": ["https://media-resize.immowebstatic.be/.../736x736/....jpg"],"agencyName": "ABITA IMMO","agencyEmail": "immoabita_woluwe@...","agencyPhone": "+3227268975","agencyWebsite": "http://www.immoabita.be","scrapedAt": "2026-06-19T03:00:00.000Z"}
An agency lead (type: "agencyLead") carries agencyName, agencyEmail, agencyPhone, agencyMobile, agencyWebsite, agencyAddress, activeListingCount, localities, propertyTypes, minPrice/maxPrice, sampleListings and a leadScore.
What to expect (field coverage)
Immoweb is agency-entered data, so a few fields appear only when the agency filled them in. Verified across areas, you can typically expect:
| Entity | Always present | Usually present | Present when published |
|---|---|---|---|
| Listing | id, url, transaction, type, price, locality, postal code, geo, agency name | bedrooms, surface, images ~98%, street ~90% | EPC, cadastral income, construction year, amenities (with details on) |
| Agency lead | name, active-listing count | phone & website ~90%, email ~85% | mobile, full address |
A blank field means it wasn't published for that listing — never that scraping failed. Nothing is dropped, so you always get the richest dataset available.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it hourly/daily to monitor new listings and price drops in an area; perfect for alerts and lead pipelines.
- Webhooks — trigger downstream actions (CRM import, Slack alert, valuation model) the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/immoweb-scraper').call({transactionType: 'for-sale',postalCodes: ['1000', '2000'],includeListingDetails: true,outputAgencyLeads: true,maxResults: 500,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} listings & agency leads`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new agency leads straight into your CRM.
- Slack — get notified when a monitored search finds new listings.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find 3-bedroom houses under 600k in Ghent and list the agencies' contact details" and let it run this scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Build a complete real estate & lead-gen stack across markets:
- Rightmove Scraper — UK's #1 property portal: listings, prices & agents.
- Redfin Scraper — US homes for sale with prices, specs & history.
- Realtor.ca Scraper — Canada real estate listings & agent leads.
- Crexi Scraper — US commercial real estate & broker leads.
- Rent.com Scraper — US rentals with property-management leads.
- Property Finder Scraper — UAE / GCC real estate & agent contacts.
- Kleinanzeigen Scraper — Germany's #1 classifieds incl. property & seller leads.
- Gumtree Scraper — UK classifieds incl. property & seller leads.
Tips
- Agency leads — turn on
outputAgencyLeadsto get one deduplicated, scored lead per agency with direct email, phone and website. It opens one page per listing, so it's richer but a bit slower. - EPC & energy — every detailed record carries the energy score, consumption and carbon emission — increasingly required for Belgian property analysis and renovation targeting.
- Exact searches — build the search on immoweb.be with all the filters you want and paste the URL into
startUrls; the actor reads its JSON API and paginates it. - Big regions: search is paged 30 listings at a time. To exhaust a large area, split by postal code or province and/or narrow with price and type filters.
- Recurring monitoring: combine Schedules with
monitorModeto capture only new listings and price drops.
FAQ
How do I scrape Immoweb for a specific city? Put its Belgian postal codes in postalCodes (1000 Brussels, 2000 Antwerp, 9000 Ghent), or pick provinces. You can also paste a ready-made search URL into startUrls.
Can I scrape rentals? Yes — set transactionType to for-rent. The price field is then the monthly rent.
Does it work without the Immoweb API key? Yes. This actor reads Immoweb's own public search API and listing pages — no key or login needed.
Where do the agency emails and phones come from? From each listing's own public agency section on Immoweb, where the listing agency publishes its contact details. Turn on includeListingDetails or outputAgencyLeads to capture them.
Can I export to Google Sheets, CSV, or Excel? Yes — one click in the dataset view, or automatically on every run via the Google Drive integration.
How do I monitor new listings or price drops automatically? Turn on monitorMode, give the search a monitorKey, and create a Schedule. Each run emits only new listings and price changes — then optionally push them to your CRM via webhook or Zapier.
A field is empty — why? Some listings don't publish an EPC score, cadastral income, photos or every amenity. Fields are blank only when the agency didn't publish that data — never because the scraper skipped it.
Is scraping Immoweb legal? This actor collects publicly available data only. You're responsible for using the data in compliance with applicable laws (GDPR for personal data such as agency contacts) and Immoweb's terms.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.