
What it does
Fredy ("Find Real Estate Damn Easy") automates the worst part of flat-hunting in Germany: refreshing portals all day. You define search jobs (location, price, rooms, filters), Fredy polls the property sites on an interval, deduplicates listings across portals, and pushes only the new ones to your phone. By the time a listing hits the public site, you already have it.
It runs as a self-hosted service with a web UI on port 9998 for managing jobs and adapters. Around 1.1k stars on GitHub.
It searches these portals:
- ImmoScout24 - via a reverse-engineered mobile API, which dodges most of the web anti-bot wall
- Immowelt
- Immonet
- eBay Kleinanzeigen (now just "Kleinanzeigen")
- WG-Gesucht - shared flats and WG rooms
Notifications go out through any of these channels:
Language and stack
| Language | JavaScript (~93%), some TypeScript |
| Runtime | Node.js 22+ |
| Frontend | Vue.js with Semi UI |
| Database | SQLite |
| Deploy | Docker, bare Node.js, or Unraid |
| License | Apache-2.0 |
Install
Docker is the path of least resistance. Two named volumes hold config and the SQLite db:
docker run -d --name fredy \
-v fredy_conf:/conf \
-v fredy_db:/db \
-p 9998:9998 \
ghcr.io/orangecoding/fredy:master
Manual run needs Node.js 22+ and two processes:
yarn
yarn run start:backend # terminal 1
yarn run start:frontend # terminal 2
Then open http://localhost:9998. Default login is admin / admin - change it immediately.
Config lives in config.json, mounted at /conf in Docker or in the conf/ directory for a manual install. Search jobs and notification adapters are set up from the web UI.
Value
The real win is the ImmoScout mobile API route. ImmoScout24 is the dominant German portal and aggressively blocks scrapers on its website. Hitting the mobile API instead means Fredy actually gets results where naive scrapers get blocked. For tight rental markets like Berlin, Munich or Hamburg, the speed advantage matters - good flats are gone in hours.
Other useful bits:
- Cross-portal dedup so the same listing on three sites pings you once
- Residential proxy support for anti-bot circumvention on the harder portals
- MCP server (from V20) that exposes the data to an LLM like Claude, so you can query listings in natural language
- Self-hosted - no third party sees your search criteria, no subscription
Main limitation: scrapers and reverse-engineered APIs break when portals change their site or API. Expect occasional maintenance, and watch the repo for adapter fixes. Apache-2.0 license, so commercial-friendly.
Further reading
- Fredy on GitHub - README, config docs, adapter list
- GitHub Container Registry image -
ghcr.io/orangecoding/fredy