Skip to content

find_estaite_submarkets_by_criteria

Description

Filters submarkets by combinations of state, CBSA, rent range, year-over-year growth, and vacancy. Returns matching submarkets with key metrics for the apt 2 BR slice (the default — see Notes below). Use this for “show me submarkets under $1,500 in Texas” or “growing markets in Dallas”.

Inputs

NameTypeRequiredDescription
statestring (2-letter)noUS state code, filters on submarket’s CBSA state.
cbsa_codestringnoNumeric CBSA code, exact match (e.g. "19100" for Dallas-Fort Worth).
cbsa_namestringnoPartial CBSA name match (e.g. "Dallas").
min_rentnumbernoMinimum median monthly rent in USD.
max_rentnumbernoMaximum median monthly rent in USD.
min_yoy_growthnumbernoMinimum year-over-year rent growth as whole-percent — e.g. 5 for 5%. (See note below — the underlying field stores values like 5.0, not 0.05.)
max_vacancynumbernoMaximum vacancy rate as whole-percent — e.g. 8 for 8%.
limitinteger 1–50noMax results. Default 25, hard cap 50.

Response

{
"attribution": "Data via Estaite Submarket Index",
"powered_by": "Estaite.com",
"source_domains": [],
"property_type": "apt",
"bedrooms": 2,
"criteria_applied": { "state": "TX", "max_rent": 1500, "limit": 25 },
"count": 12,
"data": [
{
"id": 3104,
"name": "East Riverside",
"zipcodes": "78741",
"cbsa": "Austin-Round Rock-San Marcos, TX",
"state": "TX",
"as_of": 202603,
"median_rent": 1420.0,
"rent_yoy_change": 6.2,
"vacancy_rate": 7.1,
"avg_dom": 28,
"rent_to_income": 31.5
}
]
}

Fields

FieldTypeDescription
attributionstringData attribution. Becomes "Data provided by …" when responses include licensed customer data.
powered_bystringAlways "Estaite.com".
source_domainsstring[]List of contributing domains/companies (empty when no licensed data is involved).
property_typestringThe slice the comparison ran over — always "apt" in the current release.
bedroomsnumberThe bedroom count the comparison ran over — always 2 in the current release.
criteria_appliedobjectEcho of all criteria that were honored.
countnumberNumber of records returned (≤ limit).
data[].idnumberSubmarket id.
data[].namestringSubmarket name.
data[].zipcodesstringComma-separated ZIPs aggregated into the submarket.
data[].cbsastringCBSA / metro name.
data[].statestring2-letter state code.
data[].as_ofnumberYear-month of the underlying data, format YYYYMM (e.g. 202603).
data[].median_rentnumberMedian monthly rent, USD.
data[].rent_yoy_changenumberYoY rent change in whole-percent (e.g. 6.2 = +6.2%).
data[].vacancy_ratenumberVacancy rate in whole-percent (e.g. 7.1 = 7.1%).
data[].avg_domnumberAverage days on market for the slice.
data[].rent_to_incomenumberRent-to-income ratio in whole-percent (e.g. 31.5 = 31.5% of household income).

Errors

This tool does not raise tool-specific error codes. Invalid combinations simply return count: 0 and an empty data array. Generic upstream failures (database, auth, rate limit) bubble up as the standard MCP error envelope.

Notes

  • Always uses apt / 2 BR. The implementation defaults the slice to apartments / 2 bedrooms and currently has no public way to change it. The response echoes property_type and bedrooms for transparency.
  • source_domains aggregates across all returned submarkets. If any submarket in the result set is licensed customer data, that domain appears in the array — and the attribution flips to "Data provided by …".
  • Sorted by submarket name, alphabetically — not by rent, growth, or any other metric. To rank, see rank_estaite_submarkets.