❤️ Fredy - [F]ind [R]eal [E]states [D]amn Eas[y]
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
conf
lib
test
.gitignore
.nvmrc
.travis.yml
CONTRIBUTION.md
LICENSE
README.md
index.js
package-lock.json
package.json
yarn.lock

README.md

Fredy

[F]ind [R]eal [E]states [D]amn Eas[y] ❤️

My wife and I wanted to buy an apartment in germany. As the prices are quite high and good deals are very rare, we searched the "big 4" every morning.

This however can get pretty frustrating. Fredy will take this work away from you. It crawls the provider, mentioned below (Immonet, Immoscout...) every x minutes. (The provider list can be extended easily...)

If Fredy found matching results, it will send them to via Slack. (More adapter possible.) Fredy is remembering what it already has found to not send stuff twice.

Usage

  • Make sure to use Node 8 and above
  • Install the dependencies using npm install
  • create your configuration file. Use the example config for this. cp conf/config.example conf/config.json
  • configure the desired values
  • start Fredy using npm start

Configuration

Before running Fredy for the first time, you need to create a configuration file:

Copy the example config as a start.

cp conf/config.example conf/config.json

1. Notification

You want to get notified when Fredy found a new listing. Currently Fredy support Slack and Telegram to send notification. Fredy also includes a notification adapter to print to the console instead of sending to a services.

Adding new notification adapter is easy however. See Contribution

Slack
"slack": {
  "channel": "someChannel",
  "token": "someToken",
  "enabled": true
}
Telegram
"telegram": {
  "chatId": "someChannel",
  "token": "someToken",
  "enabled": true
}

For Telegram, you need to create a Bot. This is pretty easy. Open this url on your smartphone and follow the instructions. A telegram bot is not allowed to send messages directly to a user, you as a user need to first contact the bot to get a chatId.
After the user has send a message to your bot the first time, you can gather the chatId like this:

curl -X GET https://api.telegram.org/bot{YOUR_TELEGRAM_TOKEN}/getUpdates

A more detailed list of instructions can be found here https://core.telegram.org/bots#botfather

2. Configure the providers

Configure the providers like described below. To disable a provider just remove its entry from the configuration or set it to false.

Immoscout, Immonet and more

These are the current provider that are already implemented within Fredy

"kleinanzeigen": {
    "url": "https://www.ebay-kleinanzeigen.de/...",
    "enabled": true
}
"immoscout": {
  "url": "https://www.immobilienscout24.de/...",
  "enabled": true
},
"immowelt": {
  "url": "https://www.immowelt.de/...",
  "enabled": true
},
"immonet": {
  "url": "http://www.immonet.de/...",
  "enabled": true
},
"kalaydo": {
  "url": "http://www.kalaydo.de/...",
  "enabled": true
},
"einsAImmobilien": {
  "url": "https://www.1a-immobilienmarkt.de/...",
  "enabled": true
},
"neubauKompass": {
  "url": "https://www.neubaukompass.de/...",
  "enabled": true
}

Go to the respective provider page and create your custom search queries by using the provided filter options. Then just copy and paste the whole URL of the resulting listings page.

IMPORTANT: Make sure to always sort by newest listings! This way Fredy makes sure to not accidentally report stuff twice.

Custom provider

See Contribution

3. Add Filters (optional)

Blacklist

"blacklist": [
  "vermietet"
]

Listings which contain at least on of the given terms (ignoring case, only whole words) are removed.

District blacklist

"blacklistedDistrics": [
  "Altstadt"
]

Districts that are unwanted can be blacklisted here.

This makes sense for provider that only offer limited filter functions like Kalaydo/Ebay.

Stats

To monitor, what Fredy is internally doing, you might want to check the current stats. These includes the config that is currently being used. Also it includes an array of filter results per provider.

You can call the stats http endpoint like this:

curl http://localhost:9876

The ports is depending on what you've configured in your config file.