pricefixed · open tools · rent transparency · nyc first

The rent number on your lease was not set by a person. It was set by software.

Landlords across the country feed their vacancies into shared pricing algorithms, and those algorithms raise rents in lockstep across competitors. The Department of Justice sued over it and called it what it is: price-fixing.

You cannot audit an algorithm without the data it feeds on, and almost none of that data is public. So this starts where every real answer starts: pulling the data into the open, owned by no one, for anyone to build on.

Get the tools on GitHub Try Apartment Autopsy What's inside
Live feeds
12
10 landlord-direct + 2 brokerage backends
Active listings right now
6,401
straight from the source, no portal
Price snapshots kept
8,264
the history listing sites throw away
Buildings on record
3,197
owners, portfolios, rent stabilization
$ python3 scrape.py --status elliman 2344 active nooklyn 1526 active corcoran 1365 active stuytown 317 active securecafe 270 active avalonbay 250 active tfcornerstone 124 active stonehenge 78 active ogdencap 52 active glenwood 27 active durst 25 active appfolio 23 active TOTAL 6401 active # live output, not a mock
the wall

The data is the wall.

Zillow and StreetEasy are paid by landlords and brokers, so the real prices and the real history stay locked behind them. But there is a crack in the wall: landlords have to publish their availability to lease their own units. Those landlord-direct feeds are public by necessity.

pricefixed reads them, snapshots every price and lease term on every pull, and writes it all to a plain SQLite file. No account, no key, no lock-in. The portals show you today's ask and throw the rest away. Run this on a cron and you keep what they discard: the real trajectory of what every unit asked, over time.

what ships today

Three primitives, one SQLite file.

the feeds

Scrapers that stay simple

12 reference adapters, from single landlords to the Corcoran and Elliman backends that carry MLS-syndicated listings from the whole broker market. Python standard library only. FEEDS.md maps the rest.

the history

Snapshots the sites discard

Every pull writes one row per listing to price_history. Price drops, lease-term changes, delistings: recoverable forever, sellable by no one.

the record

One record per building

A standardized public record composed from city data: who owns it, which portfolio it belongs to, whether it is rent stabilized. 3,197 buildings so far.

Straight about what this is today: the data layer, not the detector. The history is 14 pulls young and compounds from here. Exposing the pricing algorithms is the destination, and you do not get there without this floor.
point your agent at it

You do not have to write the glue.

Clone the repo, hand it to Claude or Codex, and say "read BUILD.md and help me build an apartment database." It asks what you want and builds exactly that from the feeds and the record.

every 1-bedroom under $3,000 that dropped its price this week
Your agent composes the feeds, the history, and the building record to answer. The tools are the primitive. The inventory is yours to shape.
landlord feeds
→
scrape.py
→
listings.db · price_history · record.db
→
your agent

The bigger move: the 12 adapters are reference implementations. Point your agent at the source map and the compile method, and it builds new adapters row by row. Compiling the rest is a crank anyone, human or AI, can turn.

where this goes

Three steps, in order.

01

The feedsships today

Maintained, dependency-free scrapers for landlord-direct sources. NYC first, because it is the hardest and the most walled.

02

The inventory

A published, open dataset of what the feeds return over time, so nobody has to run the scrapers to get the history.

03

The algorithms

Reverse-engineering how landlord pricing software actually sets your rent, in public, so the thing setting the price can finally be seen.

On scraping: it has a bad name, and it is also how every big real-estate company got its data in the first place. They just block you when you try to get it back. These tools read what landlords publish to lease their own units, at gentle rates, from public pages.

MIT. No account. No key.

Clone it, run one command, and the wall starts coming down one SQLite file at a time.

$ git clone https://github.com/pauljump/pricefixed $ cd pricefixed && python3 scrape.py # pull every source into ./listings.db