- 2026-07-09: 441 stores entered the tracked population (3,092 → 3,532 stores). Advertised inventory moved 218,120 → 225,676 units and the median 10x10 moved $100 → $107 across the same step.
- 2026-07-23: 1,096 stores entered the tracked population (3,541 → 4,637 stores). Advertised inventory moved 212,963 → 292,635 units and the median 10x10 moved $105 → $96 across the same step.
National advertised inventory
Total units marked rentable across the network, per snapshot. This reflects advertised availability — units published as rentable — which may differ from physical vacancy; the two aren't directly comparable from public data. Read this as a measure of what is being advertised over time, not as an occupancy figure.
Marked on the chart: the tracked population changed size on 2026-07-09, 2026-07-23. Values before and after that line count different sets of stores and are not comparable.
National median 10x10 price
Median of each store's cheapest available 10x10, per snapshot.
Marked on the chart: the tracked population changed size on 2026-07-09, 2026-07-23. Values before and after that line count different sets of stores and are not comparable.
Public Storage (NYSE: PSA) closing share price
PSA's official daily closing price, plotted on the same scraper snapshot dates as the charts above so the x-axes line up.
How non-trading days are handled. The scraper publishes every calendar day; the market does not. Each snapshot date shows PSA's most recent close on or before that date. A filled dot is a close from a trading day not already plotted. A hollow dot is the same close repeated onto a later snapshot date because no newer close existed yet — a carried-forward value, not that day's price. Where the most recent close is more than 5 days old the point is left blank and the line breaks rather than continuing flat. The daily job runs at 11:00 UTC, ahead of the 16:00 ET close, so the newest close available on any snapshot date is normally the previous trading day's. Because the series is drawn on snapshot dates, closes from trading days with no snapshot are not plotted.
56 of 56 snapshot dates carry a price: 40 are a close from a trading day not already plotted, 16 repeat the previous close (weekend, market holiday, or no newer close at scrape time), and 0 are left blank because the newest close available was more than 5 days old. Latest plotted point: 2026-09-07 showing the close of 2026-09-04 ($302.01).
Largest declines in advertised availability
Stores whose trailing median count of units listed as available fell the most: the median across 2026-09-07 and the 6 snapshots before it, against the 7 snapshots before those (2026-08-20 → 2026-09-07). This measures what the website advertised and nothing more: a smaller number means fewer units were listed as available. Advertised availability is not a physical vacancy count, and a change in it can arise from many ordinary causes — rentals, listing and pricing updates, unit reclassification, or site changes — which public data cannot distinguish between. Stores that stopped publishing availability altogether are listed separately below rather than shown here as the largest decline.
| site # | address | city | state | median units (prior → recent) | change |
|---|---|---|---|---|---|
| #77796 | 9480 E Stockton Bl | Elk Grove | CA | 358 → 199 | −159 |
| #23925 | 5400 Alder Dr | Houston | TX | 240 → 132 | −108 |
| #00132 | 1535 Simmons Rd | Kissimmee | FL | 617 → 513 | −104 |
| #78010 | 13207 Bois D Arc Rd | Manor | TX | 547 → 447 | −100 |
| #68584 | 64023 Highway 11 | Pearl River | LA | 205 → 122 | −83 |
| #78106 | 9692 Buffalo Rd | Palmetto | FL | 526 → 454 | −72 |
| #68792 | 200 N Bryan Rd | Mission | TX | 178 → 110 | −68 |
| #78017 | 5950 E Broadway Blvd | Tucson | AZ | 131 → 66 | −65 |
| #25437 | 2250 West Copans Road | Pompano Beach | FL | 157 → 95 | −62 |
| #78113 | 9401 FM 521 Rd | Rosharon | TX | 502 → 454 | −48 |
| #77676 | 16001 SW 117th Ave | miami | FL | 722 → 681 | −41 |
| #68076 | 3770 Center St | Houston | TX | 80 → 40 | −40 |
| #29269 | 1611 Chestnut St | Dallas | TX | 289 → 252 | −37 |
| #68249 | 2771 Oak Tree Dr | Carrollton | TX | 184 → 147 | −37 |
| #78067 | 1 Parris Island Gateway | Beaufort | SC | 270 → 233 | −37 |
Largest increases in advertised availability
The opposite end — stores whose trailing median count of listed-available units rose the most over the same two windows. The same caveat applies in reverse: this is a change in what was advertised, not a measured change in physical occupancy.
| site # | address | city | state | median units (prior → recent) | change |
|---|---|---|---|---|---|
| #23029 | 3625 S Grand Ave | Los Angeles | CA | 584 → 955 | +371 |
| #27387 | 9130 South Hampton Road | Dallas | TX | 343 → 667 | +324 |
| #27911 | 800 Rep John Lewis Way S | Nashville | TN | 271 → 520 | +249 |
| #25874 | 1385 Hunting Valley Rd | St Paul | MN | 435 → 644 | +209 |
| #22030 | 1400 E Michigan Ave | Saline | MI | 143 → 314 | +171 |
| #08171 | 1111 118th Ave SE STE #2 | Bellevue | WA | 623 → 777 | +154 |
| #21110 | 4725 N 43rd Ave | Phoenix | AZ | 114 → 263 | +149 |
| #28135 | 2080 Briarcliff Road NE | Atlanta | GA | 430 → 536 | +106 |
| #22027 | 1900 Sagamore Pkwy W | West Lafayette | IN | 164 → 269 | +105 |
| #77897 | 2461 Cherry Laurel Dr | Sanford | FL | 82 → 184 | +102 |
Stopped advertising availability — not a decline
Stores that advertised units through 2026-08-20 → 2026-08-31 and then reported exactly zero on every snapshot since. A store reading zero after a week in the hundreds has stopped publishing availability; reading that as units rented would make it the largest mover on the page and the least likely to mean what the table says it means. Kept separate for that reason.
| site # | address | city | state | median units advertised before | snapshots at zero |
|---|---|---|---|---|---|
| #68214 | 211 Grove St | Bloomfield | NJ | 139 | 7 of 7 |
10x10 advertised price increases
Largest increases in the trailing median of a store's cheapest advertised 10x10, over the same two windows (2026-08-20 → 2026-09-07). Prices shown are the advertised online rates. A store must carry a 10x10 price across 14 consecutive snapshots, all inside the plausible range for a 10x10, before it can appear.
| site # | address | city | state | prior median | recent median | change | change % |
|---|---|---|---|---|---|---|---|
| #00280 | 1695 Benson Ave | Upland | CA | $129 | $252 | +$123 | +95.3% |
| #26331 | 4400 Ramona Blvd | Monterey Park | CA | $266 | $387 | +$121 | +45.5% |
| #20289 | 190 10th Street | San Francisco | CA | $207 | $322 | +$115 | +55.6% |
| #24331 | 22992 El Pacifico Dr | Laguna Hills | CA | $140 | $252 | +$112 | +80.0% |
| #23717 | 13333 Osborne Street | Arleta | CA | $275 | $385 | +$110 | +40.0% |
| #22315 | 365 W Manchester Ave | Los Angeles | CA | $152 | $261 | +$109 | +71.7% |
| #20154 | 23811 Ventura Blvd | Calabasas | CA | $203 | $312 | +$109 | +53.7% |
| #27001 | 130 Landing Court | Novato | CA | $193 | $296 | +$103 | +53.4% |
| #08150 | 1751 Old Meadow Road | McLean | VA | $189 | $292 | +$103 | +54.5% |
| #26341 | 12245 Woodruff Ave | Downey | CA | $213 | $315 | +$102 | +47.9% |
10x10 advertised price decreases
Largest decreases in the trailing median of a store's cheapest advertised 10x10 over the same two windows. Published rates move for many reasons; this table reports the change without inferring a cause.
| site # | address | city | state | prior median | recent median | change | change % |
|---|---|---|---|---|---|---|---|
| #68739 | 346 Carr 2 | Toa Baja | PR | $336 | $240 | −$96 | −28.6% |
| #08747 | 1302 W Kennedy Blvd | Tampa | FL | $216 | $128 | −$88 | −40.7% |
| #25779 | 161 E Ventura Blvd | Oxnard | CA | $254 | $166 | −$88 | −34.6% |
| #25796 | 14751 SW 29th St | Miramar | FL | $286 | $198 | −$88 | −30.8% |
| #00412 | 3080 Pembroke Road | Hallandale | FL | $248 | $166 | −$82 | −33.1% |
| #20145 | 13249 Garvey Ave | Baldwin Park | CA | $241 | $160 | −$81 | −33.6% |
| #25431 | 12123 West Sample Road | Coral Springs | FL | $270 | $190 | −$80 | −29.6% |
| #08110 | 269 Gold St | Brooklyn | NY | $356 | $276 | −$80 | −22.5% |
| #08505 | 17052 Jamboree Road | Irvine | CA | $248 | $168 | −$80 | −32.3% |
| #26977 | 6990 Noritsu Ave | Buena Park | CA | $274 | $194 | −$80 | −29.2% |
Advertised price moves by unit size
Change in a listing's trailing median advertised price: the median across 2026-09-01 → 2026-09-07 against the median across 2026-08-20 → 2026-08-31, per store and unit size. Medians rather than two endpoints, because a single mis-scraped reading inside a 7-snapshot window is outvoted by the readings around it, where against one adjacent snapshot it would be the whole signal. 22,334 listings moved; 9,510 were held back as suspected collection artifacts and are itemised below. These are observed changes in published online rates; no cause is inferred.
A listing must carry a real price across 14 consecutive snapshots before it can appear here, and every observation must fall inside the plausible range for its size, taken from the observed distribution of that size (p0.5–p99.5): Locker $10–$166; 5x5 $10–$182; 5x10 $14–$251; 5x15 $21–$347; 10x10 $31–$416; 10x15 $43–$581; 10x20 $57–$649; 10x25 $67–$699; 10x30 $82–$878; Parking $19–$442.
Largest increases
| site # | size | prior median | recent median | change | change % |
|---|---|---|---|---|---|
| #08230 | 10x30 | $176 | $501 | +$325 | +184.7% |
| #25890 | 10x30 | $212 | $520 | +$308 | +145.3% |
| #25802 | 10x30 | $393 | $689 | +$296 | +75.3% |
| #27636 | 10x30 | $178 | $456 | +$278 | +156.2% |
| #00276 | 10x30 | $406 | $670 | +$264 | +65.0% |
| #25805 | 10x30 | $143 | $402 | +$259 | +181.1% |
| #30384 | 10x30 | $210 | $467 | +$257 | +122.4% |
| #77900 | 10x30 | $526 | $782 | +$256 | +48.7% |
| #25896 | 10x30 | $285 | $534 | +$249 | +87.4% |
| #27602 | 10x30 | $224 | $454 | +$230 | +102.7% |
Largest decreases
| site # | size | prior median | recent median | change | change % |
|---|---|---|---|---|---|
| #22023 | 10x30 | $686 | $153 | −$533 | −77.7% |
| #28158 | 10x30 | $671 | $222 | −$449 | −66.9% |
| #25813 | 10x30 | $647 | $248 | −$399 | −61.7% |
| #25891 | 10x30 | $548 | $227 | −$321 | −58.6% |
| #07038 | 10x30 | $714 | $408 | −$306 | −42.9% |
| #27185 | 10x30 | $704 | $413 | −$291 | −41.3% |
| #77607 | 10x30 | $571 | $283 | −$288 | −50.4% |
| #08534 | 10x30 | $686 | $412 | −$274 | −39.9% |
| #28149 | 10x30 | $527 | $258 | −$269 | −51.0% |
| #22044 | 10x30 | $428 | $175 | −$253 | −59.1% |
No longer advertised — not a price move
Listings that were priced through 2026-08-20 → 2026-08-31 and then stopped being published. A listing that disappears is a disappearance, not a repricing, so it is counted here rather than shown as a price falling to nothing.
| site # | size | units advertised before it left the feed |
|---|---|---|
| #25550 | 10x10 | 18 |
| #25708 | 5x10 | 18 |
| #08194 | 10x20 | 14 |
| #08458 | 5x10 | 14 |
| #29146 | 5x10 | 13 |
| #20130 | 5x10 | 13 |
| #27604 | 5x5 | 13 |
| #77697 | 5x5 | 13 |
| #22315 | 5x10 | 12 |
| #20901 | 5x10 | 12 |
| #27604 | 5x10 | 12 |
| #22001 | 10x10 | 11 |
| #07116 | 10x10 | 11 |
| #23001 | 10x10 | 11 |
| #07035 | 5x10 | 11 |
The rate-change log (history/rate_changes.csv) holds 470,958 individual price changes across 32 days. It records deltas only, so it cannot support a trailing median or tell a placeholder from a repricing; the tables above are built from the per-listing price levels in history/store-sizes-YYYY-MM.csv instead.
Excluded rows
10,143 rows were held back from the movers tables above as suspected
collection artifacts — 9,510 of the 35,112 tracked store-size listings, and
633 store-level rows across the 4,672 stores tracked. Nothing is dropped
silently: every excluded row is written to quarantine/movers_quarantine.csv with its reason and the values that
triggered it, so this count can be checked rather than taken on trust.
| table | reason | rows | what it means |
|---|---|---|---|
| price by size | no_baseline | 7,215 | no real price across the 7 snapshots before the comparison window. A store that has just entered the dataset has no prior reading, so any change computed for it is arithmetic on a value nobody observed. |
| price by size | no_longer_advertised | 1,802 | priced before the comparison window and not priced through it — the listing stopped being published. A disappearance, not a repricing. |
| price by size | price_out_of_bounds | 407 | at least one observation fell outside the p0.5–p99.5 range of observed prices for that unit size, which marks it as a placeholder rather than a rate. |
| price by size | store_not_tracked_through_window | 86 | the store was not in the dataset for all 14 snapshots being compared. |
| 10x10 price | no_baseline | 393 | no real price across the 7 snapshots before the comparison window. A store that has just entered the dataset has no prior reading, so any change computed for it is arithmetic on a value nobody observed. |
| 10x10 price | no_longer_advertised | 123 | priced before the comparison window and not priced through it — the listing stopped being published. A disappearance, not a repricing. |
| 10x10 price | price_out_of_bounds | 85 | at least one observation fell outside the p0.5–p99.5 range of observed prices for that unit size, which marks it as a placeholder rather than a rate. |
| 10x10 price | store_not_tracked_through_window | 12 | the store was not in the dataset for all 14 snapshots being compared. |
| availability | store_not_tracked_through_window | 12 | the store was not in the dataset for all 14 snapshots being compared. |
| availability | started_advertising_availability | 7 | advertised units were zero and are not any more, which is a store that began publishing availability rather than one that returned units to stock. |
| availability | stopped_advertising_availability | 1 | advertised units went to exactly zero and stayed there, which is a store that stopped publishing availability rather than one that rented everything out. |
Trends by size
Availability and price over time, split by unit size, from the state-by-size demand log (history/sizes-YYYY-MM.csv). Price is a national average weighted by each state's listing count, since raw per-listing prices aren't retained at this granularity — read it as a trendline, not a precise national median. 55 days logged so far — the chart needs at least two distinct days to show a line, and gains one day per successful collection run.
Marked on the chart: the tracked population changed size on 2026-07-09, 2026-07-23. Values before and after that line count different sets of stores and are not comparable.
Advertised availability — Locker
Weighted-avg price — Locker
Tracking coverage
2 stores are tracked now that weren't in the 2026-08-31 snapshot, and 0 dropped out. Additions can reflect improved discovery as well as new openings; drops are usually closures. Coverage change becomes a clean openings/closures signal once the baseline stabilizes.