Website | Demo | Quick Start | Docs
Fredy 🏡 - Your Self-Hosted Real Estate Finder for Europe
Fredy watches 24 real estate portals across 🇩🇪 🇦🇹 🇨🇭 🇪🇸 🇮🇹 🇵🇹 for you (e.g. Immoscout, Kleinanzeigen etc), drops duplicates across platforms, and notifies you via Slack, Telegram, Email, ntfy, Discord and more the moment a new listing appears. Searches are managed from a Web UI, and you never see the same listing twice.
On top of the listing itself, Fredy answers the three questions a portal will not:
- What would this cost me? Enter your income, living costs and savings once, and every listing is measured against them, for renting and for buying. → Financing
- How long would I actually travel? Not straight-line distance, but the real journey from your own address by public transport, car, bike or on foot. → Travel time
- Is this too good to be true? Fredy reads every listing for the marks of a rental scam and warns you when enough of them line up. → Scam detection
| Fredy Maps View | Dashboard | Found Listings |
|---|---|---|
![]() |
![]() |
![]() |
🚀 Quick Start
Docker (recommended)
docker run -d --name fredy \
-v fredy_conf:/conf \
-v fredy_db:/db \
-p 9998:9998 \
ghcr.io/orangecoding/fredy:master
👉 Open and sign in with admin / admin.
[!NOTE] No configuration file is needed to start. Fredy creates
/conf/config.jsonon first run if it is missing. That file only holds the database path, everything else is configured in the Web UI and stored in the database. Documents you upload live in the database too, so the/dbvolume above is all you need to keep them, and every backup already contains them.
:master follows the master branch; pin a release with its version tag instead, e.g.
ghcr.io/orangecoding/fredy:28.0.0. Images are built for linux/amd64 and linux/arm64. Logs:
docker logs fredy -f.
There is also a pre-release channel following the develop branch,
ghcr.io/orangecoding/fredy-pre-release:latest. It is built from the same pipeline (lint, format
check and the offline test suite all have to pass first), but the changes in it have not been through
master yet. Use it to try upcoming features or to verify a fix, not for an instance you rely on.
Node.js
Requires Node.js 22.22.0 or higher.
yarn
yarn run build:frontend # builds the Web UI into ui/public
yarn run start:backend # serves the UI and the API on port 9998
Unraid
Fredy is in the Unraid community store.
✨ What you get
- 🏠 24 portals across 🇩🇪 🇦🇹 🇨🇭 🇪🇸 🇮🇹 🇵🇹: ImmoScout24, Immowelt, Kleinanzeigen, WG-Gesucht, willhaben, Flatfox, idealista, Subito and 16 more
- ⚡ Instant notifications: Slack, Telegram, Email (SMTP, SendGrid, Mailjet, Resend), ntfy, Discord, Mattermost, Pushover, Apprise and more
- 🔄 Deduplication across platforms: the same flat advertised on ImmoScout, Immowelt and Kleinanzeigen reaches you once, matched on living space, rooms and location rather than on the headline, no two portals write that the same way
- 🛑 Scam detection: a warning on listings that read like rental fraud, with your verdict always outranking Fredy's
- 💶 Financing calculator: which listings you can afford, for renting and for buying
- 🚆 Real travel times from your addresses by public transport, car, bike or on foot, plus a filter to match, and the transport network with live departures on the map
- 📊 Market benchmark: the price per m² of every listing against the local median, so cheap and expensive are facts rather than a feeling
- 📎 Document uploads: attach the exposé, floor plans and photos to a listing, so they survive the portal taking the ad down. A listing with documents is never cleaned up automatically
- 🖥️ Web UI in several languages, with configurable search intervals and working hours
- 🤖 MCP server: query your listings from Claude, ChatGPT or a local LLM
- 🌍 Runs anywhere: Docker, Node.js, self-hosted, and uses the reverse engineered ImmoScout Mobile API
🧩 Basic architecture overview
| Concept | What it is |
|---|---|
| Provider 🌐 | A real-estate platform. You paste a search URL from the portal into Fredy, sorted by date. |
| Adapter 📡 | A kind of connection Fredy can send through (Slack, Telegram, Email, ntfy, Discord ...). You never configure one on its own. |
| Channel 🔔 | One filled-in adapter, e.g. "Telegram → family chat", saved once under Settings → Notification channels and reused in as many jobs as you like. |
| Job 📅 | Providers + channels: "search ImmoScout24 and Immowelt, send to Slack and Telegram". Runs at the interval set under Administration → Execution. |
A job can hold as many channels as you want, including several of the same type, and every new listing goes out through all of them at once. Rotating a token means editing one channel instead of every job that used it. Channels belong to whoever created them; an admin can share one with all users or with admins only, which lets others send through it without ever revealing its credentials. A channel still used by a job cannot be deleted.
flowchart TD
subgraph Jobs["Jobs"]
A1["Job 1"]
A2["Job 2"]
A3["Job 3"]
end
subgraph Providers["Providers"]
C1["Provider 1"]
C2["Provider 2"]
C3["Provider 3"]
end
subgraph NotificationChannels["Notification Channels"]
F1["Channel 1"]
F2["Channel 2"]
end
A1 --> B["FredyPipelineExecutioner"]
A2 --> B
A3 --> B
B --> C1 & C2 & C3
C1 --> D["Similarity Check"]
C2 --> D
C3 --> D
D --> E{"Duplicate?"}
E -- No --> G["Enrich: market price, scam signals, travel time"]
G --> F1 & F2
📚 Going deeper
| Topic | What is in there |
|---|---|
| Providers & scraping | All 24 providers, the Immoscout / idealista / Casa.it specifics, and residential proxies for when a VPS gets blocked |
| Scam detection | The signals, their weights, the languages, and how to overrule Fredy |
| Financing calculator | Rent and Annuitätendarlehen, Kaufnebenkosten, Rests |



