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.


New Feature

School Term

We’ve supported student housing data for several years, and now we’re making it even easier to use by introducing school term as a dedicated field. This addition makes it simpler to compare data across different terms and is available in the availability periods and units.

Notice: By introducing school term, our unit ids will change for units that have a school_term. We explored a few options to avoid this but because the same unit in the same floorplan can be offered for different school terms at the same time, we had to treat them as individual units.


Deprecation: Quality Score

The /qualityscore/* computer vision endpoints are now deprecated. These models have been outdated for some time, and usage has been minimal. We’re focusing our efforts on more impactful and widely used features. Quality score insights will continue to be available in the property details payload.

These endpoints will continue to function for now, but we plan to remove them on Jan 1st 2026. If you rely on them, we recommend transitioning to the quality analysis available on property details payload as soon as possible.


New Feature

Async Dataset Export with Webhook Notifications

  • Introduced /dataset/export endpoint for asynchronous dataset exports with webhook delivery
  • Perfect for large datasets that would timeout with synchronous requests
  • Supports both CSV and JSONL output formats with gzip compression
  • HMAC signature verification ensures webhook authenticity using your API key
  • Download URLs are valid for 30 days from export completion
  • Requires Query Builder subscription for full access

Key Benefits:

  • Process large datasets without timeout constraints
  • Integrate with automated data pipelines and workflows
  • Receive results asynchronously via secure webhook notifications
  • Track exports using unique query UUIDs for request/response matching

Example Request:

1{
2 "dataset": {
3 "scopes": [
4 {"column": "street_address"},
5 {"column": "asking_rent", "aggregate": "Avg"}
6 ],
7 "filters": [
8 {"column": "msa", "filter": {"equals": "Seattle, WA"}},
9 {"column": "bed", "filter": {"in": [1, 2, 3]}}
10 ],
11 "limit": 10000
12 },
13 "webhookURL": "https://yourapp.com/webhook/dataset-export",
14 "name": "Seattle Rental Data Export",
15 "format": "csv"
16}

Webhook Response:

1{
2 "queryUUID": "123e4567-e89b-12d3-a456-426614174000",
3 "name": "Seattle Rental Data Export",
4 "format": "csv",
5 "gcsBlob": {
6 "url": "https://storage.googleapis.com/...",
7 "expires": "2024-07-26T10:30:00Z",
8 "timeTakenMs": 45000,
9 "numberRows": 12847
10 },
11 "hmacSignature": "a1b2c3d4...",
12 "requestedOn": "2024-06-26T10:00:00Z",
13 "completedOn": "2024-06-26T10:00:45Z"
14}

See our Dataset Webhook Export Guide for complete implementation details and webhook handler examples.