Skip to main content
Analyze markets by searching boundaries (MSAs, submarkets, cities, counties, zip codes, neighborhoods) and pulling bulk property data. This workflow is designed for investors and developers (and power property managers) who need to:
  • Evaluate sites and trade areas for pipeline or acquisitions
  • Underwrite comps and benchmark rents, NER, exposure, and product mix
  • Map demand/supply dynamics and screen properties by physical attributes
  • Build custom geographies (polygons) for more precise trade‑area analysis

Prerequisites

  • Your API key (Bearer token)
  • Account ID
    If you need an API token, see Getting started → “Get an API token”.

1) Search Geo Boundaries

Use the flexible search to find boundaries by name and type.
curl -s -X POST \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": <account_id>,
    "query": "raleigh",
    "geo_type": ["MSA", "CensusPlace"],
    "limit": 10
  }' \
  "https://data.apartmentiq.io/apartmentiq/api/v1/geo_boundaries/search"
Each result includes a numeric boundary ID, display name, geo type, centroid, and optional property count. Result order is weighted for relevance. You can also filter by intersection with a boundary (geo_boundary_id) or custom GeoJSON polygon (intersecting_geometry). This is useful for capturing walk‑sheds, drive‑time areas, or micro‑neighborhoods that don’t align to standard boundaries.
For broad scans, set query: "*" and filter by geo_type. For highly specific places, pass the full name (e.g., “Raleigh, NC”).
Example — intersect results with an existing boundary and limit to Neighborhoods:
curl -s -X POST \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": <account_id>,
    "query": "downtown",
    "geo_boundary_id": <boundary_id>,
    "geo_type": ["Neighborhood"],
    "limit": 20
  }' \
  "https://data.apartmentiq.io/apartmentiq/api/v1/geo_boundaries/search"

2) Retrieve Bulk Property Data

Fetch properties within boundaries or a custom geometry. One of geo_boundary_ids or geometry is required.
curl -s -X POST \
  -H "Authorization: Bearer <your_api_key>" \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": <account_id>,
    "property_filters": {
      "geo_boundary_ids": ["94216", "93759"],
      "total_units_gte": 400,
      "property_class": ["A", "B"]
    }
  }' \
  "https://data.apartmentiq.io/apartmentiq/api/v1/geo_boundaries/properties"
Returns a list of properties with address, physical characteristics (unit counts, year built, building type/class), optional ownership (with required access), and current performance metrics (asking/NER, PSF, exposure, leased percent, availability by bed type).
This endpoint is ideal for underwriting, pipeline studies, and competitive scans. Combine physical filters (e.g., year built ≥ 2015, class A) with performance filters (e.g., asking_rent_psf between 2.0–3.0) to shape your comp universe.
This endpoint has a quota limit of 5000 unique properties per account. Each successful request counts toward this quota.

Filtering options

When using property_filters, you may include:
  • Geographic: geo_boundary_ids[] or GeoJSON geometry
  • Physical: year_built_gte|lte, total_units_gte|lte, number_of_stories_gte|lte, property_class[], property_type[], construction_state[]
  • Mix: bedroom_count[], bathroom_count[]
  • Pricing/size: rent_gte|lte, ner_gte|lte, rent_per_sq_ft_gte|lte, ner_per_sq_ft_gte|lte, size_gte|lte
  • Concessions/occupancy: concession_value_gte|lte, concession_percent_gte|lte, occupancy_gte|lte, leased_percent_gte|lte, exposure_gte|lte
For custom trade areas, pass a GeoJSON Polygon in geometry. To approximate a 10‑minute walk‑shed, start with a tight polygon around your site and expand outward based on street network context.

Example analyses to try

  • Site selection: “Show all class A/B, 2000+ unit count submarket comps within the MSA core and compare asking_rent_psf vs. exposure.”
  • New supply: “Within this polygon, find properties built since 2020 and compare leased percent by bed type.”
  • Underwriting: “Filter to conventional properties with 200+ units and export rent, NER, and concessions for pro forma modeling.”

Errors and rate limits

  • 400 for invalid/missing parameters
  • 403 for permission or quota issues (e.g., bulk data quota exceeded)
  • 429 if you exceed the rate limit
  • See Errors and Rate limits