get_estaite_market_snapshot
Description
Returns a concise market snapshot for a submarket including a market_condition label (e.g. "Landlord's Market", "Renter's Market"), vacancy, saturation, and a full per-segment rent grid. The market condition label is always anchored on the apt 2 BR slice (the most common segment). Use this for quick “what is the market like” questions when you don’t yet know which segment matters.
Inputs
| Name | Type | Required | Description |
|---|---|---|---|
id | integer | yes | Submarket id from search_estaite_submarkets. |
Response
{ "attribution": "Data via Estaite Submarket Index", "powered_by": "Estaite.com", "api_version": "v1", "request_id": "f0a4e9c2-7f8e-4d11-9a7e-7a2f1b4c8e91", "id": 1, "submarket_name": "Carmel Valley", "city": "San Diego", "state": "CA", "as_of": 202603, "market_condition": "Landlord's Market", "vacancy_rate": 4.2, "vacancy_6m_change": -0.3, "saturation": 1.5, "saturation_6m_change": 0.05, "median_household_income": 145800, "segments": { "apartments": { "br1": { "median_rent": 2700, "rent_change_mom": 0.3, "rent_change_6m": 1.8, "rent_change_yoy": 3.5, "listings": 32, "avg_dom": 21, "rent_to_income": 22.2 }, "br2": { "median_rent": 3659, "rent_change_mom": 0.4, "rent_change_6m": 2.0, "rent_change_yoy": -3.2, "listings": 64, "avg_dom": 24, "rent_to_income": 23.4 }, "br3": { "median_rent": 4200, "rent_change_mom": 0.2, "rent_change_6m": 1.5, "rent_change_yoy": 2.8, "listings": 28, "avg_dom": 27, "rent_to_income": 28.7 }, "br4": { "median_rent": 5100, "rent_change_mom": 0.1, "rent_change_6m": 0.9, "rent_change_yoy": 1.6, "listings": 12, "avg_dom": 31, "rent_to_income": 34.9 } }, "single_family": { "br1": { "median_rent": null, "rent_change_mom": null, "rent_change_6m": null, "rent_change_yoy": null, "listings": null, "avg_dom": null, "rent_to_income": null }, "br2": { "median_rent": 4150, "rent_change_mom": 0.5, "rent_change_6m": 2.4, "rent_change_yoy": 4.1, "listings": 18, "avg_dom": 26, "rent_to_income": 26.5 }, "br3": { "median_rent": 5400, "rent_change_mom": 0.3, "rent_change_6m": 1.9, "rent_change_yoy": 3.7, "listings": 24, "avg_dom": 28, "rent_to_income": 34.5 }, "br4": { "median_rent": 6800, "rent_change_mom": 0.2, "rent_change_6m": 1.4, "rent_change_yoy": 2.9, "listings": 15, "avg_dom": 34, "rent_to_income": 43.5 } }, "condo_townhome": { "br1": { "median_rent": 2950, "rent_change_mom": 0.4, "rent_change_6m": 2.1, "rent_change_yoy": 3.9, "listings": 9, "avg_dom": 22, "rent_to_income": 24.3 }, "br2": { "median_rent": 3800, "rent_change_mom": 0.3, "rent_change_6m": 1.8, "rent_change_yoy": 3.2, "listings": 14, "avg_dom": 25, "rent_to_income": 24.3 }, "br3": { "median_rent": null, "rent_change_mom": null, "rent_change_6m": null, "rent_change_yoy": null, "listings": null, "avg_dom": null, "rent_to_income": null }, "br4": { "median_rent": null, "rent_change_mom": null, "rent_change_6m": null, "rent_change_yoy": null, "listings": null, "avg_dom": null, "rent_to_income": null } } }}Fields
Top level
| Field | Type | Description |
|---|---|---|
attribution | string | Required attribution. Echo verbatim. |
powered_by | string | Always "Estaite.com". |
api_version | string | Always "v1". |
request_id | string | Per-request UUID. |
id | number | Echoes the input id. |
submarket_name, city, state | string | Submarket identity. |
as_of | number | Latest published month, format YYYYMM (e.g. 202603). |
market_condition | string | Derived label — see below. |
vacancy_rate | number | Vacancy in whole-percent (e.g. 4.2 = 4.2%). |
vacancy_6m_change | number | Signed change in vacancy over 6 months. |
saturation | number | Saturation in whole-percent. |
saturation_6m_change | number | Signed change in saturation over 6 months. |
median_household_income | number | Median household income for the submarket, USD. |
segments[label][br_key]
label is one of apartments, single_family, condo_townhome. br_key is br1 through br4. Each entry contains:
| Field | Type | Description |
|---|---|---|
median_rent | number | Monthly median rent in USD. null when the segment has no data. |
rent_change_mom | number | Month-over-month change in whole-percent. |
rent_change_6m | number | 6-month change in whole-percent. |
rent_change_yoy | number | Year-over-year change in whole-percent. |
listings | number | Listing count for the slice. |
avg_dom | number | Average days on market. |
rent_to_income | number | Rent-to-income ratio in whole-percent. |
Note: only mom, 6m, and yoy rent-change windows are emitted by this tool. For the full mom/3m/6m/9m/yoy block, use query_estaite_submarket_index.
market_condition derivation
Anchored on the apt 2 BR slice’s vacancy and YoY:
| Condition | Rule |
|---|---|
Strong Landlord's Market | vacancy < 5% AND YoY > 5% |
Landlord's Market | vacancy < 5% |
Strong Renter's Market | vacancy > 10% AND YoY < 0% |
Renter's Market | vacancy > 10% |
Neutral | everything else |
(Rules use whole-percent thresholds — < 5% means vacancy value below 5, not below 0.05.)
Errors
| Code | HTTP | Meaning |
|---|---|---|
MISSING_OR_INVALID_SUBMARKET_ID | 400 | id missing or non-numeric. |
SUBMARKET_NOT_FOUND | 404 | No row exists for the requested id. |
Notes
nullis a real value here. Segments that don’t have data (e.g. condo/townhome 4 BR in a small submarket) returnnullfor every field. Don’t crash on that — show ”—” or a placeholder.- All percent values are whole-percent. A
rent_change_yoyof4.12means +4.12%. - Use the snapshot for a quick overview, then drill in. For full metrics including price ranges, affordability detail, and history, call
query_estaite_submarket_indexwith the same id.