New Feature

Query Builder: Rent Roll Columns

Added a new Rent Roll column category for Query Builder. New columns:

  • rent_roll_floorplan_name
  • rent_roll_bed
  • rent_roll_bath
  • rent_roll_partial_bath
  • rent_roll_asking_rent
  • rent_roll_in_place_rent
  • rent_roll_estimated_units

rent_roll_in_place_rent maps to rent_roll.effective_price.

Improvement

Query Validation: Rent Roll Compatibility Guardrails

Query Builder now rejects incompatible mixed selections with HTTP 422 across dataset validation endpoints.

Incompatible mix:

  • Any Rent Roll column
  • With any Unit, Price, or Leasing Activity (occupancy) column

This rule applies to both selected scope columns and filter columns.

Improvement

Query Builder: Rent Roll Aggregation Selectors

Added 3 mutually exclusive Rent Roll aggregation selector columns:

  • rent_roll_aggregation_bed_bath
  • rent_roll_aggregation_bed_bath_sqft
  • rent_roll_aggregation_floorplan

Only one selector can be used in a query.

Rent Roll metrics now require one selector:

  • rent_roll_asking_rent
  • rent_roll_in_place_rent
  • rent_roll_estimated_units

If Rent Roll metrics are used without one of the selectors, dataset endpoints return HTTP 422 with a validation message.


Improvements

Property

  • New query parameter use_all_in_rent can be passed in to adjust property prices to use the All-in Rent value (also known as Total Monthly Leasing Price).

Improvement

Relative Date Filters in Query Builder

Date filters in the Query Builder now support relative time ranges (in addition to selecting specific calendar dates). This is especially useful for scheduled dataset exports, so each run automatically targets the most relevant time window.

Supported relative options include:

  • Last N Days
  • Last Week
  • Last Month
  • Last Quarter
  • Last Year

The backend resolves relative date selections into concrete dates at execution time, ensuring scheduled exports stay up-to-date.


New Feature

Date Filtering for Property Details

We’ve added optional date filtering to the GET /property/{id} endpoint, allowing you to filter units, history, availability periods, and concessions based on a date range.

New Query Parameters:

  • from (optional): Filter results to include only data that overlaps with dates on or after this date (ISO 8601 format, e.g., “2024-01-01”)
  • to (optional): Filter results to include only data that overlaps with dates on or before this date (ISO 8601 format, e.g., “2024-12-31”)

What Gets Filtered:

  • Units: Filtered based on enter_market and exit_market dates
  • History: Filtered based on from_date and to_date of each history entry
  • Availability Periods: Filtered based on enter_market and exit_market dates
  • Concessions: Filtered based on from_date and to_date of each concession

Usage: You can provide either date, both dates, or neither. When dates are provided, only data that overlaps with the specified date range will be included in the response.

Example Requests:

$# Filter to data from January 2024 onwards
$GET /property/{id}?from=2024-01-01
$
$# Filter to data up to December 2024
$GET /property/{id}?to=2024-12-31
$
$# Filter to data within a specific date range
$GET /property/{id}?from=2024-01-01&to=2024-12-31
$
$# No filtering (returns all data)
$GET /property/{id}

This feature is particularly useful when you need to analyze property data for a specific time period or when generating reports for a particular date range.


New Feature

Effective Rent Filtering in Unit Mix

We’ve added support for filtering by effective rent (after concessions) in addition to asking rent. You can now filter properties by effective rent and effective rent per square foot for all unit types.

New Filter Fields:

  • effective_rent: Filter by average effective rent (net rent after concessions)
  • effective_rent_per_sqft: Filter by average effective rent per square foot

These filters are available for:

  • Overall property metrics
  • Individual unit types (studio, 1BR, 2BR, 3BR, 4BR)

Example Payloads:

1{
2 "filters": {
3 "unit_mix": {
4 "overall": {
5 "effective_rent": {
6 "min": 1500,
7 "max": 2500
8 },
9 "effective_rent_per_sqft": {
10 "min": 3.0,
11 "max": 5.0
12 }
13 }
14 }
15 }
16}

You can combine effective rent filters with asking rent filters to compare properties:

1{
2 "filters": {
3 "unit_mix": {
4 "two_bedroom": {
5 "rent": {
6 "min": 2000,
7 "max": 3000
8 },
9 "effective_rent": {
10 "min": 1800,
11 "max": 2800
12 }
13 }
14 }
15 }
16}

Effective rent filters work the same way as asking rent filters, supporting minimum/maximum values and optional inclusion of properties with null values via the allow_null parameter.


Improvement

Rate Limiter: Updated headers

We’ve updated our rate limit headers from IETF draft v7 to the latest v10 format. The headers now use structured header syntax with quoted policy names for better standardization and compatibility.

Header Format Changes:

  • RateLimit-Policy: Now uses structured header format with quoted policy name
    • Format: "policy-name";q=quota;w=window
    • Example: "default";q=500;w=60 (500 requests per 60 seconds)
  • RateLimit: Updated to use structured header format with quoted policy name
    • Format: "policy-name";r=remaining;t=reset
    • Example: "default";r=499;t=59 (499 requests remaining, 59 seconds until reset)

The header values are now fully compliant with the latest IETF draft standard, making it easier for clients to parse and handle rate limit information programmatically.


New Feature

Comparables: Student Assets & Distance to Universities

We added support to POST /property/comparables for more student housing scenarios. Use isStudent=true to indicate the subject is student housing and optionally pass maxMilesToUniversity (in miles) to prioritize proximity to universities when ranking comps. These query params are optional and fully backward compatible.

The algorithm now prioritizes comps with a similar distance to universities as the subject property.


New Feature

Property Search: created_on

We added a new field created_on to the GET /property/search endpoint so you know when the data was last updated. This field will be populated 2025-10-25.


New Feature

Market: Shape Search endpoint

We added a GET /market/shape_search endpoint to search for markets by name, city, state, or tags. Provide the q query string to receive up to 7 matches, including market names and GeoJSON shapes of the market boundaries. This endpoint is free to use and can be enabled on demand.


New Feature

Property To support greater fee transparency and help clients make fair comparisons, our system will now always display the base rent. In addition, we’ve introduced a new building-level attribute, fees, which includes all required and non-refundable charges. This allows clients to compare both base rent and all-in rent across buildings more accurately.