Skip to content

Market Analytics & History

Transparent rental market data to help tenants make informed decisions and landlords price competitively.

Price history

How it works

  • Snapshot listing price whenever status changes (draft → active, price edit, etc.)
  • Store in price_history table: listing_id, price, recorded_at
  • Display price timeline on listing detail page
  • Flag price drops / increases

Data model

FieldTypeDescription
iduuidPrimary key
listingIduuidForeign key to listings
pricePerMonthintegerPrice in cents at this point
eventstringWhat triggered the snapshot (created, published, edited, status_change)
recordedAttimestampWhen the snapshot was taken

Days on market

  • Calculate from publishedAt to current date (or rentedAt)
  • Show on listing detail and in search results
  • Listings on market >30 days get a subtle indicator
  • Average days on market per neighborhood

Neighborhood statistics

Public stats per neighborhood:

  • Average rent by bedroom count (studio, 1-bed, 2-bed, 3-bed, 4+)
  • Median rent
  • Number of active listings
  • Average days on market
  • Most common amenities
  • Pet-friendly percentage

Updated daily or on-demand via background job.

Price trend charts

  • Line charts showing rent trends over time
  • Filterable by neighborhood, borough, bedroom count
  • Comparison mode: overlay two neighborhoods
  • Powered by aggregated price_history data

Public stats dashboard

New page at /stats with:

  • City-wide overview (total listings, average rent, market activity)
  • Borough breakdown table
  • Neighborhood leaderboards (cheapest, most expensive, most listed)
  • Interactive charts

Historical listing archive

  • Rented and archived listings remain visible with a "no longer available" badge
  • Helps tenants understand market pricing
  • Building profiles show full listing history
  • Opt-out for landlords who prefer privacy