Every property portal in one search.

Fredy keeps searching ImmoScout24, Immowelt, Kleinanzeigen and 16 more portals for new apartments, houses and flats in Germany, Austria and Switzerland, and delivers every hit to Slack, Telegram, Discord, email or ntfy, so you can focus on the more important things in life.

Fredy map view of Dusseldorf with listing pins, the public transport network drawn on top and a live departure board for a nearby stop.
  Docker pulls
  GitHub stars
  Active reporting instances
19 Portals covered
Apache‑2.0 Free, and staying free

What Fredy actually does

It is a small server you run yourself. It searches, it stores, it works things out, and then it gets out of your way.

One dashboard for every search

Search interval, last and next run, how many listings came in over the last seven days, and which portal they came from.

The same flat, once

A listing posted on three portals reaches you a single time. Everything already seen is stored, so nothing arrives twice.

Ask it in plain language

A built‑in MCP server exposes your jobs and listings to Claude, ChatGPT or a local model, including the affordability maths.

Listings that stay put

Everything Fredy finds is kept, searchable and filterable, with a watchlist for the ones worth a second look and a note when a price moves.

What it would actually cost you

Tell Fredy your household once, income, living costs, anything you are already paying off, and every listing is measured against it. Renting and buying each get their own tab.

35 %

The ceiling Fredy measures against: housing costs plus existing debt, as a share of net income. Every listing gets a verdict chip against that rule.

46.000 €

Roughly the Kaufnebenkosten on a 400.000 € house in NRW: Grunderwerbsteuer, Notar, Grundbuch and Maklerprovision, financed or paid out of pocket.

The buying tab models an Annuitätendarlehen

  • Monthly rate, and how it splits into interest and repayment over the years
  • Restschuld when the Zinsbindung runs out, and the age you are debt free
  • The highest purchase price that stays inside the rule
  • Several loan scenarios compared side by side

The renting tab asks for less

Portals quote the Kaltmiete, a household pays warm. Set the Nebenkosten surcharge once and Fredy reports the highest cold rent you can take on, what that comes to warm, and what is left over each month. Someone who only ever rents is never asked about Grunderwerbsteuer.

An estimate, not financial advice. Grunderwerbsteuer rates ship as editable defaults, and Bundesländer change them. Get a binding offer from your bank.

Not kilometres. Minutes.

Two flats the same kilometre from your office can be eight minutes and fifty minutes away from it. Fredy measures the journey from your own front door instead.

  • Reachable within

    Pick a mode and a ceiling, public transport within 30 minutes say, and the pins that fail it disappear. Car, bike and walking too.

  • The network, drawn

    Rail, S‑Bahn, U‑Bahn and tram on the map, every stop with its own departure board, and the three nearest stops on every listing.

  • Nothing invented

    Every number says whether it is estimated or exact, and a mode Fredy could not route is left out rather than shown as zero.

Timetables and journey planning come from Transitous, a community‑run MOTIS instance. Map data from OpenStreetMap contributors. No API key needed.

19 portals in, 15 channels out

A job combines the portals you want searched with the channels you want told. Add as many of each as you like.

Supported portals

Seventeen German portals, plus willhaben for Austria and Flatfox for Switzerland. ImmoScout24 runs through its mobile API; for the rest you paste a search URL and Fredy takes it from there.

Notification channels

  • Telegram
  • Slack
  • Discord
  • Mattermost
  • ntfy
  • Pushover
  • Apprise
  • Browser push
  • SMTP
  • SendGrid
  • Mailjet
  • Resend
  • HTTP webhook
  • SQLite
  • Console

Set a channel up once and reuse it across jobs, so rotating a token means editing one channel rather than every search. An admin can share a channel with other users without ever showing them the credentials.

Running in one command

No configuration file to write. Fredy creates one on first run, and everything else is set in the web UI.

Web UI
http://localhost:9998
Default login
admin / admin
Manual install
Node.js 22 or higher
Languages
English, Deutsch, Türkçe
docker run -d --name fredy \
  -v fredy_conf:/conf \
  -v fredy_db:/db \
  -p 9998:9998 \
  ghcr.io/orangecoding/fredy:master

Follow along with docker logs fredy -f.

On a VPS, portal anti‑bot systems tend to block datacenter IPs on reputation alone. Set a German residential proxy under Administration › Execution and the browser‑based portals go through it.

Fredy in the wild

Instances that opted into analytics report which portals and channels they run, and what the searches they run cost per square metre. No addresses, no searches, no users. Here is what that adds up to right now.

Portals in use

Channels in use

What those searches cost

The same instances report one more number per search: the median price per square metre of the listings Fredy found for it. On its own that number compares to nothing, because every search filters it first. Someone capped at 600 € a month and someone shopping between 2,000 and 4,000 describe the same city with different figures, and pooling the two produces a figure that belongs to neither.

So every observation is filed into the budget it came from. Each row below is one such band: the tick sits on the median of the city medians in it, and where a band holds more than one city, the bar spans the middle half of them. Renting and buying get their own ladder, because they differ by a factor of roughly two hundred. Pick a band to see the cities underneath it.

Point it at your search and forget about it.