{"zip":"78230","city":"San Antonio","state":"TX","county":"Bexar County","countySlug":"bexar-county-tx","metro":"San Antonio-New Braunfels, TX","metroSlug":"san-antonio-tx","citySlug":"san-antonio-tx","rentPeriod":"2026-06","acsPeriod":"ACS 2024 5-year","directRent":1094,"rentYoy":-0.0314,"bedroomEstimates":[829,901,1094,1401,1637],"hudFmr":[1160,1260,1530,1960,2290],"ladderSource":"safmr","population":41387,"populationMoe":1914,"medianIncome":73529,"medianIncomeMoe":7267,"medianGrossRent":1363,"medianGrossRentMoe":38,"housingUnits":21269,"occupiedUnits":19134,"vacantUnits":2135,"renterOccupied":9767,"rentBurdenTotal":9767,"rentBurden30Plus":4880,"vacantForRent":1146,"vacantForSale":137,"vacantSeasonal":372,"structureTotal":21269,"singleFamilyUnits":10979,"largeMultifamilyUnits":3295,"vacancyRate":0.10038083595843716,"renterShare":0.5104525974704714,"rentBurdenShare":0.49964165045561587,"requiredIncome":43760,"askingRentToIncome":0.17854179983407908,"askingVsAcsRent":0.8026412325752018,"askingVsHud2br":0.7150326797385621,"cityRent":1381.6424039371357,"countyRent":1389,"metroRent":1416,"cityGrossRent":1324,"countyGrossRent":1354,"countyListings":9069,"countyListingDom":57,"countyPriceReducedShare":0.2741,"countyListingPeriod":"2026-06","metroMonthsSupply":5.4,"metroMedianDom":72,"metroPriceDrops":0.3804,"metroResalePeriod":"2026-05-01","apartmentVacancy":0.089082261488219,"apartmentTimeOnMarket":37.3,"zipResalePeriodBegin":"2026-04-01","zipResalePeriodEnd":"2026-06-30","zipResaleUpdated":"2026-07-03","zipHomesSold":95,"zipSalePrice":362807,"zipSalePriceYoy":-0.1483,"zipMedianDom":40,"zipActiveListings":267,"zipActiveListingsYoy":0.0215,"zipInventory":151,"zipInventoryYoy":0.0309,"zipPendingSales":115,"zipMonthsSupply":4.8,"zipSaleToList":0.9724,"zipSoldAboveList":0.1414,"zipOffMarketTwoWeeks":0.3724,"generatedAt":"2026-08-31 14:33:24.447644+00","summaryHtml":"<p>Resale pricing is the sharper current adjustment in 78230. Zillow’s ZIP ZORI, a typical observed asking-rent index blended across rental types, stands at $1,094 after a 3.1% year-over-year decline. The direct ZIP rolling-three-month Redfin resale observation reports a $362,807 median sold price, down 14.8% from a year earlier. Annualized ZIP ZORI divided by that sold-price median is 3.6%, but this is only a cross-source screening ratio, not a cap rate, net return, expected return, property yield, or measure of any individual home. The larger resale-price decline challenges a simplistic reading that a modest rent reduction alone describes current market adjustment.</p><p>The rent history supports a cooling classification, but its time horizons matter. Exact same-month annualized ZORI change was -3.1% over one year and -3.0% over three years, while the five-year change remained positive at 0.7%. Thus, the latest one-year decline confirms the more recent three-year path but breaks from the longer five-year growth record. The backward-looking series contains 114 monthly observations with 100% coverage. Annualized monthly-return variability of 3.2% means the path was not perfectly smooth, while the historical peak-to-trough drawdown reached 11.0%, demonstrating that a current asking-rent snapshot has limited stand-alone certainty. Transparent national discovery ranks among history-eligible ZIPs were 2,878 for momentum, 1,940 for stability, and 2,785 for the balanced measure; these are descriptive ranks, not forecasts or investment recommendations.</p><p>The rent sources answer different questions and should not be substituted for one another. The matched Census ZCTA’s ACS five-year survey reports median gross rent of $1,363 for occupied renter homes; gross rent includes selected utilities and is not a current asking-rent measure. HUD’s two-bedroom FMR/SAFMR standard is $1,530, an administrative bedroom-specific standard rather than asking rent. Scaling ZIP ZORI by the local HUD bedroom ladder produces modelled estimates of $829 for studios, $901 for one bedrooms, $1,094 for two bedrooms, $1,401 for three bedrooms, and $1,637 for four bedrooms. These are modelled estimates, not measured bedroom rents, and their purpose is to preserve the ZIP asking-rent level while reflecting the local HUD bedroom relationship.</p><p>The required-income screen is mechanical rather than a qualification outcome. At a 30% rent-to-income threshold, the current ZIP asking-rent index translates to required annual income of $43,760, compared with a ZCTA median household income of $73,529. That arithmetic does not advise on affordability, determine whether an applicant qualifies, or account for taxes, debt, household size, utilities beyond the index definition, or a specific lease. Separately, the ACS renter-household burden measure identifies 4,880 of 9,767 renter households as paying at least 30% of income toward rent, or 50.0%. This survey-based burden result signals broad household exposure, but it cannot establish the burden, lease terms, or payment capacity associated with a particular unit.</p><p>Housing composition provides another reason not to treat the asking-rent index as a single-property quote. The ZCTA has 21,269 housing units, of which 2,135 are vacant, producing a 10.0% vacancy rate. Of vacant units, 1,146 are classified as for rent. Renters account for 51.0% of occupied homes, so the area’s occupied stock is slightly renter-majority. The reported structure mix includes 10,979 single-family units and 3,295 units in large multifamily structures, showing that the population of homes underlying renter and rent statistics is varied. Vacancy and for-rent counts describe the area’s stock at survey scope; they neither prove availability of a specific residence nor indicate its condition, pricing, concession terms, or likely time on market.</p><p>Wider geography supplies context, not replacement evidence for the ZIP. For wider context only, the City of San Antonio rent measure is $1,382, the Bexar County rent measure is $1,389, and the San Antonio-New Braunfels, TX metro rent measure is $1,416. The ZIP’s current asking-rent index sits below each broader-area value, but those values do not function as ZIP rental comparables because their geographic scopes differ. The City of San Antonio context has a 53.7% renter burden share, above the ZIP’s survey burden share, while the county and metro figures remain contextual rather than property-level evidence. The ZIP’s lower asking level and its recent rent decline should therefore be read alongside, not replaced by, wider-area benchmarks.</p><p>Liquidity evidence in the for-sale universe is measurable but should remain separate from rental evidence. Redfin recorded 95 homes sold in the direct ZIP rolling-three-month resale window, with a median 40 days on market. Inventory was 151 homes and months of supply stood at 4.8. Sellers received an average 97.2% of list price, and 14.1% of sales closed above list. These are resale-market signals, not rental transactions, leasing comparables, or property operating economics. Together with the decline in median sold price, the marketing and sale-to-list measures suggest a resale setting that is less supportive of automatic pricing assumptions than the ZIP’s current rent snapshot might imply. That tension is especially relevant because both rent history and resale pricing are moving downward, though at materially different observed rates.</p><p>The 78230 label is both a Zillow ZIP market identifier and a Census ZCTA match. A ZCTA is a statistical area and is not identical to a USPS delivery ZIP. The evidence also has distinct timing and construction: ZORI observes typical asking rents, ACS summarizes surveyed occupied renter homes, HUD sets administrative standards, and Redfin records completed resale-market activity. Before applying these area-level signals to a property, verify the actual advertised rent, bedroom count, included utilities, concessions, lease duration, unit condition, and availability date. For a resale comparison, verify recent closed sales, property type, living area, lot characteristics, renovation status, listing history, and whether the relevant transaction falls inside the ZIP rather than merely using a nearby mailing address.</p>","findings":[{"body":"ZIP asking rent declined year over year, and the longer same-month ZORI history also shows negative one- and three-year annualized changes. Direct ZIP resale evidence shows an even larger decline in median sold price. These are separate observed markets, but their shared downward direction makes a single current rent reading less complete than a combined rent-history and resale review.","title":"Recent cooling is visible in both rent and resale series"},{"body":"The bedroom ladder starts with current ZIP ZORI and applies the local HUD bedroom relationship. It creates internally consistent modelled studio-through-four-bedroom estimates, but it does not observe rents for available units in each bedroom category. HUD FMR/SAFMR is an administrative standard, while ZORI is an asking-rent index; neither is a property-specific lease quote.","title":"Bedroom figures are a model, not a rent survey"},{"body":"The arithmetic required-income screen places the typical asking-rent index below the matched ZCTA median household income. Yet ACS reports that roughly half of renter households meet the survey definition of paying at least 30% of income toward rent. The two measures differ in population and construction, so neither establishes affordability or payment capacity for an individual household.","title":"Area-level burden remains material despite the income screen"},{"body":"The Redfin ZIP record provides direct evidence on sales volume, marketing time, inventory, supply, and sale-to-list outcomes in the for-sale market. It does not identify lease pricing, apartment availability, landlord expenses, or tenant demand. The annualized rent-to-price figure is useful only as a cross-source screen and should not be relabeled as a property return measure.","title":"Resale liquidity is observable but not rental evidence"}],"risks":["ZORI is a blended typical asking-rent index across rental types, so it can differ from the advertised rent of a specific detached home, apartment, condominium, or newly listed unit.","ACS values are five-year survey estimates for the matched ZCTA and occupied renter homes. Their utility-inclusive gross-rent and household-burden definitions do not match current asking-rent observations.","The modelled bedroom ladder inherits both the ZIP ZORI level and the local HUD relationship. It should not be treated as direct measurement of current bedroom-specific listings or signed leases.","Redfin’s rolling-three-month figures describe completed ZIP resale activity. Median sold price, inventory, and sale-to-list results cannot establish rental cash flow, property condition, leasing demand, or economics for a particular address."],"qa":[{"a":"They are different evidence universes. ACS median gross rent is a five-year survey measure for occupied renter homes in the matched ZCTA and includes selected utilities. Zillow ZORI is a current typical observed asking-rent index blended across rental types. Different timing, populations, and rent definitions can produce a gap without indicating an error.","q":"Why is the ACS median gross rent higher than the current ZIP asking-rent index?"},{"a":"No. The studio through four-bedroom figures are modelled ZIP estimates. They scale the ZIP-level ZORI using the local HUD bedroom ladder so that the estimates reflect the local standard’s bedroom pattern. They are not measured bedroom rents, listing medians, lease transactions, or evidence that a similarly sized available unit will be offered at that amount.","q":"Are the bedroom rent estimates direct observations of available units?"},{"a":"No. The screen divides annualized ZIP asking rent by a 30% income threshold, making it arithmetic only. It does not incorporate credit, debt, deposits, household composition, utility obligations, lease requirements, concessions, or landlord screening. ACS rent burden is also an area-level survey measure and cannot prove a particular household’s position.","q":"Does the 30% income screen show whether a household can qualify for a home?"},{"a":"It adds a direct view of the ZIP’s for-sale market: completed sales, median sold price movement, marketing time, inventory, months of supply, and sale-to-list outcomes. That evidence can test whether resale conditions move consistently with rent history, but it remains separate from leasing activity and does not produce rental comparables, cap rates, or property-level returns.","q":"What does the Redfin evidence add to the rental analysis?"}],"sources":[{"key":"apartment_list_time_on_market","name":"Apartment List Time on Market — listing liquidity","release":"Apartment List 2026-07","pulledAt":"2026-08-08","url":"https://www.apartmentlist.com/research/category/data-rent-estimates"},{"key":"apartment_list_vacancy","name":"Apartment List Vacancy Index — rental vacancy","release":"Apartment List 2026-07","pulledAt":"2026-08-08","url":"https://www.apartmentlist.com/research/apartment-list-vacancy-index-methodology"},{"key":"census_zcta_facts","name":"Census ACS five-year — ZCTA housing and income","release":"ACS 2024 5-year ZCTA","pulledAt":"2026-08-08","url":"https://api.census.gov/data/2024/acs/acs5.html"},{"key":"hud_zip","name":"HUD USPS crosswalk and Small Area FMRs — ZIP rent fallback","release":"ZIP-CBSA 2025Q4 + SAFMR FY2026","pulledAt":"2026-07-26","url":"https://www.huduser.gov/portal/datasets/usps_crosswalk.html"},{"key":"realtor_county","name":"Realtor.com Economic Research — county listing inventory","release":"county inventory 2026-06","pulledAt":"2026-07-28","url":"https://www.realtor.com/research/data/"},{"key":"redfin","name":"Redfin Data Center — inventory, days on market, and price cuts","release":"metro tracker through 2026-05-01","pulledAt":"2026-07-26","url":"https://www.redfin.com/news/data-center/"},{"key":"redfin_zip","name":"Redfin Data Center — ZIP resale activity and supply","release":"ZIP rolling 3 months through 2026-06-30; updated 2026-07-03","pulledAt":"2026-08-12","url":"https://www.redfin.com/news/data-center/"},{"key":"zillow_county","name":"Zillow ZHVI and ZORI — county values and rents","release":"county ZHVI/ZORI 2026-06","pulledAt":"2026-07-26","url":"https://www.zillow.com/research/data/"},{"key":"zillow_zori","name":"Zillow ZORI — metro market rents","release":"Metro_zori_uc_sfrcondomfr_sm_sa_month.csv","pulledAt":"2026-07-26","url":"https://www.zillow.com/research/data/"},{"key":"zillow_zori_city","name":"Zillow ZORI — city market rents","release":"zillow_zori_city.csv","pulledAt":"2026-07-29","url":"https://www.zillow.com/research/data/"},{"key":"zillow_zori_zip","name":"Zillow ZORI — ZIP market rents","release":"ZORI ZIP 2026-06","pulledAt":"2026-08-08","url":"https://www.zillow.com/research/data/"}],"history":[{"period":"2017-01-01","rent":1001.155431},{"period":"2017-02-01","rent":1006.550394},{"period":"2017-03-01","rent":1001.076263},{"period":"2017-04-01","rent":1003.799188},{"period":"2017-05-01","rent":984.732395},{"period":"2017-06-01","rent":978.180431},{"period":"2017-07-01","rent":961.405701},{"period":"2017-08-01","rent":963.283676},{"period":"2017-09-01","rent":965.070812},{"period":"2017-10-01","rent":968.822443},{"period":"2017-11-01","rent":956.820852},{"period":"2017-12-01","rent":960.18317},{"period":"2018-01-01","rent":951.464828},{"period":"2018-02-01","rent":944.294368},{"period":"2018-03-01","rent":934.190937},{"period":"2018-04-01","rent":933.234708},{"period":"2018-05-01","rent":947.148109},{"period":"2018-06-01","rent":955.448377},{"period":"2018-07-01","rent":975.666013},{"period":"2018-08-01","rent":989.807027},{"period":"2018-09-01","rent":994.825792},{"period":"2018-10-01","rent":984.020001},{"period":"2018-11-01","rent":978.484},{"period":"2018-12-01","rent":981.652411},{"period":"2019-01-01","rent":988.987589},{"period":"2019-02-01","rent":1000.143075},{"period":"2019-03-01","rent":1010.176568},{"period":"2019-04-01","rent":1012.857773},{"period":"2019-05-01","rent":1009.794547},{"period":"2019-06-01","rent":1008.842065},{"period":"2019-07-01","rent":1001.280327},{"period":"2019-08-01","rent":993.103857},{"period":"2019-09-01","rent":991.277024},{"period":"2019-10-01","rent":998.274426},{"period":"2019-11-01","rent":1005.480332},{"period":"2019-12-01","rent":1000.816298},{"period":"2020-01-01","rent":998.974503},{"period":"2020-02-01","rent":993.533297},{"period":"2020-03-01","rent":1009.60717},{"period":"2020-04-01","rent":1005.967588},{"period":"2020-05-01","rent":1012.755458},{"period":"2020-06-01","rent":1012.744351},{"period":"2020-07-01","rent":1015.483319},{"period":"2020-08-01","rent":1020.797999},{"period":"2020-09-01","rent":1013.182787},{"period":"2020-10-01","rent":1013.437272},{"period":"2020-11-01","rent":1008.098507},{"period":"2020-12-01","rent":1017.009101},{"period":"2021-01-01","rent":1018.826079},{"period":"2021-02-01","rent":1032.109452},{"period":"2021-03-01","rent":1038.851143},{"period":"2021-04-01","rent":1051.899867},{"period":"2021-05-01","rent":1046.176469},{"period":"2021-06-01","rent":1055.257266},{"period":"2021-07-01","rent":1064.441163},{"period":"2021-08-01","rent":1091.527502},{"period":"2021-09-01","rent":1116.500174},{"period":"2021-10-01","rent":1130.105902},{"period":"2021-11-01","rent":1157.713352},{"period":"2021-12-01","rent":1168.57296},{"period":"2022-01-01","rent":1174.663642},{"period":"2022-02-01","rent":1167.935651},{"period":"2022-03-01","rent":1165.178782},{"period":"2022-04-01","rent":1175.088196},{"period":"2022-05-01","rent":1194.785746},{"period":"2022-06-01","rent":1211.922016},{"period":"2022-07-01","rent":1228.820659},{"period":"2022-08-01","rent":1218.859188},{"period":"2022-09-01","rent":1206.863347},{"period":"2022-10-01","rent":1198.705885},{"period":"2022-11-01","rent":1178.746049},{"period":"2022-12-01","rent":1197.839986},{"period":"2023-01-01","rent":1207.968482},{"period":"2023-02-01","rent":1226.411851},{"period":"2023-03-01","rent":1219.663054},{"period":"2023-04-01","rent":1213.491684},{"period":"2023-05-01","rent":1214.247674},{"period":"2023-06-01","rent":1199.271663},{"period":"2023-07-01","rent":1187.079308},{"period":"2023-08-01","rent":1186.048472},{"period":"2023-09-01","rent":1196.168035},{"period":"2023-10-01","rent":1205.801709},{"period":"2023-11-01","rent":1204.639117},{"period":"2023-12-01","rent":1177.673915},{"period":"2024-01-01","rent":1168.055749},{"period":"2024-02-01","rent":1154.296721},{"period":"2024-03-01","rent":1164.084002},{"period":"2024-04-01","rent":1160.637866},{"period":"2024-05-01","rent":1152.259963},{"period":"2024-06-01","rent":1143.148319},{"period":"2024-07-01","rent":1141.541377},{"period":"2024-08-01","rent":1135.700179},{"period":"2024-09-01","rent":1136.101192},{"period":"2024-10-01","rent":1125.939051},{"period":"2024-11-01","rent":1135.926942},{"period":"2024-12-01","rent":1131.698805},{"period":"2025-01-01","rent":1127.709614},{"period":"2025-02-01","rent":1123.862531},{"period":"2025-03-01","rent":1124.077293},{"period":"2025-04-01","rent":1122.459907},{"period":"2025-05-01","rent":1123.536791},{"period":"2025-06-01","rent":1129.316131},{"period":"2025-07-01","rent":1128.624831},{"period":"2025-08-01","rent":1130.114218},{"period":"2025-09-01","rent":1122.084091},{"period":"2025-10-01","rent":1121.499413},{"period":"2025-11-01","rent":1112.04938},{"period":"2025-12-01","rent":1117.583373},{"period":"2026-01-01","rent":1117.029018},{"period":"2026-02-01","rent":1116.907909},{"period":"2026-03-01","rent":1107.17362},{"period":"2026-04-01","rent":1104.074735},{"period":"2026-05-01","rent":1099.293588},{"period":"2026-06-01","rent":1093.833228}],"historySummary":{"pointCount":114,"firstPeriod":"2017-01-01","latestPeriod":"2026-06-01","coverageMonths":114,"coverageRatio":1,"changes":{"1":{"years":1,"startPeriod":"2025-06-01","endPeriod":"2026-06-01","startRent":1129.316131,"endRent":1093.833228,"change":-0.031419814191957274,"cagr":-0.031419814191957274},"3":{"years":3,"startPeriod":"2023-06-01","endPeriod":"2026-06-01","startRent":1199.271663,"endRent":1093.833228,"change":-0.08791872455006888,"cagr":-0.03020967601097413},"5":{"years":5,"startPeriod":"2021-06-01","endPeriod":"2026-06-01","startRent":1055.257266,"endRent":1093.833228,"change":0.036555978568357794,"cagr":0.007206575022495665}},"maxDrawdown":-0.10985120571609797,"annualizedVolatility":0.0322167001447668,"consecutiveReturnCount":113}}