Funda Property Discovery Scraper
Pricing
from $0.85 / 1,000 listings
Funda Property Discovery Scraper
Discover public Funda property listings by location, sale or rent, and property type. Extract prices, descriptions, areas, rooms, images, and URLs.
Pricing
from $0.85 / 1,000 listings
Rating
0.0
(0)
Developer
Trove Vault
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Share
Discover public Funda real estate listings from simple inputs: Dutch location, sale or rent, property type, and maximum results. The Actor searches Funda and returns structured Netherlands property rows with listing URLs, prices, areas, rooms, descriptions, images, timestamps, and optional workflow IDs.
Use it when you need repeatable Funda property discovery without manually creating search URLs, copying listing cards, or cleaning Dutch real estate fields by hand.
What does Funda Property Discovery Scraper do?
Funda Property Discovery Scraper converts a market query such as Amsterdam into a clean Apify dataset of public Funda listings.
It can:
- search Funda by Dutch city or market name
- collect sale or rental listings with
operation - request broad property types such as
any,apartment,house,land, orcommercial - return listing identifiers, titles, URLs, prices, areas, rooms, addresses, descriptions, feature lists, images, and timestamps
- calculate
pricePerM2when both price and area are available - append results to an existing dataset through
datasetId - copy a workflow identifier into every row with
runId
This is a discovery Actor. You provide search criteria, not Funda search-result URLs.
Why use this Funda scraper?
| Use case | How it helps |
|---|---|
| Dutch property lead discovery | Build listing datasets for Amsterdam, Rotterdam, Utrecht, The Hague, Eindhoven, Groningen, Haarlem, Maastricht, and other city-level searches. |
| Sale and rental monitoring | Schedule the same Funda search and compare new rows over time. |
| Market analysis | Compare price, pricePerM2, areaM2, bedrooms, bathrooms, and city across listings. |
| Agency and investor workflows | Feed normalized property rows into dashboards, CRM enrichment, or due-diligence workflows. |
| Multi-source real estate datasets | Combine Funda rows with other TroveVault property discovery Actors using datasetId and runId. |
What data does it return?
Each dataset item represents one public Funda listing when the field is visible in search or detail data.
| Field | Description |
|---|---|
platform | Source platform, normally Funda. |
listingId | Listing identifier when exposed or derived from the public URL. |
title | Listing headline. |
url | Public Funda listing URL. |
operation | Requested operation, such as sale or rent. |
propertyType | Requested property type. |
price, currency, priceText | Numeric price when parseable, currency, and original display text. |
pricePerM2 | Calculated only when price and area are visible. |
areaM2, bedrooms, bathrooms | Size and room attributes when available. |
address, city, country | Parsed listing location. |
description, features | Public description and feature list. |
mainImage, images | Main image URL and gallery URLs when available. |
listedAtText | Listing date or freshness text when exposed. |
scrapedAt | ISO timestamp for when the row was collected. |
runId | Optional workflow ID copied from input. |
How do I run Funda Property Discovery Scraper?
- Enter a Dutch city in Location, for example
Amsterdam. - Choose Operation:
saleorrent. - Choose Property Type:
any,apartment,house,land, orcommercial. - Set Maximum Items for the number of listings to save.
- Start the Actor and export results as JSON, CSV, Excel, or through the Apify API.
For quick validation, start with maxItems: 3. For broader discovery, increase the limit after confirming the city and property type return the kind of listings you need.
What input does it accept?
{"location": "Amsterdam","operation": "sale","propertyType": "apartment","maxItems": 25,"datasetId": "","runId": "funda-amsterdam-sale-2026-08-17"}
| Input | Type | Required | Description |
|---|---|---|---|
location | String | Yes | Dutch city to search. Examples: Amsterdam, Rotterdam, Utrecht, The Hague, Eindhoven, Groningen, Haarlem, Maastricht. |
operation | String | Yes | Use sale for properties for sale or rent for rental listings. Default: sale. |
propertyType | String | Yes | One of any, apartment, house, land, or commercial. Default: apartment. |
maxItems | Integer | No | Maximum listings to save, from 1 to 1000. Default: 3. |
datasetId | String | No | Existing Apify dataset ID to append results to in addition to the default run dataset. |
runId | String | No | Workflow or parent run ID copied into rows and the RUN_SUMMARY record. |
What output should I expect?
{"platform": "Funda","listingId": "example-listing-id","title": "Apartment for sale in Amsterdam","url": "https://www.funda.nl/koop/amsterdam/appartement-example/","operation": "sale","propertyType": "apartment","price": 625000,"currency": "EUR","priceText": "EUR 625,000","pricePerM2": 7812.5,"areaM2": 80,"bedrooms": 2,"bathrooms": 1,"address": "Amsterdam","city": "Amsterdam","country": "Netherlands","description": "Public listing description when available.","features": ["Balcony", "Energy label A"],"mainImage": "https://example.com/funda-image.jpg","images": ["https://example.com/funda-image.jpg"],"listedAtText": null,"scrapedAt": "2026-08-17T10:00:00.000Z","runId": "funda-amsterdam-sale-2026-08-17"}
Null values mean Funda did not expose the field for that listing or the Actor could not parse it safely.
How can I use it through the Apify API?
curl -X POST "https://api.apify.com/v2/acts/trovevault~funda-property-discovery-scraper/runs" \-H "Authorization: Bearer <APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"location": "Amsterdam","operation": "sale","propertyType": "apartment","maxItems": 25,"runId": "funda-amsterdam-sale-2026-08-17"}'
Use the run details to access the default dataset, or pass datasetId to append Funda rows into a shared dataset used by a larger workflow.
How much does it cost?
This Actor uses Apify pay-per-event pricing. Runtime depends mostly on maxItems, source response speed, and whether detail pages are publicly accessible during the run.
Cost controls:
- test new searches with a small
maxItemsvalue - use city-level locations instead of broad country searches
- split broad market research into separate city runs
- schedule only the searches you actively monitor
How do I troubleshoot common issues?
| Issue | Likely cause | What to do |
|---|---|---|
| No listings returned | The city, operation, or property type has no public Funda matches at run time. | Try propertyType: "any", check spelling, and test a known city such as Amsterdam. |
Fewer rows than maxItems | Funda exposed fewer matching listings or some rows could not be normalized safely. | Treat maxItems as a cap. Broaden the search or run another city. |
pricePerM2 is null | Price or area was missing from the source row. | Use priceText and areaM2 when available; keep null-aware downstream logic. |
| Detail fields are missing | The public listing page did not expose descriptions, images, or features during the run. | Re-run later or use the listing URL for manual review. |
| Run is slow on a large batch | The source is responding slowly or many detail pages are being enriched. | Lower maxItems and split the job by city or operation. |
What are the limitations?
- It reads public Funda pages only; it does not access accounts, broker dashboards, private data, or non-public feeds.
- City-level inputs are more stable than broad national searches.
- Commercial and land availability depends on Funda's public coverage for the selected city.
- Prices, availability, and listing details can change after scraping.
pricePerM2is calculated only when both source price and area are available.- This Actor is for data collection and workflow automation; it is not legal, investment, or valuation advice.
FAQ
Can I provide a Funda search URL?
No. This Actor discovers listings from structured inputs: location, operation, propertyType, and maxItems.
Can it track listings over time?
Yes. Schedule the same input and compare datasets by url, listingId, priceText, and scrapedAt.
Can I combine Funda with other portals?
Yes. Use datasetId for a shared dataset and runId to label which workflow or batch produced each row.
Does it return every Funda listing?
No. It returns public listings that can be discovered and normalized for the selected search. Source coverage and availability can change.
Support
Open an issue on the Actor page with the input JSON, run ID, expected city, and a short description of the problem. Include a sample listing URL when the issue is about a missing or misparsed field.