Back to projects

Apartment Finder

2022

My first project, and the one that got me my apartment. It ran on a Raspberry Pi home server around the clock, watching the student housing listings and alerting me the moment a new one appeared.

  • Selenium
  • Web scraping
  • Automation
  • Raspberry Pi
  • Linux
  • HTML

The problem


Finding somewhere to live in Gothenburg is hard as a student who has not been queuing for points. A student apartment takes at least two years of accumulated points to secure, and I had nowhere near that many.

What is left is the small number of flats that go out to whoever gets there first. Those are gone in minutes, so the only way to compete was to be watching the page at the moment one appeared. That is what made me write this program.

Plan and execution


I started by reading the source of the Gothenburg listings page to work out what actually changes when a new apartment goes up. Each listing is its own div, so a new apartment means a new element in the list.

From there the logic is simple: load the page, collect the listings, compare them against the set I saw last time, and alert on anything that was not there before. Selenium drives the page so the listings that are rendered client side are present by the time I read them.

The whole thing then went onto a Raspberry Pi so it could keep checking throughout the entire day and alert me when a new apartment listing comes up.

What I learned


This was my first project that was genuinely useful to me. Instead of constantly refreshing the listings page myself, I automated the tedious part, and I got an apartment out of it.

It taught me that wanting something badly enough pushes you to solve it a different way than everyone else queuing for it.

It was the start of how I think about automation now, and my first real experience of building something for a specific use case rather than as an exercise.

Along the way I taught myself Linux, self hosting, and keeping a job running unattended.

The empty student room the program found: bare walls, a wooden floor, a small bookcase, a floor lamp and a bedside table, and a bed with a rolled up mattress on it.
The apartment the alert led to, on the day I moved in.