Scrape Funda Property Listings
Export public Funda sale and rental listings with prices, areas, rooms, energy labels, brokers, images, and source URLs.

The Funda Real Estate Scraper turns public source records into bounded Apify datasets for property analysts, brokers, buyers, researchers, and housing-data teams. This guide focuses on one concrete outcome: export public Funda sale and rental listings with prices, areas, rooms, energy labels, brokers, images, and source URLs.
Start with a bounded Actor run
{"startUrls":["https://www.funda.nl/zoeken/koop?selected_area=amsterdam"],"maxPages":3,"useResidentialProxy":true,"maxResults":100}Use the smallest date window, page limit, or query set that can answer the question. Inspect at least ten varied rows and include records with missing optional fields. Then save the validated input as an Apify Task. Increase limits only after checking yield, cost per useful record, and whether later pages add distinct coverage.
Inputs should encode the business question, not every possible source page. Several narrow Tasks are easier to test than one catch-all scrape. Name each Task after its purpose, keep production schedules conservative, and route failures to an owner. An unexpected empty dataset should fail visibly; it must never be interpreted automatically as “nothing changed.”
Validate source evidence before acting
Open a sample across property types and compare address, price, area, rooms, energy label, broker, and canonical URL. Use the full listing for any consequential decision. Funda listings are advertisements, not transaction records or legal property registers. Asking prices differ from sale prices, availability changes quickly, and floor or plot measurements should be confirmed from the full listing and official documents. The Actor supports collection and normalization; it does not replace due diligence, contractual review, professional advice, or the publisher's governing record.
Review a sample after source-layout changes and periodically during normal operation. Check identifiers, URLs, dates, monetary fields, arrays, and null rates. If a previously healthy Task returns zero rows, investigate the run log and source response rather than publishing an empty-market conclusion.
Decision rule for Scrape Funda Property Listings
Define a written go/no-go rule before scheduling this workflow. Name the minimum field coverage, acceptable null rate, freshness window, and evidence a reviewer must open at the source. A row that misses the rule stays in the raw dataset but does not enter the decision queue. This prevents a broad collection from quietly becoming a claim that the source cannot support.
Review the rule after the first three successful runs. Record false positives, missed cases, and any source-layout change, then version the downstream transformation separately from the Actor input. The result is a workflow that can be challenged and reproduced instead of a spreadsheet whose assumptions live only in one analyst's memory.
Schedule and detect meaningful changes
Run the saved Task at a cadence matched to the decision: daily for active alerts, weekly for market monitoring, and monthly for slower benchmarks. Diff stable IDs and material fields rather than page position. Separate additions, updates, and removals. Store the previous successful snapshot and do not advance the comparison baseline after a failed or partial run.
Alerts should contain the changed fields, source URL, collection time, and a link to the Apify dataset row. Set thresholds that reduce noise. A reproducible weekly digest is often more useful than a message for every row, especially when source ordering or featured placement changes frequently.
Create a Dutch property dataset
Copy a public Funda search URL after setting city, sale or rent, and any filters. Begin with three pages and inspect apartments, houses, missing plot areas, and status labels. Begin with a deliberately small sample so field coverage, duplicates, and source behavior are visible before the workflow becomes scheduled infrastructure. A bounded test also makes proxy and compute cost measurable. Record the exact Actor input, build number, run ID, dataset ID, and collection time; those details make later comparisons reproducible.
The Actor returns listing ID, address, postal city, asking price, living area, plot area, room count, energy label, status labels, broker, image, listing type, and canonical URL. Keep those source-facing values together in a raw table. Add transformations in a separate reviewed layer instead of replacing original strings or turning missing values into zero. Stable source identifiers should drive upserts, while the canonical URL remains available for human verification.
Export and operationalize the result
Apify datasets can be downloaded as JSON, CSV, or Excel and consumed through the API, webhooks, Make, Zapier, n8n, or an MCP workflow. Keep credentials outside inputs, restrict downstream access to what the use case needs, and define a retention period for raw snapshots.
The Funda Real Estate Scraper on Apify uses pay-per-result pricing with an explicit maximum-result control. Start small, verify the output, and scale the Task only when the marginal records support a real decision.
Model the data for this analysis
Key records by listingId and retain livingArea and plotArea separately. Keep the raw specifications array because card layouts can add a labeled measure without changing the core fields. Preserve both first-seen and last-seen timestamps in the downstream store. Source publication time answers when the publisher says a record appeared; collection time answers when your system observed it. Those are different facts and are both necessary for defensible trend work.
Avoid joining records on title or organization name alone. Names change, locations repeat, and near-duplicate advertisements are common. Use the Actor's stable identifier first, then maintain any entity-resolution mapping as a reversible, reviewed table. Keep raw and normalized values side by side so analysts can explain every grouping.
Frequently asked questions
Can I schedule this workflow?
Yes. Validate a bounded input, save it as an Apify Task, and attach a schedule or webhook.
Does the Actor preserve source links?
Yes. Each normalized record includes a URL or source context for verification.