Property Searcher

yacoubb/property-searcher
Python script used to check various UK property websites for new properties that meet user-specified search criteria.
Python
0
0

At the end of Summer 2018, I found myself in a difficult spot. I'd left finding a place for myself and one of my friends to live in for the second year of university dangerously late, and as a result was forced to spend a solid 6 hours per day searching for a suitable flat for just over a week. We managed to find a place in the end, but the searching process was so painfully repetitive I vowed to never be in a situation where I would have to do it again.
Fast forward 8 months and it's the start of Summer 2019, and house searching is just round the corner. Remembering what I had learned from the year before I had identified several parts of the house-searching process that could be easily optimised. Properties had to meet four criteria:

  • They had to be within a 40 minute commute to uni.
  • The commute had to only contain one leg of public transport. No changes and no getting a bus then a tube or vice versa.
  • They had to be within a specific price range.
  • They had to have a reception room.
I did most of my property searching on rightmove.com, so I googled around to see if there were any apis available for public use. Rightmove unfortunately don't provide an api, but I did manage to find a python package that scraped the website and returned properties that fit a search criteria (sorry for scraping your website rightmove).
I then had to find a free api that could provide directions between locations. Google has an api for Maps, but it has a harsh paywall - the free api only allows for 1 call a day. After some searching I came across the TFL api, which allowed me to make up to 500 calls a minute, for free.
Combining these two apis into a package of python scripts allowed me to filter through over 1000 properties to find the place I'm living in today.

All in all I found this to be an engaging project, it taught me a lot about api keys and call throttling, as well as forcing me to get my feet wet with the requests library and json formatting.