Upside Down #
When you are a tenant, you suffer from information asymmetry. Your landlord knows what the previous tenant paid, your neighbours for similar units pay and how many interested potential tenants exist at a price point. Whereas the individual tenant only knows their willingness to pay at a price. Knowing how many units are available but not listed on their marketing site, the closest comparable unit rented and the number of price drops for a unit gives a potential tenant more leverage in the negotiations.
I used to live at the L7 complex pre-COVID. So when I decided to return to SF for the new year, it was the first place I looked. Being a curious cat, I was poking around their frontend. Was it a static site or could it be backed by an API? Turns out L7 uses a headless CMS that has unauthencated endpoints for the marketing site.
How Does It Work #
Using an unauthenticated API endpoint, we can get rent data for all the units at that point in time. So I wrote a script to fetch all the data and update a JSON file if there are new rent entries for a unit. This is run daily on by a Github Action cron job. A similar example would be https://github.com/upptime/upptime.
Caveats #
This dataset does not track promotions (ex: 1 month free rent). It is only tracks the base listed/rented rent price data.
Tradeoffs #
Github Actions #
Even though I scheduled the cron to run at the end of everyday, there are delays of upto 20 minutes. This is acceptable for the project, since I do not expect rent prices for the complex to change on a minute or hourly basis.
Links #
Source Code: https://github.com/NisanthanNanthakumar/l7sf
L7SF Website: https://www.l7sf.com