Skip to content

get_estaite_cbsa_overview

Description

Aggregates every submarket within a CBSA (metro) into one response: averaged vacancy/saturation/income at the metro level, an averaged per-segment rent grid, plus a per-submarket breakdown with each submarket’s median rent and YoY change. Accepts either a numeric CBSA code or a partial CBSA name. Use this for city-level / metro-level questions.

Inputs

NameTypeRequiredDescription
cbsastring | numberyesNumeric CBSA code (e.g. 19100) or partial CBSA name (e.g. "Dallas"). When a string contains only digits it’s treated as a code (exact match); otherwise it’s a partial-name match.

Response

{
"attribution": "Data via Estaite Submarket Index",
"powered_by": "Estaite.com",
"source_domains": [],
"cbsa_code": "19100",
"cbsa_name": "Dallas-Fort Worth-Arlington, TX",
"state": "TX",
"as_of": 202603,
"submarket_count": 47,
"cbsa_summary": {
"avg_vacancy_rate": 7.85,
"avg_saturation": 1.92,
"avg_household_income": 78420,
"segments": {
"apartments": {
"br1": { "avg_rent": 1280, "avg_yoy": 3.4 },
"br2": { "avg_rent": 1580, "avg_yoy": 4.1 },
"br3": { "avg_rent": 2050, "avg_yoy": 3.6 },
"br4": { "avg_rent": 2580, "avg_yoy": 2.8 }
},
"single_family": {
"br1": { "avg_rent": null, "avg_yoy": null },
"br2": { "avg_rent": 1820, "avg_yoy": 4.5 },
"br3": { "avg_rent": 2380, "avg_yoy": 4.1 },
"br4": { "avg_rent": 2950, "avg_yoy": 3.4 }
},
"condo_townhome": {
"br1": { "avg_rent": 1450, "avg_yoy": 3.9 },
"br2": { "avg_rent": 1740, "avg_yoy": 3.5 },
"br3": { "avg_rent": null, "avg_yoy": null },
"br4": { "avg_rent": null, "avg_yoy": null }
}
}
},
"submarkets": [
{
"id": 4201,
"name": "Lakewood",
"vacancy_rate": 6.2,
"segments": {
"apartments": {
"br1": { "median_rent": 1450, "yoy": 4.1 },
"br2": { "median_rent": 1985, "yoy": 7.4 },
"br3": { "median_rent": 2620, "yoy": 5.8 },
"br4": { "median_rent": 3210, "yoy": 4.2 }
},
"single_family": { "br1": { }, "br2": { }, "br3": { }, "br4": { } },
"condo_townhome": { "br1": { }, "br2": { }, "br3": { }, "br4": { } }
}
}
]
}

Fields

Top level

FieldTypeDescription
attributionstringRequired attribution. Echo verbatim.
powered_bystringAlways "Estaite.com".
source_domainsstring[]Contributing data-provider domains across all submarkets in the metro.
cbsa_codestringNumeric CBSA code.
cbsa_namestringFull CBSA name.
statestringPrimary state code for the CBSA.
as_ofnumberLatest yearmonth in the data, format YYYYMM.
submarket_countnumberCount of distinct submarkets in the CBSA.

cbsa_summary

Averages across the latest month’s row in every submarket in the CBSA.

PathTypeDescription
avg_vacancy_ratenumberMean vacancy in whole-percent.
avg_saturationnumberMean saturation in whole-percent.
avg_household_incomenumberMean of submarket-level median household incomes, USD.
segments[label][br_key].avg_rentnumberMean median rent for the cell across submarkets, USD. null when no submarkets in the metro have data for that cell.
segments[label][br_key].avg_yoynumberMean YoY rent change in whole-percent.

submarkets[]

PathTypeDescription
idnumberSubmarket id.
namestringSubmarket name.
vacancy_ratenumberSubmarket vacancy in whole-percent.
segments[label][br_key].median_rentnumberCell median rent, USD. ⚠️ Field name here is median_rent, not avg_rent like in cbsa_summary.
segments[label][br_key].yoynumberYoY change in whole-percent. ⚠️ Field name here is yoy, not avg_yoy like in cbsa_summary.

Errors

CodeHTTPMeaning
MISSING_CBSA400cbsa was not provided.
CBSA_NOT_FOUND404No CBSA matched the input.

Notes

  • Field names differ between cbsa_summary and submarkets[]. The metro-level block uses avg_rent / avg_yoy. The per-submarket entries use median_rent / yoy. Branch carefully.
  • Numeric vs name matching. A cbsa that’s all digits is matched against cbsa_code exactly. Anything else is a LIKE '%input%' against cbsa_name. To force name search of a numeric-looking metro, prefix something non-digit (rare).
  • All percent values are whole-percent. A avg_yoy of 3.4 means +3.4%, not 340%.
  • null is real. Some cells have no data (e.g. SFR 1 BR in a metro with no SFR 1 BR listings). Handle null in your formatter.