Regulation engine

Where you can actually rent by the room

33 cities, each read out of the actual municipal code rather than summarised from a blog. Every entry names its source and the date it was checked. A city that is not here has not been researched yet — we would rather show a gap than a guess.

How to read the statuses. A green badge is not a permit. It means the code we read does not cap unrelated occupants at a level that breaks the model, or the cap is high enough to be workable. Amber means it works with a licence, a permit or a specific lease structure. Red means a material provision conflicts with renting by the room in ordinary residential zones. Verify with the jurisdiction before you buy.
Observed enforcement

How often the code is actually cited

The ordinance tells you what is written down. It does not tell you whether anyone acts on it — and that gap is where most of the money and most of the risk in this asset class sits. So for every city that publishes its code-enforcement case register as open data, we count the cases whose own text mentions rooming, boarding, unrelated occupants, roomers or overcrowding, and we show that against the total number of cases of every kind.

Read this as a count, not as a verdict. We will not tell you a city “rarely enforces” its code, because a citation count cannot support that sentence and someone would buy a house on it. Four things it genuinely cannot see: a complaint that closes before a case is opened; a city that enforces through zoning or the fire marshal instead of code enforcement; a register that does not go back far enough; and wording we did not search for. A quiet signal is a reason to ask the jurisdiction a specific question — not an answer. A blank is not a zero. Cities whose register has no searchable description field are left out entirely rather than published at nil. And this does not rank cities against each other. Every register defines its own fields, logs a different mix of complaint types and covers a different span of years, so two cities sharing a word may be nothing but a difference in record-keeping. Read it as one city’s own history; it is not a league table. “Not enough data” is its own answer — it means the register was too thin for a nil match to mean anything, and we would rather say so than colour the city quiet.
CitySignal
Alma, GAActively cited
Atlanta, GAActively cited
Bradenton, FLActively cited
Norfolk, VAActively cited
Orlando, FLActively cited
Torrance, CAActively cited
Anaheim, CASometimes cited
Boulder, COSometimes cited
Cincinnati, OHSometimes cited
Irving, TXSometimes cited
Mesa, AZSometimes cited
Newark, NJSometimes cited
Plano, TXSometimes cited
Spring, TXSometimes cited
Acra, NYRarely cited
Albany, NYRarely cited
Allentown, PARarely cited
Altoona, FLRarely cited
Anderson, INRarely cited
Angier, NCRarely cited
Apollo Beach, FLRarely cited
Arlington, VARarely cited
Asheville, NCRarely cited
Augusta, GARarely cited
Aurora, CORarely cited
Baltimore, MDRarely cited
Barrackville, WVRarely cited
Belington, WVRarely cited
Bellevue, IARarely cited
Big Stone Gap, VARarely cited
Boston, MARarely cited
Buffalo, NYRarely cited
Charlotte, NCRarely cited
Chesapeake, VARarely cited
Chicago, ILRarely cited
Columbia, SCRarely cited
Columbus, OHRarely cited
Dallas, TXRarely cited
Dayton, OHRarely cited
Denver, CORarely cited
Detroit, MIRarely cited
Duluth, MNRarely cited
Durham, NCRarely cited
El Paso, TXRarely cited
Fargo, NDRarely cited
Fayetteville, NCRarely cited
Fort Worth, TXRarely cited
Greensboro, NCRarely cited
Guthrie, TXRarely cited
Hartford, CTRarely cited
Jackson, MSRarely cited
Lake Worth, FLRarely cited
Las Vegas, NVRarely cited
Longview, TXRarely cited
Louisville, KYRarely cited
Lynchburg, VARarely cited
Macon, GARarely cited
Miami, FLRarely cited
Montgomery, ALRarely cited
Nashville, TNRarely cited
New York, NYRarely cited
Pasadena, CARarely cited
Phoenix, AZRarely cited
Portland, ORRarely cited
Raleigh, NCRarely cited
Sacramento, CARarely cited
Saint Paul, MNRarely cited
San Diego, CARarely cited
Scottsdale, AZRarely cited
Seattle, WARarely cited
South Bend, INRarely cited
Spartanburg, SCRarely cited
Spokane, WARarely cited
Tampa, FLRarely cited
Tempe, AZRarely cited
Tucson, AZRarely cited
Tyler, TXRarely cited
Vancouver, WARarely cited
Washington, DCRarely cited
Acampo, CANot enough data
Accokeek, MDNot enough data
Adamstown, MDNot enough data
Akron, OHNot enough data
Alton, NYNot enough data
Alum Creek, WVNot enough data
Amarillo, TXNot enough data
Athens, GANot enough data
Axson, GANot enough data
Belleville, WVNot enough data
Beverly Shores, INNot enough data
Brunswick, GANot enough data
Decatur, GANot enough data
Fellsmere, FLNot enough data
Flint, MINot enough data
Grand Rapids, MINot enough data
Henderson, NVNot enough data
Lincoln, NENot enough data
Madison, WINot enough data
New Haven, CTNot enough data
Oakland, CANot enough data
Providence, RINot enough data
Richmond, VANot enough data
Riverside, CANot enough data
Rochester, NYNot enough data
Salem, ORNot enough data
San Mateo, CANot enough data
Santa Ana, CANot enough data
Topeka, KSNot enough data
Vero Beach, FLNot enough data
Warren, OHNot enough data
Waterbury, CTNot enough data
The counts behind these words are part of a membership. We counted every case in each register whose own text mentions rooming, boarding, unrelated occupants, roomers or overcrowding. The signal above is free and always will be; the case counts, the matched wording, the periods covered and the named source register for each city are what members pay for. See what a membership includes.

Counted 09 September 2026 against each city’s live Socrata register. Short-term-rental cases are shown beside, and kept out of, the room-rental count — they are a different activity, and folding them in would overstate by-the-room risk in every tourist market.

Resident complaints

And how often residents report it

The same count against the city’s 311 request feed. This is the other half of the picture and it is not the same measurement: a code-enforcement case is the city acting; a 311 request is a neighbour reporting. A market can carry plenty of one and almost none of the other, and that gap is the finding — not something to average away.

Complaints per case is the number to read, and only where we could compute it honestly. Lots of residents reporting room-rental problems and few cases opened is the closest thing to a real answer on the question everyone actually asks. We compute it only when both feeds exist for the same city and their periods overlap by at least five years — a 311 feed starting in 2020 divided by a case register starting in 1994 is not a ratio, it is an artefact. Where the overlap is too short, members get the two raw counts and no ratio rather than a made-up one.
CitySignal
Aurora, COOften reported
Gainesville, FLOften reported
Seattle, WAOften reported
Houston, TXSometimes reported
New York, NYSometimes reported
Amado, AZRarely reported
Atlanta, GARarely reported
Baltimore, MDRarely reported
Berkeley, CARarely reported
Charlotte, NCRarely reported
Chesapeake, VARarely reported
Chicago, ILRarely reported
Cincinnati, OHRarely reported
Columbia, SCRarely reported
Dallas, TXRarely reported
Denver, CORarely reported
Hartford, CTRarely reported
Las Vegas, NVRarely reported
Louisville, KYRarely reported
Memphis, TNRarely reported
Miami, FLRarely reported
Montgomery, ALRarely reported
Nashville, TNRarely reported
Raleigh, NCRarely reported
Saint Paul, MNRarely reported
Tampa, FLRarely reported
Alliance, OHNot enough data
Ash Fork, AZNot enough data
Augusta, GANot enough data
Austin, TXNot enough data
Concord, CANot enough data
Dayton, OHNot enough data
Grand Rapids, MINot enough data
Lansing, MINot enough data
Melbourne, FLNot enough data
South Bend, INNot enough data
Tyler, TXNot enough data
Wichita, KSNot enough data
The counts behind these words are part of a membership. The same count against each city’s 311 request feed, plus the complaints-per-case ratio wherever the two feeds overlap far enough to compute it. The signal above is free and always will be; the case counts, the matched wording, the periods covered and the named source register for each city are what members pay for. See what a membership includes.
Coverage

The biggest gaps, in order

These are the markets with the most priced ZIPs and no code research yet. This is the work queue, published rather than hidden — a user should be able to see exactly where the dataset stops.

MarketZIPs priced Median shared /wkStatus
El Paso, TX154$265Not researched yet
Sacramento, CA103$316Not researched yet
Kansas City, MO80$155Not researched yet
Oklahoma City, OK80$225Not researched yet
Austin, TX79$209Not researched yet
San Diego, CA79$494Not researched yet
Charlotte, NC77$268Not researched yet
Pittsburgh, PA76$212Not researched yet
Birmingham, AL73$237Not researched yet
Cincinnati, OH73$182Not researched yet
San Francisco, CA70$626Not researched yet
Memphis, TN67$274Not researched yet
Minneapolis, MN67$240Not researched yet
Louisville, KY65$203Not researched yet