Self-Storage Data Catalog
Nightly facility-level pricing across 12 Sunbelt metros, normalized into a single schema. Sourced from major brand websites and rolled up into metro-level summaries every morning.
Geographic Coverage
12 Sunbelt metros (and growing) — Phoenix, Dallas, Houston, Austin, San Antonio, Atlanta, Miami, Tampa, Orlando, Nashville, Charlotte, Raleigh
Brand Coverage
5 major operators with more added quarterly: Public Storage, Extra Space, U-Haul, StorageMart, NSA Storage
Refresh Cadence
Brand crawls run nightly 02:00–02:40 UTC. Metro summaries recompute at 03:45 UTC, ready for the morning's queries.
Storage Facilities Registry
All plansFacility-level metadata: name, brand, address, lat/long, total units, climate-controlled unit count, brand website URL, and the metro it falls within. The anchor table for every other storage dataset.
Source
Brand websites (Public Storage, Extra Space, U-Haul, NSA, StorageMart) — JSON-LD plus structured-data crawls
Update Frequency
Nightly (rolling — new brand additions land within 48 hours)
Coverage
12 Sunbelt metros, growing. 5 major operators today; more added quarterly.
Key Fields
facility_idfacility_namebrandaddresscitystatezipmetro_idlatitudelongitudetotal_unitsclimate_controlled_unitswebsite_urlSample Data
| facility_name | Public Storage — Camelback |
| brand | Public Storage |
| metro_id | phoenix-az |
| climate_controlled_units | 184 |
Pricing Snapshots
All plans (full history: Investor+)Append-only nightly pricing snapshots per facility per unit size. Captures web-rate (the public booking-flow rate), street-rate when separately exposed, available unit count, and any active promotions. The historical record for cycle analysis.
Source
Brand-website nightly crawls (02:00–02:40 UTC)
Update Frequency
Nightly (append-only history)
Coverage
All facilities in the registry, every canonical unit size where the brand exposes per-size pricing
Key Fields
snapshot_idfacility_idscraped_atunit_sizeunit_typeweb_rate_dollarsstreet_rate_dollarsavailable_unitspromotion_textSample Data
| unit_size | 10x10 |
| unit_type | climate |
| web_rate_dollars | $112.00 |
| available_units | 3 |
Metro Pricing Summaries
All plans (yoy/mom trends: Investor+)Per-metro, per-unit-size daily aggregates: avg rate, median rate, min/max rate, availability rate, and the count of facilities sampled. Computed nightly from the latest snapshot per facility per unit size. The fastest path to a defensible market median.
Source
Computed in-platform from pricing snapshots (03:45 UTC nightly)
Update Frequency
Nightly
Coverage
All 12 seeded Sunbelt metros, all canonical unit sizes (5x5, 5x10, 10x10, 10x15, 10x20, 10x25, 10x30) plus brand-specific extras (climate-controlled, parking, vehicle storage)
Key Fields
metro_idsummary_dateunit_sizeavg_ratemedian_ratemin_ratemax_rateavailability_ratefacility_count_sampledyoy_rate_change_pctmom_rate_change_pctSample Data
| metro_id | phoenix-az |
| unit_size | 10x10 |
| median_rate | $80.50 |
| facility_count_sampled | 6 |
Availability Signals
Investor+Occupancy proxy derived from per-unit-size availability counts across each metro. When a unit size goes scarce across a metro, rate strength typically follows. A leading indicator versus operator-reported occupancy.
Source
Derived nightly from pricing snapshots
Update Frequency
Nightly
Coverage
All 12 seeded metros, all unit sizes with sufficient samples
Key Fields
metro_idsummary_dateunit_sizeavailability_ratefacility_count_with_inventoryfacility_count_sampledSample Data
| metro_id | miami-fl |
| unit_size | 10x10 |
| availability_rate | 0.42 |
| facility_count_with_inventory | 9 |
Facility Rate History
LenderPer-facility multi-year rate series across every unit size the facility exposes. Watch how a specific store priced through the last cycle. Built for underwriting — facility-level recall, not just metro-level rollups.
Source
Pricing snapshots filtered to a single facility
Update Frequency
Nightly (appends)
Coverage
All facilities in the registry, history depth grows daily from launch
Key Fields
facility_idscraped_atunit_sizeweb_rate_dollarsavailable_unitspromotion_textSample Data
| facility_id | <uuid> |
| unit_size | 10x10 |
| scraped_at | 2026-04-24T02:14:00Z |
| web_rate_dollars | $112.00 |
Market Saturation Indicators
LenderSubmarket facility density (count per radius), permit-pipeline overlay, and percentile rank within Sunbelt. Identify oversupply risk before it reaches NOI. A real lender-grade signal for storage credit.
Source
Facility registry geo + permit data from the adjacent compliance vertical
Update Frequency
Weekly
Coverage
All 12 seeded metros, drillable to submarket where geo permits
Key Fields
metro_idsubmarketfacility_count_within_3mipermits_in_pipelinesaturation_percentilesupply_pressure_flagSample Data
| metro_id | houston-tx |
| submarket | Southwest Houston |
| facility_count_within_3mi | 17 |
| saturation_percentile | 0.91 |
Sample API Response
Every endpoint returns the same envelope shape: data for the result and meta for plan + rate-limit context.
GET /api/v1/storage/facilities/<id>
200 OK{
"data": {
"facility_id": "8a1c2e9b-...",
"facility_name": "Public Storage — Camelback",
"brand": "Public Storage",
"metro_id": "phoenix-az",
"address": "1234 E Camelback Rd, Phoenix, AZ 85014",
"latitude": 33.5089,
"longitude": -112.0498,
"total_units": 412,
"climate_controlled_units": 184,
"latest_snapshots": [
{
"unit_size": "10x10",
"unit_type": "climate",
"web_rate_dollars": 112.00,
"available_units": 3,
"scraped_at": "2026-04-24T02:14:00Z"
},
{
"unit_size": "10x20",
"unit_type": "drive-up",
"web_rate_dollars": 189.00,
"available_units": 1,
"scraped_at": "2026-04-24T02:14:00Z"
}
]
},
"meta": {
"plan": "stg-investor",
"rate_limit_remaining": 1923,
"rate_limit_reset": "2026-05-01T00:00:00Z"
}
}Methodology
We pull the publicly visible web rate from each major brand's booking flow nightly. We do not rely on operator-reported occupancy or self-marked rate sheets. For each facility we record every unit size the brand exposes, the public web rate, the available unit count, and any active promotion text. Snapshots are append-only — we never overwrite history. Every morning we recompute metro-level aggregates from the latest snapshot per facility per unit size, so the median you query at 8am reflects last night's booking-flow reality. Rates are normalized to canonical unit sizes (5x5 through 10x30) where the brand exposes them, with brand-specific size bands preserved alongside.
Dataset Access by Plan
Higher-tier plans unlock additional datasets and full historical depth.
| Dataset | Operator | Investor | Lender |
|---|---|---|---|
| Storage Facilities Registry | |||
| Pricing Snapshots (current) | |||
| Pricing Snapshots (full history) | |||
| Metro Pricing Summaries (latest) | |||
| Metro Trends (YoY / MoM) | |||
| Availability Signals | |||
| Facility Rate History (multi-year) | |||
| Market Saturation Indicators |
Sunbelt Metro Coverage
12 metros at launch. Additional metros prioritized by subscriber demand.
Phoenix
AZ
Dallas
TX
Houston
TX
Austin
TX
San Antonio
TX
Atlanta
GA
Miami
FL
Tampa
FL
Orlando
FL
Nashville
TN
Charlotte
NC
Raleigh
NC
Brand Coverage
Crawls run nightly. New brands evaluated quarterly based on market share and data accessibility.