Fredy

Self-hosted Node.js app that scrapes German property portals and pushes new listings to Slack, Telegram, Discord, Email or ntfy.

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:

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