Funda.nl Real Estate Scraper avatar

Funda.nl Real Estate Scraper

Pricing

from $3.00 / 1,000 property listing scrapeds

Go to Apify Store
Funda.nl Real Estate Scraper

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

NanoScrape

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

9 days ago

Last modified

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. The includeDetails input is kept only for compatibility and is ignored.

Features

  • Buy and rent: /zoeken/koop and /zoeken/huur searches
  • 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-scraper to 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:

FieldTypeDescription
property_image_urlstringPrimary listing photo (displayed as image thumbnail in the Apify console)
idstringUnique Funda listing ID
titlestringListing title (usually the street address)
urlstringCanonical Funda detail URL
listing_typestringkoop (buy) or huur (rent)
pricenumberAsking price (EUR) or monthly rent (EUR)
price_currencystringAlways EUR
price_originalnumberOriginal asking price if the listing has been reduced
price_per_m2numberPrice per square meter of living area
addressstringFull formatted address
streetstringStreet and house number
citystringCity name
postal_codestringDutch postal code, e.g. 1017 DM
neighborhoodstringOfficial Funda neighborhood, e.g. Jordaan, Spiegelbuurt
provincestringDutch province, e.g. Noord-Holland
countrystringAlways NL
latitudenumberWGS84 latitude
longitudenumberWGS84 longitude
property_typestringapartment, house, villa, bungalow, parking, land
bedroomsnumberNumber of bedrooms
roomsnumberTotal number of rooms
bathroomsnumberNumber of bathrooms
living_area_m2numberLiving area in square meters
plot_size_m2numberPlot size in square meters (houses only)
year_builtnumberConstruction year
energy_labelstringDutch energy label: A+++++, A++++, A+++, A++, A+, A, B, C, D, E, F, G
heating_typestringHeating system, e.g. Cv-ketel, Stadsverwarming, Warmtepomp
construction_typestringBestaande bouw (existing) or Nieuwbouw (new build)
descriptionstringFull Dutch listing description (plain text, typically 3,000-6,000 chars)
featuresstring[]Amenity tags (balcony, garden, parking, insulation level, ...)
photosstring[]All listing photo URLs in original order (full resolution)
agent_namestringListing agent / agency name (when visible on SERP)
agent_phonestringAgent phone number (when available — see note below)
agent_emailstringAgent email address (when available — see note below)
agent_urlstringAgent profile page URL
listed_sincestringDate the listing was first published
source_urlstringOriginal Funda detail URL
source_platformstringAlways funda.nl
scraped_atstringISO-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_name and agent_url are extracted from the listing card when present. agent_phone / agent_email are 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

ParameterTypeDescriptionDefault
searchUrlsstring[]One or more Funda search URLs. Example: https://www.funda.nl/zoeken/koop?selected_area=%5B%22amsterdam%22%5D—
citystringAlternative: Dutch city slug. amsterdam, rotterdam, utrecht, den-haag, eindhoven, groningen, ... Used when searchUrls is empty.—
listingTypestringkoop (buy) or huur (rent). Only used together with city.koop
maxResultsnumberMaximum listings to return across all pages100
includeDetailsbooleanFetch detail pages for full descriptions, all photos, coordinates, neighborhood, year built, heating, rooms, and moretrue

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

FieldTypeDescription
property_image_urlstringFirst photo URL
idstringFunda listing ID (as in the listing URL)
titlestringStreet and house number
urlstringFunda listing page URL
listing_typestringkoop (buy) or huur (rent)
pricenumberAsking price (buy) or monthly rent (rent) in EUR
price_currencystringAlways EUR
price_per_m2numberAsking price / living area (buy listings only)
addressstringStreet, house number, postal code and city
streetstringStreet and house number
citystringCity
postal_codestringDutch postal code, e.g. 1078 VR
neighborhoodstringNeighbourhood
provincestringProvince
countrystringAlways NL
property_typestringFunda object type, e.g. apartment, house
bedroomsnumberNumber of bedrooms
roomsnumberTotal number of rooms
living_area_m2numberLiving area in m2
plot_size_m2numberPlot size in m2 (houses, when listed)
energy_labelstringEnergy label when Funda lists one
construction_typestringBestaande bouw or Nieuwbouw
promo_textstringThe agent's short promo headline
photosstring[]Photo URLs built from Funda's image IDs (may be limited by Funda's hotlink protection)
agent_namestringListing agent / agency
agent_urlstringAgent profile page on Funda
listed_sincestringPublication timestamp (ISO 8601)
source_urlstringThe Funda search URL the listing came from
source_platformstringAlways funda.nl
scraped_atstringISO-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

ParameterTypeDescriptionDefault
searchUrlsstring[]Funda search URLs. The area (selected_area) and buy/rent (/zoeken/koop, /zoeken/huur) are read from the URL.none
citystringCity or area slug, used when searchUrls is emptyamsterdam
listingTypestringkoop or huur; used with city and for URLs without /zoeken/koop or /zoeken/huurkoop
maxResultsnumberMaximum listings across all searches20
includeDetailsbooleanNo longer supported, ignoredfalse

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_m2 by neighborhood and 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.


If you scrape Dutch / European real estate, you may also want:

Or browse all santamaria-automations actors for the full DACH + European scraping suite.