Skip to content

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

NameTypeRequiredDescription
idintegeryesSubmarket 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

FieldTypeDescription
attributionstringRequired attribution. Echo verbatim.
powered_bystringAlways "Estaite.com".
api_versionstringAlways "v1".
request_idstringPer-request UUID.
idnumberEchoes the input id.
submarket_name, city, statestringSubmarket identity.
as_ofnumberLatest published month, format YYYYMM (e.g. 202603).
market_conditionstringDerived label — see below.
vacancy_ratenumberVacancy in whole-percent (e.g. 4.2 = 4.2%).
vacancy_6m_changenumberSigned change in vacancy over 6 months.
saturationnumberSaturation in whole-percent.
saturation_6m_changenumberSigned change in saturation over 6 months.
median_household_incomenumberMedian 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:

FieldTypeDescription
median_rentnumberMonthly median rent in USD. null when the segment has no data.
rent_change_momnumberMonth-over-month change in whole-percent.
rent_change_6mnumber6-month change in whole-percent.
rent_change_yoynumberYear-over-year change in whole-percent.
listingsnumberListing count for the slice.
avg_domnumberAverage days on market.
rent_to_incomenumberRent-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:

ConditionRule
Strong Landlord's Marketvacancy < 5% AND YoY > 5%
Landlord's Marketvacancy < 5%
Strong Renter's Marketvacancy > 10% AND YoY < 0%
Renter's Marketvacancy > 10%
Neutraleverything else

(Rules use whole-percent thresholds — < 5% means vacancy value below 5, not below 0.05.)

Errors

CodeHTTPMeaning
MISSING_OR_INVALID_SUBMARKET_ID400id missing or non-numeric.
SUBMARKET_NOT_FOUND404No row exists for the requested id.

Notes

  • null is a real value here. Segments that don’t have data (e.g. condo/townhome 4 BR in a small submarket) return null for every field. Don’t crash on that — show ”—” or a placeholder.
  • All percent values are whole-percent. A rent_change_yoy of 4.12 means +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_index with the same id.