Local agent for renting in the Netherlands
It watches Dutch rental sites and aims to write to the landlord within a minute of a new listing that matches your search. It reads the replies and answers the routine ones. Anything that needs a person comes to you. It is free and runs on your own computer.
MIT licence. Node 22.12 or newer. No account, no server.
Live feed
What the agent did just now
Each line is one action: a site checked, a listing matched or skipped, a message sent, a reply read. The dashboard shows the same feed as it happens, and every message the agent wrote comes with its reason.
Agent, livenext check 0:42
- FoundFunda. , €1,180
- SentContact form on Funda, in Dutch, with your details
- SkippedKamernet. Biltstraat 30, 14 m², under your minimum
- FoundAgency site. , €1,050
- SentEmail to the agent, in Dutch
- ViewingOudegracht 112-B: Thursday 18:30 booked, inside your free hours
- FoundPararius. , €1,240
- Needs youVismarkt 9: the agent asks for three payslips
Sample run. Times and addresses are made up.
Frames this listing's window in the 3D street when Motion is on.
How it works
From listing to message
-
Watch
It checks the search pages of every site you enable, every 90 seconds for the fast ones, and notes anything it has not seen. The sites' own alert emails are a second way in.
poll 90 s ± 20%, alert emails -
Match
Each listing is checked against your rent, size, area and move-in date. The same home on three sites counts once. Likely scams are never contacted.
rent ≤ €1,200, Utrecht, from 1 Nov -
Write
A match gets a message in Dutch or English with your details, through the best free channel: a contact form, a platform message or an email to the agent.
form, message or email -
Sort
Replies are read and sorted. Routine questions are answered from your profile, and viewings inside your free hours are booked. Money, contracts and ID go to you.
14 reply types, 1 inbox
- Checked
- 214
- Matched
- 38
- Sent
- 31
- Replies
- 7
- Viewings
- 2
A sample day.
Reads listings from
- Funda
- Kamernet
- Pararius
- Huurwoningen
- HousingAnywhere
- Marktplaats
- Vesteda
- SSH
- RoomMatch (DUWO)
- Woonnet Haaglanden
- Plaza
- Huren in Holland Rijnland
- Woonnet Rijnmond
- Holland2Stay
- MVGM
- Stadswonen Rotterdam
- WoningNet
- Kamer.nl
- Directwonen
- Huurstunt
- Rentola
- Huurzone
- Xior
- 123Wonen
- Rotsvast
- NederWoon
- Interhouse
- Van der Linden
- OGonline agency sites
- Your own agency YAML
Sites whose terms forbid automated messages are read only, until you opt in for that site after reading the risk. Sites that charge to reply are read for discovery unless you have their plan. Not affiliated with any of them.
Action inbox
Only what needs a person
A landlord who proposes a time outside your free hours, asks for a payslip or sends a contract needs you. The agent answers or closes the rest, and logs what it did.
Each item says why it is there and what one key does. Identity documents are never sent without your click.
Try the keysSample items. Nothing is sent.
-
Needs youanswer within 2 h
The agent for Vismarkt 9 asks for your last three payslips
Draft: "Thank you. My last three payslips are attached. I can view the flat any evening this week."
-
Needs younew listing
Pararius is read only for you, so this message waits for you to send it
Draft: "Goedenavond, ik ben op zoek naar een appartement in Utrecht vanaf 1 november."
-
Needs youcontract
A contract offer arrived. The deposit is three months of rent, above the legal limit of two
The agent never signs or pays. Read the flagged clauses before you answer.
Agent access
Ask Claude what is waiting
The agent runs an MCP server. Add it to Claude Code or Claude Desktop and Claude can read your inbox, search listings, draft replies and change a search. Tools that contact a real person say so in their description, and withdrawing every application needs an explicit confirmation.
The same actions are a REST API on 127.0.0.1 and a CLI where every command takes --json.
The 21 tools
- status
- search_listings
- get_property
- list_applications
- list_tasks
- resolve_task
- list_conversations
- get_conversation
- draft_message
- send_message
- list_viewings
- get_searches
- update_search
- get_profile
- update_profile
- pause
- resume
- source_health
- test_source
- stats
- withdraw_all
youList what needs me today.
Tool call: list_tasks
claudeTwo things need you.
1. Vismarkt 9, Utrecht: the agent asks for your last three payslips. A reply is drafted and waits for your approval.
2. Twijnstraat 18, Utrecht: Pararius is read only for you, so the message is ready for you to send by hand.
$nlpf status
A text drawing of the street with two windows marked: the two tasks that need you.
running, 14 sources ok, next check in 42 s, 2 tasks open
Claude Desktop config
{
"mcpServers": {
"nl-property-finder": { "command": "nlpf", "args": ["mcp"] }
}
}
Claude Code: claude mcp add nl-property-finder -- nlpf mcp
Privacy
Your computer, your data
- Listings, messages and documents stay on your disk.
- One SQLite file and a documents folder under
~/.local/share/nl-property-finder. Delete the folder and they are gone. - Keys and passwords sit in one file only you can read.
secrets.envis created with mode 0600, never written to a log and never returned by the API. Site logins are browser profiles on your disk.- There is no telemetry.
- Nothing is sent to the author, and there is no server to send it to. By default the dashboard and the API listen on 127.0.0.1 only.
- What does leave your computer.
- Requests to the sites you enable, the messages it sends for you, mail through the mailbox you give it, address lookups at PDOK, push titles if you set up ntfy or Telegram, and listing text sent to Claude only if you turn that on.
Cost
What it costs
| Part | Cost | Notes |
|---|---|---|
| The agent | €0 | MIT licence. It runs on your computer. |
| Listing sites | €0 | Your own free accounts where a site needs a login. A paid plan is a setting for people who already have one. |
| €0 | A separate free mailbox for the agent, read over IMAP and sent over SMTP with an app password. | |
| Phone alerts | €0 | ntfy or Telegram, with buttons to approve or dismiss a task. |
| AI | €0 without it | Optional. With your own Anthropic API key you pay Anthropic per call, for the model you choose, up to a monthly token budget you set. Without a key, rules and templates do the same jobs. Using the MCP server from a Claude plan you already have costs nothing extra. |
| Hosting | €0 | Nothing is hosted. This page is on GitHub Pages. |
Contribute
Add a rental site in one file
A site is one adapter: a typed module with recorded fixtures, or for an ordinary estate agent, a YAML file with a URL and a few selectors. Copy an existing one, record its fixtures and open a pull request. Tests never touch a live site.
id: example-makelaar
name: Example Makelaardij
homepage: https://www.example-makelaar.nl
regions: [delft, rijswijk]
preset: realworks
list:
url: https://www.example-makelaar.nl/aanbod/huur/
item: ".object"
contact:
kind: form
terms: unknown










