{"id":21962219,"url":"https://github.com/orangecoding/fredy","last_synced_at":"2026-03-16T11:13:06.453Z","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-03-08T09:09:03.000Z","size":28613,"stargazers_count":538,"open_issues_count":3,"forks_count":130,"subscribers_count":4,"default_branch":"master","last_synced_at":"2026-03-08T12:44:27.195Z","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-03-08T12:43:05.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":159,"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":30329698,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-10T05:25:20.737Z","status":"ssl_error","status_checked_at":"2026-03-10T05:25:17.430Z","response_time":106,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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-03-10T10:07:33.966Z","avatar_url":"https://github.com/orangecoding.png","language":"JavaScript","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------------------------------------------------------------------------\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","funding_links":["https://github.com/sponsors/orangecoding"],"categories":["JavaScript"],"sub_categories":[],"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"}