# Funda Scraper: Dutch Homes for Sale and Rent with Makelaar (`themineworks/funda-scraper`) Actor

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.

- **URL**: https://apify.com/themineworks/funda-scraper.md
- **Developed by:** [The Mine Works](https://apify.com/themineworks) (community)
- **Categories:** Real estate, Lead generation, MCP servers
- **Stats:** 1 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.69 / 1,000 listings

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Funda Scraper: Dutch Homes for Sale and Rent with Makelaar

[![80 Funda listings with makelaar phone in 86 seconds](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/funda-scraper-hero.png)](https://console.apify.com/actors/1jUQBaAK8Melgibaw/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

From **The Mine Works**, makers of [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral) and [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), 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 `onlyNewListings` on, a repeat run delivers and charges only homes it has not delivered before. A home found by two searches is delivered and charged once.

[![Run it on Apify](https://api.apify.com/v2/key-value-stores/cUXz95yxflDho41nn/records/button-run.png)](https://console.apify.com/actors/1jUQBaAK8Melgibaw/input?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Part of The Mine Works Real estate family:** [Zillow Rentals Scraper](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [99acres Scraper](https://apify.com/themineworks/99acres-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral), [MagicBricks Scraper](https://apify.com/themineworks/magicbricks-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral).

### 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:

```json
{
  "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

```text
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**: `includeDetails` adds one quick request per home; `includeAgentPhone` one 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 `OUTPUT` record 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

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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:

```json
{
  "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` (`sale` or `rent`), `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**: `price` in euros (monthly rent for rentals), `currency`, `price_condition` (`kosten_koper`, `vrij_op_naam`, `per_month`), `price_text` as Funda writes it, `price_per_m2` (sale only).
- **The home**: `living_area`, `plot_area`, `volume_m3`, `rooms`, `bedrooms`, `bathrooms`, `build_year` (or `build_period`), `energy_label`, `object_type`, `property_type`, `construction_type` (`resale` or `newly_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_history` for sold homes, `views` and `saves` when Funda shows them.
- **Run fields**: `details` (`read`, `off`, or `not read` with the reason) and `scraped_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):

```json
{
  "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):

```json
{
  "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):

```json
{
  "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](https://apify.com/themineworks/zillow-rental-listings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Sold Comps Scraper](https://apify.com/themineworks/zillow-recently-sold?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Real Estate MCP](https://apify.com/themineworks/india-real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Housing.com Scraper](https://apify.com/themineworks/housing-com-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [99acres Scraper](https://apify.com/themineworks/99acres-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [MagicBricks Scraper](https://apify.com/themineworks/magicbricks-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Property Scraper](https://apify.com/themineworks/zillow-property-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zillow Photos Scraper](https://apify.com/themineworks/zillow-photos?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Real Estate MCP](https://apify.com/themineworks/real-estate-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Airbnb Scraper](https://apify.com/themineworks/airbnb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Domain.com.au Property Scraper](https://apify.com/themineworks/domain-property-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [realestate.com.au Scraper](https://apify.com/themineworks/realestate-com-au-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Social media and video**

- [Threads Scraper](https://apify.com/themineworks/threads-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Reddit Scraper](https://apify.com/themineworks/reddit-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Threads Search Scraper](https://apify.com/themineworks/threads-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Instagram Profile Scraper](https://apify.com/themineworks/instagram-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Leads and business directories**

- [B2B Leads Finder](https://apify.com/themineworks/b2b-leads-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Skip Trace Lookup](https://apify.com/themineworks/skip-trace-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Maps Email Scraper](https://apify.com/themineworks/maps-leads?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [2GIS Places Scraper](https://apify.com/themineworks/2gis-places-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Marketing, SEO and reviews**

- [Facebook Ad Library Scraper](https://apify.com/themineworks/meta-ad-library-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google Ads Transparency Scraper](https://apify.com/themineworks/google-ads-transparency?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Similarweb Scraper](https://apify.com/themineworks/similarweb-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Google News Scraper](https://apify.com/themineworks/google-news?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**LinkedIn**

- [LinkedIn Company Scraper](https://apify.com/themineworks/linkedin-company-details?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Post Scraper](https://apify.com/themineworks/linkedin-post-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Employees Scraper](https://apify.com/themineworks/linkedin-employees?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [LinkedIn Profile Scraper](https://apify.com/themineworks/linkedin-profile-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Science, health and government data**

- [Academic Research MCP](https://apify.com/themineworks/academic-research-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [CourtListener Scraper](https://apify.com/themineworks/courtlistener-court-records?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Socrata Open Data Scraper](https://apify.com/themineworks/socrata-open-data?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [OpenAlex Scraper](https://apify.com/themineworks/openalex-scholarly-works?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Jobs and hiring**

- [Foundit Monster India Jobs](https://apify.com/themineworks/foundit-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Hirist Jobs Scraper](https://apify.com/themineworks/hirist-jobs-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [India Jobs MCP](https://apify.com/themineworks/india-jobs-mcp?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naukri Jobs Scraper](https://apify.com/themineworks/naukri-jobs?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Company and business data**

- [Company Domain Finder](https://apify.com/themineworks/company-domain-finder?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GST Taxpayer Lookup](https://apify.com/themineworks/gst-taxpayer-lookup?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Company KYB Resolver](https://apify.com/themineworks/company-identity-resolver?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [SEC EDGAR Filings Scraper](https://apify.com/themineworks/sec-edgar-filings?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**E-commerce and marketplaces**

- [Ozon.ru Scraper](https://apify.com/themineworks/ozon-product-search?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [⭐ Amazon Reviews Scraper](https://apify.com/themineworks/amazon-reviews?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Amazon Product Scraper](https://apify.com/themineworks/amazon-products?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Etsy Listings Scraper](https://apify.com/themineworks/etsy-search-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Food and local services**

- [NoBroker Scraper](https://apify.com/themineworks/nobroker-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Swiggy Restaurant Scraper](https://apify.com/themineworks/swiggy-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Zomato Scraper](https://apify.com/themineworks/zomato-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**Developer and AI tools**

- [Website to Markdown Crawler](https://apify.com/themineworks/rag-crawler?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Skill Finder](https://apify.com/themineworks/github-skill-discovery?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Repo Scraper](https://apify.com/themineworks/github-repo-intelligence?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [GitHub Trending Scraper](https://apify.com/themineworks/github-trending-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

**More tools**

- [G2 Reviews Scraper](https://apify.com/themineworks/g2-reviews-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Naver Blog Scraper](https://apify.com/themineworks/naver-blog-posts-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [WeChat Article Scraper 微信公众号文章](https://apify.com/themineworks/wechat-article-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)
- [Taobao Products Scraper 淘宝 天猫](https://apify.com/themineworks/taobao-products-scraper?fpr=ymnoit\&utm_source=apify-readme\&utm_medium=referral)

### 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.*

# Actor input Schema

## `areas` (type: `array`):

Place names as Funda knows them, one per line: a city (Amsterdam, Den Haag, Utrecht), a province (provincie-utrecht) or a four digit postcode area (1017). Each one is its own search with the filters below. Leave empty when you give Funda links; with neither, Amsterdam is searched.

## `startUrls` (type: `array`):

Optional. Search result links copied from funda.nl after choosing filters there (https://www.funda.nl/zoeken/koop?selected_area=\["rotterdam"]\&price="300000-500000"), used as they are, or single listing links (https://www.funda.nl/detail/koop/...). A search link to page 3 starts at page 3.

## `offeringType` (type: `string`):

Homes for sale or for rent. Links keep their own.

## `minPrice` (type: `integer`):

Asking price from, in euros. For rentals, the monthly rent.

## `maxPrice` (type: `integer`):

Asking price up to, in euros. For rentals, the monthly rent.

## `propertyTypes` (type: `array`):

Empty means every type Funda shows for homes.

## `minRooms` (type: `integer`):

Rooms in total, bedrooms included.

## `minBedrooms` (type: `integer`):

Minimum number of bedrooms.

## `minLivingArea` (type: `integer`):

Minimum living area in m².

## `publishedWithin` (type: `string`):

Only listings Funda published in this many days.

## `availability` (type: `array`):

Which listings to include. Funda's default is available and under offer; add sold or rented for recent sales.

## `sortBy` (type: `string`):

Order of the results for cities and areas. Newest first suits alerts with only new listings. Links keep their own order.

## `maxListings` (type: `integer`):

Most listings for each city, area or search link, 20 to 9,990 (Funda shows 666 pages of 15 for one search). You pay per listing delivered.

## `includeDetails` (type: `boolean`):

On: one quick extra request per listing adds status (available, under offer, sold), build year, asking price per m², property type, bathrooms, description, coordinates, all photos, views and saves, offered since, sale history and every characteristic Funda lists.

## `includeAgentPhone` (type: `boolean`):

On: the agency's business phone number and website from its Funda page, read once per agency per run.

## `onlyNewListings` (type: `boolean`):

For alerts on a schedule: skip listings an earlier run with the same searches already delivered, so each run returns and charges only new ones.

## Actor input object example

```json
{
  "areas": [
    "Amsterdam"
  ],
  "offeringType": "buy",
  "publishedWithin": "",
  "availability": [
    "available",
    "negotiations"
  ],
  "sortBy": "newest",
  "maxListings": 30,
  "includeDetails": true,
  "includeAgentPhone": true,
  "onlyNewListings": false
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "areas": [
        "Amsterdam"
    ],
    "maxListings": 30
};

// Run the Actor and wait for it to finish
const run = await client.actor("themineworks/funda-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "areas": ["Amsterdam"],
    "maxListings": 30,
}

# Run the Actor and wait for it to finish
run = client.actor("themineworks/funda-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "areas": [
    "Amsterdam"
  ],
  "maxListings": 30
}' |
apify call themineworks/funda-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,themineworks/funda-scraper"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/1jUQBaAK8Melgibaw/builds/jHDSx2QxLWbPU9Gl6/openapi.json
