Skip to content

flxholle/FlatScraper

Repository files navigation

Contributors Forks Stargazers Issues MIT License


FlatScraper

A Kotlin Multiplatform app to scrape, aggregate, filter, and manage Zurich flat-share offers in one place.
Explore the repository »

View Issues · Report Bug · Request Feature

Table of Contents
  1. About The Project
  2. Getting Started
  3. Usage
  4. Roadmap
  5. Contributing
  6. License
  7. Contact
  8. Acknowledgments

About The Project

Main app view Offer details and filters Template and workflow management

FlatScraper is a desktop-first housing aggregation tool for Zurich students and renters. It collects offers from multiple platforms, stores them locally, and provides a workflow-centered UI to filter opportunities and track outreach.

What it is optimized for:

  • fast periodic scraping and unified offer tracking
  • rich filtering and multi-level sorting for high-volume offer streams
  • reusable message templates and status flags (favorite, messaged, deleted) for application workflows
  • transit-time-aware decision making via Google Maps integration

(back to top)

Built With

  • Kotlin
  • Compose Multiplatform
  • Room
  • Jsoup
  • Selenium

(back to top)

Getting Started

Follow these steps to run FlatScraper locally.

Prerequisites

  • JDK 11+
  • Android SDK (only needed for Android builds)
  • Internet access for scraping targets and API-backed features

Installation

  1. Clone the repository.
git clone https://github.com/flxholle/flatscraper.git
cd flatscraper
  1. (Optional) Configure local Android SDK path in local.properties.
  2. Run the desktop app.
./gradlew :composeApp:run
  1. Open Settings in-app and set:
  • Google Maps destination(s)
  • Google Maps API key(s)
  • ETH Wohnen credentials (if used)
  1. Build and test.
./gradlew build
./gradlew test

(back to top)

Usage

  • Click Refresh to run all configured scrapers.
  • Use Filter to define constraints (rent, dates, source, room traits, transport times, and more).
  • Save reusable filters and switch quickly between them.
  • Use Templates to create/edit prewritten application messages.
  • Manage per-offer workflow with favorite, messaged, and deleted actions.
  • Use the availability widgets for selected student housing providers.

More Resources

(back to top)

Roadmap

  • Add a type attribute to offers:
    • Flat
    • Shared Flat
    • (Studio) Apartement
    • House
  • Check for no longer existing offers and mark them as deleted
  • Add a vertical scrolling bar (currently not supported in Kotlin Multiplatform)
  • Replace the broken webview library

See the open issues for planned improvements and known problems.

(back to top)

Contributing

Contributions, bug reports, and feature suggestions are welcome.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

Top contributors

contrib.rocks image

(back to top)

License

Distributed under the MIT License. See LICENSE for more information.

(back to top)

Contact

Project maintainer: @flxholle

Project link: https://github.com/flxholle/flatscraper

(back to top)

Acknowledgments

(back to top)

About

A Kotlin Multiplatform app to scrape, aggregate, filter, and manage Zurich flat-share offers in one place.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages