{"id":21962219,"url":"https://github.com/orangecoding/fredy","last_synced_at":"2026-04-20T10:05:39.875Z","repository":{"id":37981832,"uuid":"117512926","full_name":"orangecoding/fredy","owner":"orangecoding","description":"❤️ Fredy - [F]ind [R]eal [E]state [D]amn Eas[y] - Fredy keeps searching for new apartments, houses, and flats in Germany on platforms like ImmoScout24, Immowelt, Immonet, eBay Kleinanzeigen, and WG-Gesucht and instantly delivers the results to you via Slack, Telegram, Email, Discord or ntfy, so you can focus on the more important things in life ;)","archived":false,"fork":false,"pushed_at":"2026-04-09T09:51:52.000Z","size":30878,"stargazers_count":590,"open_issues_count":6,"forks_count":141,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-04-09T11:26:54.432Z","etag":null,"topics":["appartment","appartments","crawler","ebay-kleinanzeigen","fredy","immobilien","immobilienscout24","immonet","immoscout24","immowelt","nodejs","puppeteer","real-estate","real-estate-search","self-hosted","telegrambots","web-scraping","wg-gesucht","wohnungssuche"],"latest_commit_sha":null,"homepage":"https://fredy.orange-coding.net/","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/orangecoding.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["orangecoding"]}},"created_at":"2018-01-15T07:39:00.000Z","updated_at":"2026-04-09T09:51:56.000Z","dependencies_parsed_at":"2023-01-30T00:45:44.058Z","dependency_job_id":"213dbe5e-ef56-4f63-a7f1-5e65846c4d90","html_url":"https://github.com/orangecoding/fredy","commit_stats":null,"previous_names":[],"tags_count":174,"template":false,"template_full_name":null,"purl":"pkg:github/orangecoding/fredy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecoding%2Ffredy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecoding%2Ffredy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecoding%2Ffredy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecoding%2Ffredy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/orangecoding","download_url":"https://codeload.github.com/orangecoding/fredy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/orangecoding%2Ffredy/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32042311,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-20T00:18:06.643Z","status":"online","status_checked_at":"2026-04-20T02:00:06.527Z","response_time":94,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["appartment","appartments","crawler","ebay-kleinanzeigen","fredy","immobilien","immobilienscout24","immonet","immoscout24","immowelt","nodejs","puppeteer","real-estate","real-estate-search","self-hosted","telegrambots","web-scraping","wg-gesucht","wohnungssuche"],"created_at":"2024-11-29T10:35:41.700Z","updated_at":"2026-04-20T10:05:39.856Z","avatar_url":"https://github.com/orangecoding.png","language":"JavaScript","funding_links":["https://github.com/sponsors/orangecoding"],"categories":["JavaScript"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n\n\u003ca href=\"https://fredy.orange-coding.net/\"\u003e\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://github.com/orangecoding/fredy/blob/master/doc/logo_white.png\" width=\"400\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://github.com/orangecoding/fredy/blob/master/doc/logo.png\" width=\"400\"\u003e\n  \u003cimg alt=\"Jetbrains Open Source\" src=\"https://github.com/orangecoding/fredy/blob/master/doc/logo.png\"\u003e\n\u003c/picture\u003e\n\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://fredy.orange-coding.net/\" target=\"_blank\"\u003eWebsite\u003c/a\u003e\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\n  \u003ca href=\"https://fredy-demo.orange-coding.net/\" target=\"_blank\"\u003eDemo\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://github.com/orangecoding/fredy/actions/workflows/test.yml/badge.svg\" alt=\"Tests\" /\u003e\n  \u003cimg src=\"https://github.com/orangecoding/fredy/actions/workflows/docker.yml/badge.svg\" alt=\"Docker\" /\u003e\n  \u003cimg src=\"https://github.com/orangecoding/fredy/actions/workflows/check_source.yml/badge.svg\" alt=\"Source\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fghcr-badge.elias.eu.org%2Fapi%2Forangecoding%2Ffredy%2Ffredy\u0026query=%24.downloadCount\u0026label=Docker%20Pulls\" alt=\"Docker Pulls\" /\u003e\n\u003c/p\u003e\n\n\n\n# Fredy 🏡 – Your Self-Hosted Real Estate Finder for Germany\n\nFinding an apartment or house in Germany can be stressful and\ntime-consuming.\\\n**Fredy** makes it easier: it automatically scrapes **ImmoScout24,\nImmowelt, Immonet, eBay Kleinanzeigen, and WG-Gesucht** and notifies you\ninstantly via **Slack, Telegram, Email, ntfy, discord and more** when new\nlistings appear.\n\nWith a modern architecture, Fredy provides a **clean Web UI**, removes\nduplicates across platforms, and stores results so you never see the\nsame listing twice.\n\n------------------------------------------------------------------------\n\n## ✨ Key Features\n\n-   🏠 Scrapes **ImmoScout24, Immowelt, Immonet, eBay Kleinanzeigen,\n    WG-Gesucht**\n-   ⚡ Instant notifications: Slack, Telegram, Email (SendGrid,\n    Mailjet), ntfy, discord \n-   🔎 Uses the **ImmoScout Mobile API** (reverse engineered)\n-   🌍 Runs anywhere: Docker, Node.js, self-hosted\n-   🖥️ Intuitive **Web UI** to manage searches\n-   🎯 Easy to use thanks to a user-friendly Web UI\n-   🔄 Deduplication across platforms\n-   ⏱️ Customizable search intervals\n\n------------------------------------------------------------------------\n\n## 🤝 Sponsorship [![](https://img.shields.io/static/v1?label=Sponsor\u0026message=❤\u0026logo=GitHub\u0026color=%23fe8e86)](https://github.com/sponsors/orangecoding)\n\nI maintain Fredy and other open-source projects in my free time.\\\nIf you find it useful, consider supporting the project 💙\n\nFredy is proudly backed by the **JetBrains Open Source Support Program**.   \n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://www.jetbrains.com/company/brand/img/logo_jb_dos_3.svg\"\u003e\n  \u003csource media=\"(prefers-color-scheme: light)\" srcset=\"https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg\"\u003e\n  \u003cimg alt=\"Jetbrains Open Source\" src=\"https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.svg\"\u003e\n\u003c/picture\u003e\n\n------------------------------------------------------------------------\n\n## 👨‍🏫 Demo\nYou can try out Fredy here: [Fredy Demo](https://fredy-demo.orange-coding.net/)\n\n------------------------------------------------------------------------\n\n## 🚀 Quick Start\n\n### With Docker\n\n\u003e [!NOTE]\n\u003e In order to start Fredy, you must provide a config.json. As a start, use the one in this repo: https://github.com/orangecoding/fredy/blob/master/conf/config.json\n\n``` bash\ndocker run -d --name fredy \\\n  -v fredy_conf:/conf \\\n  -v fredy_db:/db \\\n  -p 9998:9998 \\\n  ghcr.io/orangecoding/fredy:master\n```\n\nLogs:\n\n``` bash\ndocker logs fredy -f\n```\n\n### Manual (Node.js)\n\n-   Requirement: **Node.js 22 or higher**\n-   Install dependencies and start:\n\n``` bash\nyarn\nyarn run start:backend   # in one terminal\nyarn run start:frontend  # in another terminal\n```\n\n👉 Open \u003chttp://localhost:9998\u003e\n\n### With Unraid\n\nShould you use [Unraid](https://unraid.net/), you can now install Fredy from the community store :)\n\n**Default Login:**\n- Username: `admin`\n- Password: `admin`\n\n------------------------------------------------------------------------\n\n## 📸 Screenshots\n\n| Fredy Maps View                                  | Dashboard                                               | Found Listings                                                              |\n|--------------------------------------------------|-----------------------------------------------------------------------|-----------------------------------------------------------------------------|\n| ![Screenshot showing Fredy](doc/screenshot1.png) | ![Screenshot showing job configuration in Fredy](doc/screenshot3.png) | ![Screenshot showing found listings in Fredy](doc/screenshot2.png) |\n\n------------------------------------------------------------------------\n\n## 🧩 Core Concepts\n\nFredy is built around three simple concepts:\n\n### Provider 🌐\n\nA **provider** is a real-estate platform (e.g. ImmoScout24, Immowelt,\nImmonet, eBay Kleinanzeigen, WG-Gesucht).\\\nWhen you create a job, you paste the search URL from the platform into\nFredy.\\\n⚠️ Always make sure the search results are sorted by **date**, so Fredy\npicks up the newest listings first.\n\n### Adapter 📡\n\nAn **adapter** is the channel through which Fredy notifies you (Slack,\nTelegram, Email, ntfy, discord ...).\\\nEach adapter has its own configuration (e.g. API keys, webhook URLs).\\\nYou can use multiple adapters at once --- Fredy will send new listings\nthrough all of them.\n\n### Job 📅\n\nA **job** combines providers and adapters.\\\nExample: \"Search apartments on ImmoScout24 + Immowelt and send results\nto Slack + Telegram.\"\\\nJobs run automatically at the interval you configure (see\n`/conf/config.json`).\n\n### MCP Server 🤖\n\nStarting with **V20**, Fredy ships with a built-in **MCP Server **. This allows you to connect Fredy to LLMs (like Claude, ChatGPT, or local models via LM Studio) and query your real estate data using natural language.\nThe local LLM can even enrich existing listings by checking the listing online.   \n\nFor more information on how to set it up and use it, please refer to the [MCP Readme](lib/mcp/README.md).\n\n------------------------------------------------------------------------\n\n## Immoscout\n\nImmoscout has implemented advanced bot detection. In order to work around this, we are using a reversed engineered version of their mobile api. See [Immoscout Reverse Engineering Documentation](https://github.com/orangecoding/fredy/blob/master/reverse-engineered-immoscout.md)\n\n## Analytics\n\nFredy is completely free (and will always remain free). However, it would be a huge help if you’d allow me to collect some analytical data.\nBefore you freak out, let me explain...  \nIf you agree, Fredy will send a ping once every 6 hours to my internal tracking project (Will be open sourced soon).  \nThe data includes: names of active adapters/providers, OS, architecture, Node version, and language. The information is entirely anonymous and helps me understand which adapters/providers are most frequently used.\u003c/p\u003e\n\n**Thanks**🤘\n\n## 🛠️ Development\n\n### Development Mode\n\n``` bash\nyarn run start:backend:dev\nyarn run start:frontend:dev\n```\nYou should now be able to access _Fredy_ from your browser. Check your Terminal to see what port the frontend is running on.\n\n### Run Tests\n\n``` bash\nyarn run test\n```\n\n------------------------------------------------------------------------\n\n## 📐 Architecture\n\n``` mermaid\nflowchart TD\n subgraph Jobs[\"Jobs\"]\n        A1[\"Job 1\"]\n        A2[\"Job 2\"]\n        A3[\"Job 3\"]\n  end\n subgraph Providers[\"Providers\"]\n        C1[\"Provider 1\"]\n        C2[\"Provider 2\"]\n        C3[\"Provider 3\"]\n  end\n subgraph NotificationAdapters[\"Notification Adapters\"]\n        F1[\"Adapter 1\"]\n        F2[\"Adapter 2\"]\n  end\n\n    A1 --\u003e B[\"FredyPipelineExecutioner\"]\n    A2 --\u003e B\n    A3 --\u003e B\n    B --\u003e C1 \u0026 C2 \u0026 C3\n    C1 --\u003e D[\"Similarity Check\"]\n    C2 --\u003e D\n    C3 --\u003e D\n    D --\u003e E{\"Duplicate?\"}\n    E -- No --\u003e F1\n    F1 --\u003e F2\n```\n\n------------------------------------------------------------------------\n\n## 👐 Contributing\n\nThanks to everyone who has contributed!\n\n\u003ca href=\"https://github.com/orangecoding/fredy/graphs/contributors\"\u003e\u003cimg src=\"https://contrib.rocks/image?repo=orangecoding/fredy\" /\u003e\u003c/a\u003e\n\nSee the [Contributing\nGuide](https://github.com/orangecoding/fredy/blob/master/CONTRIBUTING.md).\n\n------------------------------------------------------------------------\n\n## ⭐ Star History\n\n[![Star History\nChart](https://api.star-history.com/svg?repos=orangecoding/fredy\u0026type=Date)](https://www.star-history.com/#orangecoding/fredy\u0026Date)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forangecoding%2Ffredy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Forangecoding%2Ffredy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Forangecoding%2Ffredy/lists"}