Funda.nl Real Estate Scraper
Pricing
from $3.00 / 1,000 property listing scrapeds
Funda.nl Real Estate Scraper
Scrape property listings from Funda.nl, the Netherlands' #1 real estate portal. Extract prices, addresses, photos, property details, energy labels, and agent contact info for buy and rent listings.
Pricing
from $3.00 / 1,000 property listing scrapeds
Rating
0.0
(0)
Developer
NanoScrape
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
9 days ago
Last modified
Categories
Share
Get property listings from Funda, the Netherlands' #1 real estate portal, for both buy (koop) and rent (huur) searches in any Dutch city or area. Prices, addresses, living area, rooms, bedrooms, energy label, listing agent and photos, newest listings first. Pay only for the results you get.
How it works
The actor reads Funda's own search index, the same JSON API that powers the listings on funda.nl. It does not open any funda.nl web page, so there is no browser, no HTML parsing and no CAPTCHA to solve. Each request returns 15 listings, the actor pages through them newest first until it reaches maxResults, removes duplicates and pushes every page to the dataset as soon as it is fetched. It uses a browser-like TLS fingerprint, a polite 1-2 second pace and manages its own proxy (datacenter first, residential Dutch IPs if Funda pushes back). It runs in 128 MB of memory.
If Funda blocks every attempt, the run ends FAILED with a clear status message instead of an empty "success". If Funda changes its search API, the run also fails with a message saying so rather than returning nothing.
What you get and what you do not. Results come from Funda's search index. Detail-page fields (full description, the complete photo gallery, GPS coordinates, year built, heating, bathrooms, agent phone/email) are not included and are returned as
null. TheincludeDetailsinput is kept only for compatibility and is ignored.
Features
- Buy and rent:
/zoeken/koopand/zoeken/huursearches - Search URL or city name: paste a Funda search URL or just type
amsterdam,rotterdam,utrecht,den-haag, ... - Several areas in one URL:
selected_area=["amsterdam","utrecht"]works - Newest first: results are ordered by publication date, ideal for daily monitoring
- Dedup: every listing ID is returned once, across pages and across several search URLs
- Fast and light: plain HTTP, 128 MB memory, roughly 1-2 seconds per 15 listings
- Pay per result: only pay for listings actually delivered
Use with AI Agents (MCP)
Connect this actor to any MCP-compatible AI client — Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.
Apify MCP server URL:
https://mcp.apify.com?tools=santamaria-automations/funda-nl-scraper
Example prompt once connected:
"Use
funda-nl-scraperto scrape property listings from funda nl. Return results as a table."
Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically via add-actor.
Output Fields
Every result includes these fields:
| Field | Type | Description |
|---|---|---|
property_image_url | string | Primary listing photo (displayed as image thumbnail in the Apify console) |
id | string | Unique Funda listing ID |
title | string | Listing title (usually the street address) |
url | string | Canonical Funda detail URL |
listing_type | string | koop (buy) or huur (rent) |
price | number | Asking price (EUR) or monthly rent (EUR) |
price_currency | string | Always EUR |
price_original | number | Original asking price if the listing has been reduced |
price_per_m2 | number | Price per square meter of living area |
address | string | Full formatted address |
street | string | Street and house number |
city | string | City name |
postal_code | string | Dutch postal code, e.g. 1017 DM |
neighborhood | string | Official Funda neighborhood, e.g. Jordaan, Spiegelbuurt |
province | string | Dutch province, e.g. Noord-Holland |
country | string | Always NL |
latitude | number | WGS84 latitude |
longitude | number | WGS84 longitude |
property_type | string | apartment, house, villa, bungalow, parking, land |
bedrooms | number | Number of bedrooms |
rooms | number | Total number of rooms |
bathrooms | number | Number of bathrooms |
living_area_m2 | number | Living area in square meters |
plot_size_m2 | number | Plot size in square meters (houses only) |
year_built | number | Construction year |
energy_label | string | Dutch energy label: A+++++, A++++, A+++, A++, A+, A, B, C, D, E, F, G |
heating_type | string | Heating system, e.g. Cv-ketel, Stadsverwarming, Warmtepomp |
construction_type | string | Bestaande bouw (existing) or Nieuwbouw (new build) |
description | string | Full Dutch listing description (plain text, typically 3,000-6,000 chars) |
features | string[] | Amenity tags (balcony, garden, parking, insulation level, ...) |
photos | string[] | All listing photo URLs in original order (full resolution) |
agent_name | string | Listing agent / agency name (when visible on SERP) |
agent_phone | string | Agent phone number (when available — see note below) |
agent_email | string | Agent email address (when available — see note below) |
agent_url | string | Agent profile page URL |
listed_since | string | Date the listing was first published |
source_url | string | Original Funda detail URL |
source_platform | string | Always funda.nl |
scraped_at | string | ISO-8601 UTC timestamp |
Note on agent contact details: Funda hides agent phone and email behind a "Log in om te bekijken" wall for unauthenticated visitors.
agent_nameandagent_urlare extracted from the listing card when present.agent_phone/agent_emailare populated only when the listing exposes them publicly.
Real Output Example
{"property_image_url": "https://cloud.funda.nl/valentina_media/227/009/834.jpg","id": "43300313","title": "Aldengoor 2","url": "https://www.funda.nl/detail/koop/amsterdam/huis-aldengoor-2/43300313/","listing_type": "koop","price": 3400000,"price_currency": "EUR","price_per_m2": 9341,"address": "Aldengoor 2, 1083 AK Amsterdam","street": "Aldengoor 2","city": "Amsterdam","postal_code": "1083 AK","neighborhood": "Buitenveldert-Zuidoost","province": "Noord-Holland","country": "NL","latitude": 52.32434,"longitude": 4.885988,"property_type": "house","bedrooms": 7,"rooms": 9,"bathrooms": 5,"living_area_m2": 364,"plot_size_m2": 689,"year_built": 1964,"energy_label": "A+","heating_type": "Cv-ketel, open haard, gedeeltelijke vloerverwarming en warmtepomp","construction_type": "Bestaande bouw","description": "Luxe, royaal en exclusief zijn de drie kernwoorden die deze vrijstaande villa van 364m² het beste omschrijven. Deze moderne villa beschikt over een riante voor-, zij- en achtertuin inclusief een verwarmd zwembad...","features": ["Soort woonhuis: Villa, vrijstaande woning","Soort dak: Plat dak","Isolatie: Volledig geïsoleerd","Tuin: Achtertuin, voortuin en zijtuin","Balkon/dakterras: Dakterras aanwezig en balkon aanwezig","Soort garage: Parkeerplaats en vrijstaande stenen garage"],"photos": ["https://cloud.funda.nl/valentina_media/227/009/834.jpg","https://cloud.funda.nl/valentina_media/227/009/921.jpg","https://cloud.funda.nl/valentina_media/227/009/836.jpg","... 55 more photos"],"agent_name": "CSV Makelaars B.V.","agent_url": "https://www.funda.nl/makelaar/24635-csv-makelaars-bv/","listed_since": "2026-04-09T00:00:00Z","source_url": "https://www.funda.nl/detail/koop/amsterdam/huis-aldengoor-2/43300313/","source_platform": "funda.nl","scraped_at": "2026-04-10T10:18:12Z"}
Input Parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
searchUrls | string[] | One or more Funda search URLs. Example: https://www.funda.nl/zoeken/koop?selected_area=%5B%22amsterdam%22%5D | — |
city | string | Alternative: Dutch city slug. amsterdam, rotterdam, utrecht, den-haag, eindhoven, groningen, ... Used when searchUrls is empty. | — |
listingType | string | koop (buy) or huur (rent). Only used together with city. | koop |
maxResults | number | Maximum listings to return across all pages | 100 |
includeDetails | boolean | Fetch detail pages for full descriptions, all photos, coordinates, neighborhood, year built, heating, rooms, and more | true |
Either searchUrls or city must be provided. searchUrls takes precedence and lets you use Funda's advanced filters (price range, area, rooms, energy label, …).
Example: Amsterdam apartments under €500K, minimum 2 rooms
{"searchUrls": ["https://www.funda.nl/zoeken/koop?selected_area=%5B%22amsterdam%22%5D&price=%22-500000%22&object_type=%5B%22apartment%22%5D&rooms=%222-%22"],"maxResults": 300,"includeDetails": true}
Example: Rental listings in Rotterdam (cheap mode — no details)
{"city": "rotterdam","listingType": "huur","maxResults": 500,"includeDetails": false}
Output Fields
| Field | Type | Description |
|---|---|---|
property_image_url | string | First photo URL |
id | string | Funda listing ID (as in the listing URL) |
title | string | Street and house number |
url | string | Funda listing page URL |
listing_type | string | koop (buy) or huur (rent) |
price | number | Asking price (buy) or monthly rent (rent) in EUR |
price_currency | string | Always EUR |
price_per_m2 | number | Asking price / living area (buy listings only) |
address | string | Street, house number, postal code and city |
street | string | Street and house number |
city | string | City |
postal_code | string | Dutch postal code, e.g. 1078 VR |
neighborhood | string | Neighbourhood |
province | string | Province |
country | string | Always NL |
property_type | string | Funda object type, e.g. apartment, house |
bedrooms | number | Number of bedrooms |
rooms | number | Total number of rooms |
living_area_m2 | number | Living area in m2 |
plot_size_m2 | number | Plot size in m2 (houses, when listed) |
energy_label | string | Energy label when Funda lists one |
construction_type | string | Bestaande bouw or Nieuwbouw |
promo_text | string | The agent's short promo headline |
photos | string[] | Photo URLs built from Funda's image IDs (may be limited by Funda's hotlink protection) |
agent_name | string | Listing agent / agency |
agent_url | string | Agent profile page on Funda |
listed_since | string | Publication timestamp (ISO 8601) |
source_url | string | The Funda search URL the listing came from |
source_platform | string | Always funda.nl |
scraped_at | string | ISO-8601 UTC timestamp |
Always null (only available on detail pages, which are not fetched): description, features, latitude, longitude, year_built, heating_type, bathrooms, price_original, agent_phone, agent_email.
Real Output Example
{"property_image_url": "https://cloud.funda.nl/tiara-media/e3dc8d11-0f6c-4b63-9043-245083161a04/6f236d81-923d-4022-a171-9cccdb567b45","id": "44547524","title": "Dintelstraat 61-H","url": "https://www.funda.nl/detail/koop/amsterdam/appartement-dintelstraat-61-h/44547524/","listing_type": "koop","price": 675000,"price_currency": "EUR","price_per_m2": 8654,"address": "Dintelstraat 61-H, 1078 VR Amsterdam","street": "Dintelstraat 61-H","city": "Amsterdam","postal_code": "1078 VR","neighborhood": "Scheldebuurt-West","province": "Noord-Holland","country": "NL","property_type": "apartment","bedrooms": 2,"rooms": 3,"living_area_m2": 78,"energy_label": "D","construction_type": "Bestaande bouw","promo_text": "Licht 3-kamerappartement van ca. 78 m2, gelegen in de Scheldebuurt!","agent_name": "JA! Makelaardij","agent_url": "https://www.funda.nl/makelaar/24584-ja-makelaardij/","listed_since": "2026-10-15T12:41:38.4697842+02:00","source_url": "https://www.funda.nl/zoeken/koop?selected_area=%5B%22amsterdam%22%5D","source_platform": "funda.nl","scraped_at": "2026-10-15T10:48:53Z"}
Input Parameters
| Parameter | Type | Description | Default |
|---|---|---|---|
searchUrls | string[] | Funda search URLs. The area (selected_area) and buy/rent (/zoeken/koop, /zoeken/huur) are read from the URL. | none |
city | string | City or area slug, used when searchUrls is empty | amsterdam |
listingType | string | koop or huur; used with city and for URLs without /zoeken/koop or /zoeken/huur | koop |
maxResults | number | Maximum listings across all searches | 20 |
includeDetails | boolean | No longer supported, ignored | false |
An empty input {} returns the 20 newest Amsterdam listings for sale.
URL filters. The area and buy/rent choice are applied by Funda itself. Other filters in a pasted URL (price, rooms, bedrooms, floor_area, object_type) are applied by the actor to the fetched results, newest first. With such filters the actor scans up to about 900 listings, so a very narrow filter on a big area may return fewer than maxResults. Other Funda URL filters are ignored.
Example: newest rentals in Utrecht
{"city": "utrecht","listingType": "huur","maxResults": 100}
Example: Amsterdam apartments under 500K
{"searchUrls": ["https://www.funda.nl/zoeken/koop?selected_area=%5B%22amsterdam%22%5D&price=%22-500000%22&object_type=%5B%22apartment%22%5D"],"maxResults": 100}
Use Cases
- Dutch real estate market analysis — Track asking prices, time-on-market, and inventory trends across all Dutch cities
- Amsterdam / Rotterdam / Utrecht investment research — Find undervalued properties in high-growth neighborhoods
- Rental yield calculation — Compare buy (koop) vs rent (huur) prices on the same streets to compute cap rates
- Neighborhood price heatmaps — Compare
price_per_m2byneighborhoodand postal code - Lead generation for makelaars — Target agents based on listing volume and pricing tier
- PropTech data pipelines — Feed clean, structured JSON into BI tools, data warehouses, or ML models
- Historical price tracking — Run daily to record price reductions and detect distressed sales
- Relocation and expat tools — Aggregate listings filtered by school, transport, or amenity preferences
- Competitive benchmarking — Compare your listings against the full Funda market
Pricing
Pay per result: $0.003 per listing, plus a one-time $0.001 start fee per run. A 100-listing run costs about $0.30. You are not charged for listings you do not receive.
Why This Scraper
- API, not page scraping: reads Funda's search index directly, so it is not affected by the CAPTCHA on funda.nl pages
- Honest failures: blocked or changed API means a FAILED run with a clear message, never a silent empty result
- No monthly rental: pay only when you run it
- No proxy setup: the actor manages its own proxy
Issues & Feedback
Facing an issue, or missing a feature or data field? Open an issue on the Issues tab — we respond quickly and ship fixes regularly.
Related Actors
If you scrape Dutch / European real estate, you may also want:
- Immoweb.be Scraper — Belgium's #1 real estate portal (EN/FR/NL)
- Homegate.ch Scraper — Switzerland's leading real estate portal
- ImmobilienScout24 Scraper — Germany's #1 real estate portal
- Immowelt.de Scraper — Germany's #2 real estate portal
- AutoScout24 Scraper — European used car marketplace
- Google Maps Scraper — Local business intelligence
- Website Contact Extractor — Enrich any website with contact data
Or browse all santamaria-automations actors for the full DACH + European scraping suite.