transcript.md
↑ ContentsState Planner chat · https://stateplanner.com
- State: New Mexico (NM)
- Started: November 5, 2026, 5:30 PM UTC
- Runtime: 52 sec
- Status: completed
Prompt
New Mexico Building Permits Issued by County: Where Is New Housing Going, 2020-2025?
Model: Anthropic: Claude Opus 5.5 (anthropic/claude-opus-5.5, via openrouter)
Response
Where New Mexico's new housing permits went, 2020–2025
Building permits authorized 45,435 new privately owned housing units in New Mexico from 2020 through 2025. These are Census Building Permits Survey estimates, which include the Bureau's figures for permit offices that didn't report. Four counties account for 78% of the units: Bernalillo, Sandoval, Doña Ana and Santa Fe.

How to read the map: counties are shaded by the total units permitted from 2020 to 2025:
- Dark navy: 5,000 or more
- Blue: 1,000–4,999
- Light blue: 300–999
- Pale blue: 1–299
- Grey: no permits in the Census county file
The four largest totals are labelled on the map. Click a county to see how its units split by building size and its units per 1,000 residents.
Housing units authorized by permit, by county, 2020–2025
| County | Units | Share of state | Single-family | 2–4 unit bldgs | 5+ unit bldgs | Units per 1,000 residents* |
|---|---|---|---|---|---|---|
| Bernalillo | 8,998 | 27.0% | 5,206 | 96 | 3,696 | 13.5 |
| Sandoval | 6,984 | 21.0% | 5,645 | 92 | 1,247 | 43.8 |
| Doña Ana | 6,210 | 18.7% | 5,766 | 285 | 159 | 27.1 |
| Santa Fe | 3,672 | 11.0% | 1,443 | 14 | 2,215 | 23.4 |
| Valencia | 1,445 | 4.3% | 1,445 | 0 | 0 | 17.6 |
| Eddy | 1,375 | 4.1% | 956 | 41 | 378 | 22.0 |
| Lea | 988 | 3.0% | 988 | 0 | 0 | 13.2 |
| Curry | 863 | 2.6% | 362 | 287 | 214 | 18.5 |
| Taos | 713 | 2.1% | 701 | 4 | 8 | 20.6 |
| San Juan | 613 | 1.8% | 592 | 0 | 21 | 5.1 |
| Lincoln | 513 | 1.5% | 507 | 6 | 0 | 25.9 |
| Chaves | 486 | 1.5% | 486 | 0 | 0 | 7.7 |
| Los Alamos | 165 | 0.5% | 165 | 0 | 0 | 8.5 |
| Roosevelt | 134 | 0.4% | 134 | 0 | 0 | 7.2 |
| Luna, Otero, McKinley, Sierra, Grant, San Miguel | 127 combined | 0.3% | — | — | — | 0.1–2.0 |
*Six-year units divided by the 2025 Census county population estimate.
What stands out
- Sandoval County (Rio Rancho and the Albuquerque metro's west side) permitted the most housing relative to its size: about 44 units per 1,000 residents, roughly three times Bernalillo's rate. Only Bernalillo permitted more units in total.
- Two counties got most of the apartment permits. Statewide, about 81% of units were single-family and 17.5% were in buildings of five or more units. Bernalillo (3,696) and Santa Fe (2,215) together hold three-quarters of those larger-building units. Santa Fe is the only county where buildings of five or more units outnumber single-family homes (60% of its units).
- Doña Ana (Las Cruces) is almost entirely single-family: 93% of its 6,210 units.
- Outside the metro areas, the largest totals are in Eddy and Lea (the Permian Basin oil region) and in Valencia, south of Albuquerque. Lincoln and Taos have high rates for their size, at 21–26 units per 1,000 residents.
Year by year

The state total went from 5,219 units in 2020 to a peak of 8,633 in 2022. It stayed near that in 2023 (8,511), then settled around 7,600–7,700 in 2024 and 2025. The 2021 jump came mostly from buildings of five or more units, which rose from 760 units to 2,203. Single-family permits peaked in 2022 at 7,155.
Caveats
- Thirteen counties have no rows in the Census file for these years: Rio Arriba, Cibola, Socorro, Torrance, Colfax, Quay, Mora, Guadalupe, Union, Hidalgo, Catron, De Baca and Harding. Sierra appears in only 2 of the 6 years and Grant in 4. Missing rows most likely mean the area has few or no permit-issuing offices, so construction there isn't counted. They don't mean nothing was built.
- Some housing isn't counted at all: manufactured (mobile) homes, public housing, additions and conversions are left out. That matters in rural New Mexico, where many new homes are manufactured homes.
- A permit isn't a finished home: it authorizes construction, and some permitted units are never built.
- About the dollar figures: construction values in the map pop-ups and the data are nominal dollars as written on the permits (for example about $1.8 billion in Bernalillo). They aren't adjusted for inflation and are rough for comparing counties.
If you want to look below the county level, I can break this down by city or permit office (Albuquerque, Rio Rancho, Las Cruces, Santa Fe and others).
Chart Queries
Housing units permitted per year, top counties
SELECT YEAR AS "Year",
CASE
WHEN geoid IN ('35001', '35043', '35013', '35049', '35061', '35015') THEN replace(replace(name, ' County', ''), 'Dona', 'Doña')
ELSE 'All other counties'
END AS "County",
sum(units_total) AS "Units permitted"
FROM nm_bps_county_permits
WHERE YEAR BETWEEN 2020 AND 2025
GROUP BY 1,
2
ORDER BY 1,
2
charts/turn-1-permits-by-year-county.csv
Picture: charts/turn-1-permits-by-year-county.png
Exploratory Queries
Query 1 — Check which years 2020-2025 exist and county coverage.
SELECT YEAR,
count(*),
sum(units_total) u,
sum(units_1) sf,
sum(units_5plus) mf5
FROM nm_bps_county_permits
WHERE YEAR >= 2019
GROUP BY YEAR
ORDER BY YEAR
| year | count | u | sf | mf5 |
|---|---|---|---|---|
| 2019 | 23 | 5020 | 4285 | 702 |
| 2020 | 21 | 5219 | 4418 | 760 |
| 2021 | 21 | 7753 | 5465 | 2203 |
| 2022 | 20 | 8633 | 7155 | 1427 |
| 2023 | 20 | 8511 | 6835 | 1529 |
| 2024 | 19 | 7572 | 6488 | 770 |
| 2025 | 19 | 7747 | 6296 | 1264 |
Query 2 — County totals 2020-2025 with share, mix and per-1,000-resident rate.
WITH p AS (
SELECT geoid,
sum(units_total) u,
sum(units_1) sf,
sum(units_2 + units_3_4) small,
sum(units_5plus) mf,
count(*) yrs,
sum(value_total) val
FROM nm_bps_county_permits
WHERE YEAR BETWEEN 2020 AND 2025
GROUP BY geoid
),
pop AS (
SELECT geoid,
pop_estimate
FROM nm_census_county_pop_est
WHERE YEAR = (
SELECT max(YEAR)
FROM nm_census_county_pop_est
)
)
SELECT c.geoid,
c.name,
p.u,
p.sf,
p.small,
p.mf,
p.yrs,
round(p.val / 1e6) val_m,
pop.pop_estimate,
round(1000.0 * p.u / pop.pop_estimate, 1) per1k,
round(100.0 * p.u / sum(p.u) OVER (), 1) pct
FROM nm_census_counties c
LEFT JOIN p ON p.geoid = c.geoid
LEFT JOIN pop ON pop.geoid = c.geoid
ORDER BY p.u DESC NULLS LAST
| geoid | name | u | sf | small | mf | yrs | val_m | pop_estimate | per1k | pct |
|---|---|---|---|---|---|---|---|---|---|---|
| 35001 | Bernalillo County | 8998 | 5206 | 96 | 3696 | 6 | 1819 | 667601 | 13.5 | 27.0 |
| 35043 | Sandoval County | 6984 | 5645 | 92 | 1247 | 6 | 1375 | 159565 | 43.8 | 21.0 |
| 35013 | Doña Ana County | 6210 | 5766 | 285 | 159 | 6 | 1588 | 229091 | 27.1 | 18.7 |
| 35049 | Santa Fe County | 3672 | 1443 | 14 | 2215 | 6 | 804 | 156907 | 23.4 | 11.0 |
| 35061 | Valencia County | 1445 | 1445 | 0 | 0 | 6 | 416 | 82013 | 17.6 | 4.3 |
| 35015 | Eddy County | 1375 | 956 | 41 | 378 | 6 | 335 | 62509 | 22.0 | 4.1 |
| 35025 | Lea County | 988 | 988 | 0 | 0 | 6 | 275 | 74749 | 13.2 | 3.0 |
| 35009 | Curry County | 863 | 362 | 287 | 214 | 6 | 180 | 46655 | 18.5 | 2.6 |
| 35055 | Taos County | 713 | 701 | 4 | 8 | 6 | 191 | 34564 | 20.6 | 2.1 |
| 35045 | San Juan County | 613 | 592 | 0 | 21 | 6 | 148 | 120340 | 5.1 | 1.8 |
| 35027 | Lincoln County | 513 | 507 | 6 | 0 | 6 | 220 | 19844 | 25.9 | 1.5 |
| 35005 | Chaves County | 486 | 486 | 0 | 0 | 6 | 94 | 63364 | 7.7 | 1.5 |
| 35028 | Los Alamos County | 165 | 165 | 0 | 0 | 6 | 41 | 19407 | 8.5 | 0.5 |
| 35041 | Roosevelt County | 134 | 134 | 0 | 0 | 6 | 20 | 18615 | 7.2 | 0.4 |
| 35029 | Luna County | 38 | 38 | 0 | 0 | 6 | 8 | 25407 | 1.5 | 0.1 |
| 35035 | Otero County | 25 | 25 | 0 | 0 | 6 | 9 | 70368 | 0.4 | 0.1 |
| 35031 | McKinley County | 25 | 16 | 0 | 9 | 6 | 4 | 68119 | 0.4 | 0.1 |
| 35051 | Sierra County | 23 | 17 | 0 | 6 | 2 | 6 | 11395 | 2.0 | 0.1 |
| 35017 | Grant County | 13 | 13 | 0 | 0 | 4 | 2 | 27252 | 0.5 | 0.0 |
| 35047 | San Miguel County | 3 | 3 | 0 | 0 | 6 | 1 | 26260 | 0.1 | 0.0 |
| 35037 | Quay County | 8454 | ||||||||
| 35039 | Rio Arriba County | 39832 | ||||||||
| 35019 | Guadalupe County | 4343 | ||||||||
| 35006 | Cibola County | 26807 | ||||||||
| 35007 | Colfax County | 12184 |
25 out of 33 are listed here.
Query 3 — Confirm population estimate year used for per-capita rates.
SELECT max(YEAR)
FROM nm_census_county_pop_est
| max |
|---|
| 2025 |
Map Layer Queries
Units permitted 2020-2025 — colored by "cls": 5,000+ units (#08306b), 1,000-4,999 units (#2171b5), 300-999 units (#6baed6), 1-299 units (#c6dbef), No permits in Census file (#eeeeee)
WITH p AS (
SELECT geoid,
sum(units_total) u,
sum(units_1) sf,
sum(units_2 + units_3_4) small,
sum(units_5plus) mf
FROM nm_bps_county_permits
WHERE YEAR BETWEEN 2020 AND 2025
GROUP BY geoid
),
pop AS (
SELECT geoid,
pop_estimate
FROM nm_census_county_pop_est
WHERE YEAR = 2025
)
SELECT c.geom,
c.name AS "County",
coalesce(p.u, 0) AS "Units permitted 2020-2025",
p.sf AS "Single-family units",
p.small AS "2-4 unit bldg units",
p.mf AS "5+ unit bldg units",
round(1000.0 * coalesce(p.u, 0) / pop.pop_estimate, 1) AS "Units per 1,000 residents(2025 pop)",
CASE
WHEN p.u IS NULL THEN 'none'
WHEN p.u >= 5000 THEN 'a'
WHEN p.u >= 1000 THEN 'b'
WHEN p.u >= 300 THEN 'c'
WHEN p.u >= 1 THEN 'd'
END AS cls
FROM nm_census_counties c
LEFT JOIN p ON p.geoid = c.geoid
LEFT JOIN pop ON pop.geoid = c.geoid
Picture: maps/turn-1-county-permits-2020-2025.png
Used Data Sets
nm_bps_county_permits— last synced 2026-10-14 · 785 rowsnm_census_counties— last synced 2026-09-27 · 33 rowsnm_census_county_pop_est— last synced 2026-10-15 · 1,838 rows