Funda Scraper: Dutch Homes for Sale and Rent with Makelaar
Pricing
from $0.69 / 1,000 listings
Funda Scraper: Dutch Homes for Sale and Rent with Makelaar
Scrape Funda.nl homes for sale or rent by city or search link: address, postcode, price, price per m², living and plot area, rooms, bedrooms, build year, energy label, status, listing date, makelaar name and phone, photos and description. Only new listings mode. No login.
Pricing
from $0.69 / 1,000 listings
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
From The Mine Works, makers of Threads Scraper and B2B Leads Finder, with over 140,000 runs across 170+ public actors.
Why choose this actor?
- The whole listing, not just the search card. Each row joins the funda.nl search result with the listing's own record: status (available, under offer, sold, rented), build year, asking price per m², property type, bathrooms, full description, coordinates, every photo and every characteristic Funda lists. Our final test returned 80 homes in Amsterdam and Rotterdam in 86 seconds, 80 of 80 with status, description and coordinates, and 143 of 143 requests answered.
- The makelaar's business phone on every row. The agency name, Funda page, association (NVM, VBO and others), business phone number and website, read once per agency and shared by all its listings: 80 of 80 rows in that test carried the phone, from 57 agency lookups.
- Any search Funda can do, and only new listings on a schedule. Type a city with price, rooms, bedrooms, living area, property type, availability and listing date filters, or paste a search link copied from funda.nl. With
onlyNewListingson, a repeat run delivers and charges only homes it has not delivered before. A home found by two searches is delivered and charged once.
Part of The Mine Works Real estate family: Zillow Rentals Scraper, Zillow Sold Comps Scraper, India Real Estate MCP, Housing.com Scraper, 99acres Scraper, MagicBricks Scraper.
Try it in one minute
Paste this into the input (JSON view) and press Start. It returns the 20 newest homes for sale in Utrecht with details and makelaar phone, in about a minute:
{"areas": ["Utrecht"],"maxListings": 20}
areas takes place names as Funda knows them, one per line: a city (Amsterdam, Den Haag), a province (provincie-utrecht) or a four digit postcode area (1017); each is its own search with the filters you set. startUrls takes search links copied from funda.nl after choosing filters there, used exactly as they are, and single listing links (https://www.funda.nl/detail/koop/...). With neither, Amsterdam is searched.
Apify's free plan includes $5 of credit every month, which covers about 4,800 results at this actor's price.
Copy to your AI assistant
themineworks/funda-scraper on Apify. Scrapes Funda.nl property listings in the Netherlands, for sale or for rent, one row per home with address, postcode, city, price and price condition, price per m², living and plot area, rooms, bedrooms, bathrooms, build year, energy label, property type, status (available, under offer, sold, rented), listing date, makelaar name, Funda page, business phone and website, photos, description, coordinates and every characteristic. Call ApifyClient("TOKEN").actor("themineworks/funda-scraper").call(run_input={"areas": ["Rotterdam"], "offeringType": "buy", "maxPrice": 450000, "minBedrooms": 2, "maxListings": 100}), then client.dataset(run["defaultDatasetId"]).list_items().items. Required: none (default: Amsterdam, for sale, newest first). Optional: areas (list of place names), startUrls (funda.nl search or listing links), offeringType ("buy" or "rent"), minPrice, maxPrice (euros; monthly rent for rentals), propertyTypes (house, apartment, parking, land, storage, berth, pitch), minRooms, minBedrooms, minLivingArea (m²), publishedWithin ("1", "3", "5", "10", "30" days), availability (available, negotiations, unavailable), sortBy ("newest", "relevance", "price_asc", "price_desc", "area_desc"), maxListings (per search, 20 to 9990, default 100), includeDetails (default true), includeAgentPhone (default true), onlyNewListings (default false). Full spec: GET https://api.apify.com/v2/acts/themineworks~funda-scraper/builds/default (Bearer TOKEN), which returns inputSchema and readme. Token: https://console.apify.com/account/integrations?fpr=ymnoit&utm_source=apify-readme&utm_medium=referral
Key features
- Over 50 fields per home: listing id and link, sale or rent, street, house number and addition, postcode, city, municipality, province, neighbourhood and district, price, price condition (kosten koper, vrij op naam, per month), price as Funda writes it, price per m², living area, plot area, volume, rooms, bedrooms, bathrooms, build year, energy label, object and property type, new build or resale, listing date, offered since, status, makelaar name, id, page, association, phone and website, photos, description, coordinates, views and saves, sale history and every characteristic.
- Every Funda filter you need: sale or rent, price range, property types, minimum rooms, bedrooms and living area, listed within 1 to 30 days, available, under offer or sold and rented, and five sort orders. Pasted links keep every filter they carry, including ones not listed here.
- From 20 to 9,990 homes per search, 15 per page. Funda shows 666 pages of any search, so for a bigger area split it by price or by town. Two searches run at once, four pages of each at a time.
- Details and agency lookups you can switch off:
includeDetailsadds one quick request per home;includeAgentPhoneone request per agency. With both off a run reads only search pages. - No double charging: a home found by two searches, or by a city and a pasted link, is delivered and charged once.
- A run summary you can audit: the
OUTPUTrecord lists every search's status, the number of homes Funda has for it, pages read, details and agencies read, and the success rate per request type.
How to use it
Basic: the newest homes for sale in one city
{"areas": ["Rotterdam"],"maxListings": 100}
Several cities at once
Each place is its own search of up to maxListings homes. This is our final test: 40 homes in Amsterdam and 40 in Rotterdam, all with details and makelaar phone, in 86 seconds:
{"areas": ["Amsterdam", "Rotterdam"],"offeringType": "buy","maxListings": 40}
Rentals with a budget
For rentals the price filters are the monthly rent. This test returned 30 homes in Den Haag between €1,000 and €2,500 a month with at least two bedrooms, in 61 seconds:
{"areas": ["Den Haag"],"offeringType": "rent","minPrice": 1000,"maxPrice": 2500,"minBedrooms": 2,"maxListings": 30}
Paste a search from funda.nl
Set any filters on funda.nl, copy the address bar and paste it. The link is read exactly as it is, with every filter it carries, and listing links are read one by one:
{"startUrls": ["https://www.funda.nl/zoeken/koop?selected_area=[\"amsterdam\"]&price=\"300000-600000\"&object_type=[\"apartment\"]&rooms=\"3-\"&sort=\"date_down\"","https://www.funda.nl/detail/koop/amsterdam/huis-keizersgracht-468/44523847/"],"maxListings": 30}
Job: new listing alerts for buyers or investors
Read the newest homes every morning and pay only for homes you have not received before. Save this as a task and add a daily schedule. In our test (Groningen, 20 homes a run, no price filter) the first run delivered 20 homes, and the second, minutes later, read one page, found nothing new and charged 0:
{"areas": ["Groningen"],"maxPrice": 400000,"publishedWithin": "1","maxListings": 100,"onlyNewListings": true}
Job: makelaar lead list for one region
Every row carries the agency's name, Funda page, association, business phone and website. Read a whole region and group the rows by agent_id to see which agencies list the most homes:
{"areas": ["provincie-utrecht"],"maxListings": 500,"includeDetails": false}
Job: recent sales and price per m²
Sold and rented homes stay on Funda for a while. Ask for them alone to study recent prices per m², time on the market (sale_history) and asking prices by neighbourhood:
{"areas": ["Haarlem"],"availability": ["unavailable"],"maxListings": 200,"includeAgentPhone": false}
Input parameters
| Parameter | Type | Default | What it does |
|---|---|---|---|
areas | array of strings | ["Amsterdam"] when no link is given | Place names as Funda knows them: cities, provinces (provincie-utrecht) or four digit postcode areas (1017). Each is its own search with the filters below. |
startUrls | array of strings | empty | funda.nl search links (koop or huur, any filters, read as they are) and single listing links. A search link to page 3 starts at page 3. |
offeringType | string | buy | buy (koop) or rent (huur), for areas. Links keep their own. |
minPrice | integer | none | Lowest asking price in euros; for rentals, the monthly rent. |
maxPrice | integer | none | Highest asking price in euros; for rentals, the monthly rent. |
propertyTypes | array | all | house, apartment, parking, land, storage, berth, pitch. |
minRooms | integer | none | Minimum rooms in total. |
minBedrooms | integer | none | Minimum bedrooms. |
minLivingArea | integer | none | Minimum living area in m². |
publishedWithin | string | any time | 1, 3, 5, 10 or 30: only homes Funda published in that many days. |
availability | array | ["available", "negotiations"] | available, negotiations (under offer), unavailable (sold or rented). |
sortBy | string | newest | newest, relevance, price_asc, price_desc, area_desc. |
maxListings | integer | 100 | Most homes per search (each area or search link), 20 to 9,990. Also the most you pay for per search. |
includeDetails | boolean | true | Adds status, build year, price per m², property type, bathrooms, description, coordinates, all photos, views and saves, sale history and every characteristic. One quick request per home. |
includeAgentPhone | boolean | true | Adds the agency's business phone and website from its Funda page, read once per agency per run. |
onlyNewListings | boolean | false | Skips homes an earlier run with the same searches already delivered. For schedules; with sortBy: "newest" a run stops as soon as it reaches homes it has seen. |
What data do you get?
One row per home:
- The listing:
listing_id,tiny_id,url,offering_type(saleorrent),listing_date,offered_since,status(available,under_offer,sold,rented),status_text(Funda's Dutch wording),search,page,position. - Address:
address,street,house_number,house_number_suffix,postcode,city,municipality,province,neighbourhood,district,latitude,longitude. - Price:
pricein euros (monthly rent for rentals),currency,price_condition(kosten_koper,vrij_op_naam,per_month),price_textas Funda writes it,price_per_m2(sale only). - The home:
living_area,plot_area,volume_m3,rooms,bedrooms,bathrooms,build_year(orbuild_period),energy_label,object_type,property_type,construction_type(resaleornewly_built),is_new_build_project. - The makelaar:
agent_name,agent_id,agent_url,agent_association,agent_phone,agent_website. - Content:
images,image_count,main_image_url,description(as the agency wrote it, usually Dutch),characteristics(every label and value Funda lists, in Dutch),sale_historyfor sold homes,viewsandsaveswhen Funda shows them. - Run fields:
details(read,off, ornot readwith the reason) andscraped_at.
How often each field was filled in our final test (80 homes for sale in Amsterdam and Rotterdam, details and agency phone on):
| Field | Filled | Why not always |
|---|---|---|
listing_id, url, address, postcode, city, price, status, listing_date, agent_name, agent_url, images, main_image_url | 80 of 80 | |
description, latitude, longitude, property_type, characteristics, offered_since, status_text | 80 of 80 | With includeDetails on (the default). |
agent_phone, agent_website | 80 of 80 | With includeAgentPhone on (the default); some agencies show no phone (3 of 20 rows in another test). |
living_area, rooms, bedrooms, price_per_m2 | 79 of 80 | One row was a parking space. |
bathrooms | 76 of 80 | Not every listing states it. |
energy_label, build_year | 75 of 80 | Some homes have no label yet; some give a build period instead of a year. |
house_number_suffix | 46 of 80 | Only addresses with an addition. |
plot_area | 13 of 80 | Houses only; there were 13 houses among the 80. |
views, saves | 14 of 80 | Funda shows these for some listings only. |
sale_history | 20 of 20 sold homes | Only on sold or rented homes. |
Stable fields for automations
These fields were present in every row of our final test runs and their names will not change:
| Field | Meaning |
|---|---|
listing_id | Funda listing id, stable across runs |
url | Listing page on funda.nl |
offering_type | sale or rent |
address | Street and house number |
postcode | Postcode |
city | City |
province | Province |
price | Asking price in euros; monthly rent for rentals |
price_condition | kosten_koper, vrij_op_naam, per_month and similar |
object_type | house, apartment, parking and so on |
listing_date | When Funda published the listing |
status | available, under_offer, sold or rented |
agent_name | Makelaar (agency) name |
agent_id | Makelaar id on Funda |
scraped_at | When the row was read, ISO 8601 UTC |
Output examples
A house for sale with details and makelaar (trimmed):
{"listing_id": "8178484","url": "https://www.funda.nl/detail/koop/amsterdam/huis-keizersgracht-468/44523847/","offering_type": "sale","address": "Keizersgracht 468","postcode": "1017EG","city": "Amsterdam","neighbourhood": "Leidsegracht-Zuid","price": 2500000,"price_condition": "kosten_koper","price_per_m2": 13736,"living_area": 182,"plot_area": 64,"rooms": 6,"bedrooms": 4,"bathrooms": 3,"build_year": 1672,"energy_label": "D","object_type": "house","property_type": "Grachtenpand, tussenwoning","listing_date": "2026-10-06T00:00:05.6061311+02:00","status": "available","agent_name": "Jeroen van den Boogaard Makelaars","agent_url": "https://www.funda.nl/makelaar/10164-jeroen-van-den-boogaard-makelaars/","agent_association": "NVM","agent_phone": "(+31) 252 68 73 97","agent_website": "https://www.jeroenvandenboogaard.nl","image_count": 75,"main_image_url": "https://cloud.funda.nl/tiara-media/22830449-ff88-4ea0-b8bc-9ce9c091b945/6abc1ddd-0f43-4681-8e18-2cdec76c9780","description": "Monumentaal grachtenpand met fantastisch uitzicht over de grachten. Een uniek Amsterdams grachtenpand met karakter, ruimte en uitzicht...","latitude": 52.36655,"longitude": 4.8847337,"details": "read"}
A rental (trimmed; this run had includeAgentPhone off):
{"listing_id": "8179195","url": "https://www.funda.nl/detail/huur/den-haag/appartement-de-savornin-lohmanlaan-180/80988194/","offering_type": "rent","address": "De Savornin Lohmanlaan 180","postcode": "2566AV","city": "Den Haag","price": 1540,"price_condition": "per_month","price_text": "€ 1.540 per maand (exclusief servicekosten à 55 per maand)","living_area": 67,"rooms": 3,"bedrooms": 2,"build_year": 1955,"energy_label": "A2","property_type": "Portiekflat (appartement)","status": "available","offered_since": "Oktober 5, 2026","agent_name": "Flores Real Estate","agent_association": "MZV","characteristics": {"Aanvaarding": "Per direct beschikbaar","Huurprijs": "€ 1.540 per maand (exclusief servicekosten à 55 per maand)","Waarborgsom": "€ 3.080 eenmalig"}}
A sold home with its sale history (trimmed):
{"listing_id": "8146341","url": "https://www.funda.nl/detail/koop/haarlem/appartement-nassauplein-50/44591704/","address": "Nassauplein 50","city": "Haarlem","price": 485000,"price_per_m2": 7462,"living_area": 65,"build_year": 2006,"status": "sold","status_text": "Verkocht","views": 3442,"saves": 54,"sale_history": {"Aangeboden sinds": "11 september 2026","Verkoopdatum": "23 september 2026","Looptijd": "12 dagen"},"agent_name": "Engel & Völkers Kennemerland"}
Pricing
Pay per event: you pay for the listing rows you receive, plus a flat $0.005 per run, whatever memory you choose.
| Event | When it is charged | Free plan | Bronze (Starter) | Silver (Scale) | Gold (Business) |
|---|---|---|---|---|---|
listing-scraped | Once per home stored in your dataset | $0.99 per 1,000 | $0.89 per 1,000 | $0.79 per 1,000 | $0.69 per 1,000 |
run-start | Once per run, when it starts | $0.005 | $0.005 | $0.005 | $0.005 |
The price per single home is the price per 1,000 divided by 1,000. A home with details and makelaar phone costs the same as one without.
Never charged:
- pages Funda refused, and searches the run could not read;
- searches with no results, place names Funda does not know, and listing links that no longer exist;
- a home already delivered earlier in the same run (found by two searches, or by a search and a link);
- with
onlyNewListings, homes an earlier run already delivered; - the info row at the end of a run;
- anything past your "Max cost per run": the actor stops delivering when your limit is reached instead of sending rows for free.
FAQ
What exactly does this actor read?
Funda.nl, the largest property site in the Netherlands, as any visitor sees it: the search result pages of www.funda.nl, the listing record the Funda app reads for each home, and each makelaar's public page on Funda for its phone number and website. Nothing behind a login is read.
How many homes can I get?
Up to 9,990 per search: Funda shows 666 pages of 15 for any search, so the actor never asks past them. For a bigger area, split the search by price range, property type or town; each split is its own search. Amsterdam had 6,918 homes for sale and the whole country 99,930 when we tested.
How long does a run take?
Funda answers search pages slowly, 20 to 25 seconds each, so the actor reads four pages of a search at a time and two searches at once, and fetches page 2 together with page 1. Details take about 2 seconds a home, eight at a time, and an agency page about 4 seconds, once per agency. Our tests: 80 homes from two cities in 86 seconds, 30 rentals in 61 seconds, 20 sold homes without agency lookups in 34 seconds.
How fresh is the data?
Every run reads Funda live, so prices, statuses and new listings are as Funda shows them at that moment.
Why is the description in Dutch?
It is the text the makelaar wrote. Most write Dutch; some add an English part, as in the Den Haag rental above. The characteristics labels are Funda's Dutch labels; the main facts (price, area, rooms, build year, energy label, status) are separate fields with English names.
What does the status mean?
available (beschikbaar), under_offer (onder bod, onder optie, or sold or rented subject to conditions), sold (verkocht) and rented (verhuurd). Funda's own wording is in status_text (with details). Search results carry the status too, so status is filled with includeDetails off as well; the availability filter decides which homes a search returns.
Is the makelaar phone a person's number?
No. It is the business number the agency publishes on its Funda page, the same number Funda shows to every visitor. The actor reads no phone numbers or email addresses of private sellers, buyers or tenants.
Do I need an account, cookies or a proxy?
No account and no cookies. The actor uses Apify's datacenter proxy on its own; you pay nothing extra for it.
What happens with a wrong place name or an old link?
A place Funda does not know is reported in the run's OUTPUT record as not_found with a hint, and a listing link that no longer exists is skipped. Neither is charged, and the rest of the run carries on.
Can I run it on a schedule and get only new listings?
Yes. Turn on onlyNewListings, keep sortBy on newest, save the input as a task and add a schedule. Each run skips homes earlier runs delivered and stops at the first page with nothing new. In our test the second run read one page, found 0 new homes and charged 0.
Which formats can I download?
JSON, CSV, Excel, XML, RSS and an HTML table, from the run's dataset in Console or through the API.
Can I use it from Claude, ChatGPT or Cursor (MCP)?
- Connector URL: https://mcp.apify.com/?tools=themineworks/funda-scraper
- Claude: Settings > Connectors > Add custom connector, paste the URL, sign in with Apify.
- ChatGPT: developer mode, add an MCP connector with the URL, sign in with Apify.
- Cursor or VS Code: add it as an HTTP MCP server with that URL.
- Claude Code:
claude mcp add -t http funda-scraper "https://mcp.apify.com/?tools=themineworks/funda-scraper"
Is it legal to scrape Funda?
The actor reads only listings and agency pages that Funda shows publicly to anyone without signing in. Rows describe homes and businesses; they hold no personal contact details of private people. You are responsible for how you use the data, for Funda's terms, and for data protection law such as the GDPR, which applies in the Netherlands. If in doubt, ask a lawyer about your use case.
Integrations
- Google Sheets: send each run's rows to a sheet with Apify's Google Sheets integration, or import the CSV link of the dataset.
- Make, Zapier and n8n: start the actor and read its dataset with the Apify apps and nodes, for example "new homes under €400,000 in Utrecht to email every morning".
- Webhooks: have Apify call your URL when a run succeeds, then fetch the dataset.
- API and SDKs: run it from Python or JavaScript with the Apify client, or with a plain HTTP call (see "Copy to your AI assistant" above).
- MCP clients: Claude, ChatGPT, Cursor and VS Code can run it as a tool through the connector URL in the FAQ.
More from The Mine Works
Real estate
- Zillow Rentals Scraper
- Zillow Sold Comps Scraper
- India Real Estate MCP
- Housing.com Scraper
- 99acres Scraper
- MagicBricks Scraper
- Zillow Property Scraper
- Zillow Photos Scraper
- Real Estate MCP
- Airbnb Scraper
- Domain.com.au Property Scraper
- realestate.com.au Scraper
Social media and video
Leads and business directories
Marketing, SEO and reviews
Science, health and government data
Jobs and hiring
Company and business data
E-commerce and marketplaces
Food and local services
Developer and AI tools
More tools
Support
A search that should return homes and does not? Open an issue in the Issues tab with the input and the run ID, and we will look at it. For another property site, a new source or a field you need, email dmineworks@gmail.com.
Give a Dutch city or paste a funda.nl search, and get every home back as a clean row with its price, size, status and the makelaar to call.

