Updated the API documentation to match current rate limit, error, and bulk property details behavior.
- Documented rate limit response headers and retry guidance without publishing fixed limits
- Added the Property Lookup access requirement note
- Updated Bulk Property Details and Search Properties access and quota notes
- Clarified JSON, plain text, and empty-body error responses
The Property Lookup (
GET /properties/lookup) endpoint now supports filtering by property URL.- Added
property_urlquery parameter (partial match supported)
The Compare Markets (
POST /explore_markets) response no longer includes absorption_rate_avg_t30.Updated authentication docs and OpenAPI schema to accurately reflect the OAuth token flow.
- Removed incorrect JWT references from the auth page and OpenAPI security scheme
- Fixed token response example to match the actual API response (opaque token, correct casing, added
scopeandcreated_atfields) - Documented
application/jsonas an alternative content type for the token endpoint - Simplified the OpenAPI security configuration to a single
oauth2scheme - Updated Try It panel description to match the bearer token input UX
account_id parameter when calling other endpoints.- Accounts
- List Accounts:
GET /accounts- Retrieve a paginated list of accounts with their ID and name - Supports pagination via
pageandper_pagequery parameters (default 50 per page, max 100)
- List Accounts:
The Geo Boundary Forecasts (
POST /geo_boundary/{geo_boundary_id}/forecasts) and Property Forecasts (POST /properties/{property_id}/forecasts) endpoints now support use_rent_value.- Set
use_rent_value: trueto return rent-growth aggregations as seasonally adjusted forecasted rent values in dollars - Aggregation keys stay the same as the
namevalues you provide in the request - Non-rent-growth aggregations, such as occupancy, absorption, and deliveries, are unchanged
New endpoint for retrieving market narratives for geographic boundaries. Narratives provide structured analysis across six key areas: market overview, rent performance, occupancy and demand, construction pipeline, sales transactions, and demographics.
- Markets
- Market Narratives:
GET /markets/narratives- Retrieve the most recent narrative for a geo boundary
- Market Narratives:
- Narratives are only available for MSA and Submarket geo boundary types
- The
salessection is truncated for accounts without Explore Pro+ access - Requires Explore access
The Search Properties (
POST /geo_boundaries/properties) and Bulk Property Details (GET /properties/bulk_details) endpoints now include market_name and submarket_name in each property’s attributes, so you no longer need a separate call to the Search Geo Boundaries endpoint to resolve boundary names.- Added:
market_name- Display name of the market-level geographic boundary (MSA) the property belongs to - Added:
submarket_name- Display name of the submarket-level geographic boundary the property belongs to
New endpoints for retrieving modeled future time-series forecast data, powered by ApartmentIQ’s proprietary forecasting models. Requires Explore Pro access.
- Forecasts
- Geo Boundary Forecasts:
POST /geo_boundary/{geo_boundary_id}/forecasts- Retrieve forecast time-series data for a geographic boundary (MSA, submarket, etc.) - Property Forecasts:
POST /properties/{property_id}/forecasts- Retrieve forecast time-series data for a specific property
- Geo Boundary Forecasts:
- Configurable aggregations:
avg,median,sum,max,min - Time intervals:
month,quarter, oryear - Forecast window: current month through 5 years out
- Includes confidence bounds (downside/upside variants) for all forecast metrics
New filter parameters to search and filter properties by loan maturity date and sales transaction data. Available on the Search Properties and Property Lookup endpoints.
- Added
loan_maturity_date_gteandloan_maturity_date_ltefilter parameters - Added
transaction_cap_rate_gteandtransaction_cap_rate_ltefilter parameters - Added
transaction_date_closed_gteandtransaction_date_closed_ltefilter parameters - Added
transaction_price_per_unit_gteandtransaction_price_per_unit_ltefilter parameters
The Search Properties (
POST /geo_boundaries/properties) and Bulk Property Details (GET /properties/bulk_details) endpoints now include market_geo_boundary_id and submarket_geo_boundary_id in each property’s attributes. Use these IDs with the Search Geo Boundaries endpoint to look up boundary details.- Added:
market_geo_boundary_id- ID of the market-level geographic boundary (MSA) the property belongs to - Added:
submarket_geo_boundary_id- ID of the submarket-level geographic boundary the property belongs to
The
construction_state filter parameter has been removed from the Bulk Properties and Compare Markets endpoints. Use the new unified_status filter instead, which consolidates construction stage, implementation status, and lease-up into a single property lifecycle indicator.- Removed:
construction_state[]filter parameter - Added:
unified_status[]filter parameter with values:stabilized,planning,scheduled_construction,under_construction,lease_up
New asynchronous batch job system for retrieving historical property data at scale, plus new property search capabilities.
-
Bulk Data Export
- Create Batch Job:
POST /bulk_api/jobs- Submit a request for property, units, or floorplans data - List Batch Jobs:
GET /bulk_api/jobs- Retrieve a paginated list of all batch jobs - Get Batch Job Status:
GET /bulk_api/jobs/{job_id}- Monitor job progress and check completion status - Cancel Batch Job:
DELETE /bulk_api/jobs/{job_id}- Cancel a running or submitted job - Download Batch Job Results:
GET /bulk_api/jobs/{job_id}/results- Download completed results in CSV, JSONL, or Parquet format
- Create Batch Job:
-
Markets
- Property Lookup:
GET /properties/lookup- Search for properties by location, coordinates, or attributes and return paginated property IDs - Bulk Property Details:
GET /properties/bulk_details- Retrieve full property details for multiple properties by ID
- Property Lookup:
New endpoint for comparing aggregated market-level metrics across MSAs and submarkets.
-
Markets
- Compare Markets:
POST /explore_markets- Retrieve aggregated metrics for geographic areas including rent performance, inventory, demographics, and sales transaction data
- Compare Markets:
-
Documentation
- Added Compare Markets use case guide
Initial public documentation of the ApartmentIQ API.
-
Authentication: Bearer tokens via
Authorizationheader -
Base URL:
https://data.apartmentiq.io/apartmentiq/api/v1 -
Market Surveys
- List Competitive Sets:
GET /accounts/{account_id}/comp_sets - Market Survey:
GET /comp_sets/{comp_set_id}/market_survey - Units:
GET /comp_sets/{comp_set_id}/units - Floorplans:
GET /comp_sets/{comp_set_id}/floor_plans
- List Competitive Sets:
-
Markets
- Search Geo Boundaries:
POST /geo_boundaries/search - Bulk Properties:
POST /geo_boundaries/properties
- Search Geo Boundaries:
-
Global
- Security scheme: HTTP Bearer (JWT)
- Rate limits return 429 when exceeded