{"zip":"78229","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":1157,"rentYoy":-0.0221,"bedroomEstimates":[873,958,1157,1486,1732],"hudFmr":[1140,1250,1510,1940,2260],"ladderSource":"safmr","population":35664,"populationMoe":2039,"medianIncome":46574,"medianIncomeMoe":2284,"medianGrossRent":1292,"medianGrossRentMoe":33,"housingUnits":19228,"occupiedUnits":16401,"vacantUnits":2827,"renterOccupied":14130,"rentBurdenTotal":14130,"rentBurden30Plus":7635,"vacantForRent":1849,"vacantForSale":150,"vacantSeasonal":149,"structureTotal":19228,"singleFamilyUnits":2304,"largeMultifamilyUnits":5597,"vacancyRate":0.14702517162471396,"renterShare":0.8615328333638193,"rentBurdenShare":0.5403397027600849,"requiredIncome":46280,"askingRentToIncome":0.29810623953278653,"askingVsAcsRent":0.8955108359133127,"askingVsHud2br":0.7662251655629139,"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":48,"zipSalePrice":208453,"zipSalePriceYoy":0.0776,"zipMedianDom":75,"zipActiveListings":206,"zipActiveListingsYoy":0.0888,"zipInventory":132,"zipInventoryYoy":0.0495,"zipPendingSales":60,"zipMonthsSupply":8.3,"zipSaleToList":0.9573,"zipSoldAboveList":0.0639,"zipOffMarketTwoWeeks":0.1673,"generatedAt":"2026-08-31 14:20:37.505952+00","summaryHtml":"<p>The main signal in 78229 is a split between rent direction and resale evidence. In June 2026, Zillow's ZIP-level ZORI, a typical observed asking-rent index blended across rental types, is $1,157 per month. It is 2.2% below its same-month one-year reading; the exact same-month three-year change is -2.5%, while the five-year change is +0.9%. Recent cooling therefore continues the three-year decline but breaks from the longer positive path. This is a backward-looking measurement, not a forecast, and the index is neither a lease series nor a bedroom-specific quote. Its current level is useful as a ZIP asking-rent signal, yet it cannot identify the rent, utilities, or lease terms for a particular home.</p><p>The historical file provides a substantial basis for reading that cooling, with 104 monthly observations and 100% coverage. Monthly return movement produces 2.8% annualized variability, which gives the current index some historical anchoring rather than making it a precise unit-level rent. Separately, the maximum peak-to-trough drawdown is 8.9%, showing that a current snapshot can sit within a meaningful prior decline. Transparent national discovery ranks among history-eligible ZIPs are 2,836 for momentum, 1,263 for stability, and 2,570 for the balanced measure, where a lower rank is higher. These are descriptive discovery tools, not investment ratings, and all of the history measures remain backward-looking.</p><p>The matched Census ZCTA evidence answers a different question from Zillow. A ZCTA is a Census statistical area and is not identical to a USPS delivery ZIP. In the ACS five-year survey, the ZCTA has 35,664 residents, median household income of $46,574, median gross rent of $1,292, 14,130 renter-occupied homes, and 2,271 owner-occupied homes; renters represent 86.2% of occupied homes. ACS median gross rent is a survey measure for occupied renter homes and includes selected utilities. It should not be treated as a competing asking-rent quote against ZORI, because its population, timing, utility treatment, and survey design differ. The ACS estimates also carry source margins of error.</p><p>Using the current ZORI in a 30% income screen produces a required annual household income of $46,280, and the asking-rent-to-median-income calculation is 29.8%. That screen is arithmetic only: it is not advice, an affordability guarantee, or an applicant qualification rule. The ACS burden measure adds an important but separate household outcome: 7,635 renter households reported spending at least 30% of income on gross rent, equal to 54.0% of renter households. That burden rate cannot prove what any particular unit costs or whether a given household can pay it. Together, the figures show why a ZIP-wide asking-rent index below ACS gross rent does not erase measured renter-cost pressure in the occupied-home survey universe.</p><p>Bedroom figures require especially careful labeling. Scaling ZIP ZORI with the local HUD bedroom ladder produces modelled monthly estimates of $873 for a studio, $958 for one bedroom, the overall ZIP index for two bedrooms, $1,486 for three bedrooms, and $1,732 for four bedrooms. They are modelled estimates, never measured bedroom rents. HUD's current two-bedroom standard is $1,510, making the ZIP index 76.6% of that administrative benchmark. HUD FMR or SAFMR is bedroom-specific and useful for creating the local scaling ladder, but it is an administrative standard rather than asking rent. Neither the HUD value nor the modelled series establishes a payment, availability, or rent for a specific property.</p><p>Housing-stock evidence helps frame the rent and burden measures without converting vacancy into a leasing conclusion. The ACS counts 19,228 housing units, including 2,827 vacant units, for a 14.7% vacancy rate; 1,849 units fall in the survey's vacant-for-rent category. The structure counts include 5,597 units in large multifamily buildings, a relevant recorded stock category in this renter-heavy ZCTA. These are survey classifications, not a real-time inventory feed. In particular, a vacant-for-rent count does not demonstrate that a specific apartment is currently available, at the ZORI level, in acceptable condition, or offered with the same utilities and lease terms used in another source.</p><p>Wider comparisons place the ZIP below surrounding rent contexts but cannot replace ZIP evidence: the San Antonio city scope is $1,382, the Bexar County scope is $1,389, and the San Antonio-New Braunfels, TX metro scope is $1,416. Each is a broader context value, not a substitute for the 78229 Zillow index or an indication that any ZIP property is discounted by a fixed amount. The ZIP's renter-heavy ACS tenure mix and its cooling asking-rent history should likewise remain local observations rather than being attributed to city, county, or metro conditions. The city, county, and metro figures are useful benchmarks only because their geographic scopes are explicitly wider.</p><p>Resale evidence creates the clearest counterpoint to the cooling rent path. Redfin's direct rolling-three-month ZIP for-sale observation reports a median sold price of $208,453, up 7.8% year over year, with 48 homes sold and a median 75 days on market. Inventory is 132 homes and months of supply is 8.3; the average sale-to-list ratio is 95.7%, while 6.4% of sales closed above list. Those are for-sale market observations, not rental transactions or rental comparables. The 6.7% annualized-ZORI-to-median-price figure is only a cross-source screening ratio, not a cap rate, net return, expected return, or property yield. Rising resale prices challenge a simple reading of rent cooling, while extended marketing time and below-list sale signals add a separate resale-market tension. Property-level review remains unresolved without unit bedroom count, included utilities, current asking-rent comparables, condition, lease terms, and directly comparable sale evidence; can those checks reconcile the rent and resale signals for a particular address?</p>","findings":[{"body":"Zillow ZORI is $1,157 in June 2026 after a 2.2% same-month annual decline and a 2.5% three-year decline. The five-year change remains positive at 0.9%, so the recent trajectory breaks from the longer historical path. The history series is complete across 104 monthly observations, but it remains a ZIP asking-rent index rather than a lease or property-specific rent record.","title":"Cooling asking-rent history contrasts with a positive longer path"},{"body":"The arithmetic 30% screen places current ZORI near the ZCTA median household income level, but ACS shows that 54.0% of renter households spend at least 30% of income on gross rent. Those measures do not conflict mechanically: ZORI is an asking-rent index, whereas ACS gross rent surveys occupied renter homes and includes selected utilities. Neither measure establishes affordability for an individual household or unit.","title":"Survey burden remains material despite the current income screen"},{"body":"The studio-through-four-bedroom estimates are created by scaling the ZIP ZORI with the local HUD bedroom ladder. They provide a consistent modelled range for comparing bedroom sizes, but they are not measured rents, lease transactions, or available-unit quotes. HUD's bedroom-specific standard is administrative rather than market asking rent, so the resulting ladder should not be used to infer a particular landlord's pricing.","title":"Modelled bedroom estimates are anchored to HUD, not observed unit rents"},{"body":"Redfin's direct ZIP resale observation shows a higher median sold price year over year while Zillow asking rent declined. At the same time, marketing time, inventory, supply, and sale-to-list measures describe a distinct for-sale environment rather than rental demand. The annualized ZORI divided by median sold price is only a cross-source screening ratio; it does not measure property-level operating income or return.","title":"For-sale evidence challenges a simple rent-only reading"}],"risks":["Zillow, ACS, HUD, and Redfin describe different populations, timing conventions, and market functions. Combining them without preserving those source boundaries can turn valid context into an unsupported claim about a specific rental unit.","The rent history is complete and useful for describing prior movement, but the drawdown record shows that a single current asking-rent index can be sensitive to where the ZIP sits in its earlier path.","ACS vacancy and vacant-for-rent counts are survey classifications rather than live listings. They do not verify current availability, unit condition, included utilities, lease restrictions, or the rent a prospective tenant would actually face.","The resale price screen uses annualized ZIP ZORI and median sold price from separate sources. It omits property expenses, financing, taxes, repairs, lease performance, and property-specific comparability, so it cannot represent investment economics."],"qa":[{"a":"The values come from different evidence universes. Zillow ZORI is a typical observed asking-rent index blended across rental types, while ACS median gross rent is a five-year survey of occupied renter homes that includes selected utilities. Different timing, household populations, utility treatment, and survey design mean the gap is not a direct unit-level pricing discrepancy.","q":"Why is Zillow ZORI lower than ACS median gross rent in this ZIP?"},{"a":"No. The bedroom figures are modelled monthly estimates created by scaling the ZIP-wide ZORI with the local HUD bedroom ladder. ZORI itself is an all-rental-type asking-rent index, and HUD is an administrative bedroom-specific standard. Neither source verifies available units, lease terms, utility inclusion, condition, or actual signed rents for a bedroom category.","q":"Are the bedroom rent figures observed rents for available apartments?"},{"a":"No. The calculation simply divides annualized ZIP ZORI by the 30% threshold to create an arithmetic income screen. It is not financial advice, an applicant qualification rule, or a household budget assessment. Actual household circumstances, utilities, debts, subsidies, unit condition, and lease terms are outside the supplied ZIP-level calculation.","q":"Does the 30% required-income calculation determine whether a household can afford a unit?"},{"a":"It shows only the annualized ZIP asking-rent index divided by Redfin's median sold price from the direct rolling-three-month ZIP resale observation. It can flag a cross-source relationship between broad rent and resale levels, but it is not a cap rate, yield, net return, expected return, or evidence of property-level economics.","q":"What does the annualized ZORI-to-sale-price ratio show?"}],"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-11-01","rent":963.968659},{"period":"2017-12-01","rent":969.646561},{"period":"2018-01-01","rent":979.588879},{"period":"2018-02-01","rent":988.525754},{"period":"2018-03-01","rent":994.602955},{"period":"2018-04-01","rent":1004.617388},{"period":"2018-05-01","rent":1014.93373},{"period":"2018-06-01","rent":1020.607655},{"period":"2018-07-01","rent":1022.18627},{"period":"2018-08-01","rent":1026.346978},{"period":"2018-09-01","rent":1012.094171},{"period":"2018-10-01","rent":1003.934723},{"period":"2018-11-01","rent":1007.184349},{"period":"2018-12-01","rent":1022.673189},{"period":"2019-01-01","rent":1026.939626},{"period":"2019-02-01","rent":1012.32112},{"period":"2019-03-01","rent":1015.810527},{"period":"2019-04-01","rent":1011.337676},{"period":"2019-05-01","rent":1008.134435},{"period":"2019-06-01","rent":1013.928384},{"period":"2019-07-01","rent":1021.132338},{"period":"2019-08-01","rent":1024.45236},{"period":"2019-09-01","rent":1035.274644},{"period":"2019-10-01","rent":1048.910449},{"period":"2019-11-01","rent":1059.270002},{"period":"2019-12-01","rent":1053.800913},{"period":"2020-01-01","rent":1057.697483},{"period":"2020-02-01","rent":1080.318187},{"period":"2020-03-01","rent":1086.415691},{"period":"2020-04-01","rent":1091.002965},{"period":"2020-05-01","rent":1078.269732},{"period":"2020-06-01","rent":1062.661919},{"period":"2020-07-01","rent":1052.583324},{"period":"2020-08-01","rent":1054.116285},{"period":"2020-09-01","rent":1062.895427},{"period":"2020-10-01","rent":1062.052192},{"period":"2020-11-01","rent":1064.619645},{"period":"2020-12-01","rent":1058.974384},{"period":"2021-01-01","rent":1066.31711},{"period":"2021-02-01","rent":1076.396813},{"period":"2021-03-01","rent":1077.953164},{"period":"2021-04-01","rent":1078.449053},{"period":"2021-05-01","rent":1087.813576},{"period":"2021-06-01","rent":1104.021835},{"period":"2021-07-01","rent":1123.816191},{"period":"2021-08-01","rent":1141.568332},{"period":"2021-09-01","rent":1162.121469},{"period":"2021-10-01","rent":1181.489034},{"period":"2021-11-01","rent":1186.658166},{"period":"2021-12-01","rent":1202.286459},{"period":"2022-01-01","rent":1213.24972},{"period":"2022-02-01","rent":1222.499717},{"period":"2022-03-01","rent":1225.417152},{"period":"2022-04-01","rent":1241.515729},{"period":"2022-05-01","rent":1248.378498},{"period":"2022-06-01","rent":1261.29191},{"period":"2022-07-01","rent":1265.232184},{"period":"2022-08-01","rent":1270.175704},{"period":"2022-09-01","rent":1257.857952},{"period":"2022-10-01","rent":1240.947751},{"period":"2022-11-01","rent":1242.236243},{"period":"2022-12-01","rent":1241.033118},{"period":"2023-01-01","rent":1244.938361},{"period":"2023-02-01","rent":1240.060554},{"period":"2023-03-01","rent":1258.124094},{"period":"2023-04-01","rent":1265.729284},{"period":"2023-05-01","rent":1267.403824},{"period":"2023-06-01","rent":1247.437844},{"period":"2023-07-01","rent":1233.701408},{"period":"2023-08-01","rent":1226.950883},{"period":"2023-09-01","rent":1234.071304},{"period":"2023-10-01","rent":1247.237014},{"period":"2023-11-01","rent":1259.891954},{"period":"2023-12-01","rent":1265.182275},{"period":"2024-01-01","rent":1255.100236},{"period":"2024-02-01","rent":1249.642188},{"period":"2024-03-01","rent":1238.921786},{"period":"2024-04-01","rent":1236.225022},{"period":"2024-05-01","rent":1233.617908},{"period":"2024-06-01","rent":1234.907319},{"period":"2024-07-01","rent":1233.865423},{"period":"2024-08-01","rent":1233.876896},{"period":"2024-09-01","rent":1229.819209},{"period":"2024-10-01","rent":1213.017443},{"period":"2024-11-01","rent":1204.333964},{"period":"2024-12-01","rent":1204.423406},{"period":"2025-01-01","rent":1207.829231},{"period":"2025-02-01","rent":1205.511513},{"period":"2025-03-01","rent":1195.050852},{"period":"2025-04-01","rent":1186.67036},{"period":"2025-05-01","rent":1184.574103},{"period":"2025-06-01","rent":1183.038562},{"period":"2025-07-01","rent":1183.538933},{"period":"2025-08-01","rent":1179.913867},{"period":"2025-09-01","rent":1175.787984},{"period":"2025-10-01","rent":1178.795081},{"period":"2025-11-01","rent":1173.442618},{"period":"2025-12-01","rent":1165.074122},{"period":"2026-01-01","rent":1160.174374},{"period":"2026-02-01","rent":1159.044226},{"period":"2026-03-01","rent":1162.217135},{"period":"2026-04-01","rent":1162.113433},{"period":"2026-05-01","rent":1158.721203},{"period":"2026-06-01","rent":1156.839937}],"historySummary":{"pointCount":104,"firstPeriod":"2017-11-01","latestPeriod":"2026-06-01","coverageMonths":104,"coverageRatio":1,"changes":{"1":{"years":1,"startPeriod":"2025-06-01","endPeriod":"2026-06-01","startRent":1183.038562,"endRent":1156.839937,"change":-0.022145199523935677,"cagr":-0.022145199523935677},"3":{"years":3,"startPeriod":"2023-06-01","endPeriod":"2026-06-01","startRent":1247.437844,"endRent":1156.839937,"change":-0.07262719135527529,"cagr":-0.02481999952017977},"5":{"years":5,"startPeriod":"2021-06-01","endPeriod":"2026-06-01","startRent":1104.021835,"endRent":1156.839937,"change":0.047841537481910335,"cagr":0.009390288640266586}},"maxDrawdown":-0.08922841670100157,"annualizedVolatility":0.02810254382486536,"consecutiveReturnCount":103}}