How we match permits to listings
The rule that links a public short-term rental registry to a listing, the numbers it produces today across 120 usable registries, and the false zeros we caught in our own data this week.
Every "is this legal" figure on a DwellSignal page comes from one operation: a public permit registry, a listing's coordinates, and a distance. This page says exactly what that operation is, what it cannot tell you, and what it produced across the country as of our August dataset. It also reports two defects we found in our own numbers while writing it, and what changed.
The two inputs
The registry. Cities that require a short-term rental permit usually publish the permit roll: an address, a status, an issue date, sometimes a property type or a primary-residence flag. We hold 25 such sources covering 1,720 city names and 113,774 permits. Most of those city names come from county and state files that carry a handful of rows per town. Only 120 cities have a registry we call usable, which means at least 100 permits with coordinates. Those 120 hold 94,558 permits, of which 86,595 carry a location we could place on a map.
The listing. A listing on the platform does not show a street address. It shows a location, rounded to a few hundred feet, that we read from the listing page. That rounding is the whole difficulty. A permit says "1234 Main St". A listing says "somewhere inside this circle".
The rule
A listing is matched to a permit when an active permit's coordinates fall inside a buffer around the listing's location. Each candidate permit inside the buffer gets a match score, which is a function of distance: a permit at the centre of the circle scores near 1.0, one at the edge scores near 0.5. The best-scoring candidate is stored as the primary match. We keep every candidate, not just the winner, so the match can be audited and re-scored later without re-reading the registry.
That is the entire rule. There is no address-string fuzzing, no host-name matching, no guessing from the listing title. Where a registry publishes addresses without coordinates, we geocode them with the Census Bureau's geocoder before matching; 12,986 permits still lack coordinates after that step and cannot match anything.
What it produces
| Figure | Value |
|---|---|
| Listings inside a usable registry's jurisdiction | 79,949 |
| Of those, matched to at least one permit | 60,002 |
| Match rate over that base | 75% |
| Listings matched at a score of 0.9 or better in at least one reading | 14,685 |
| Listings matched between 0.7 and 0.9 | 24,397 |
| Listings whose best match scored below 0.7 | 47,128 |
The last three rows are the honest part. Most matches are not tight. A score below 0.7 means the nearest active permit sits well away from the listing's stated centre, which in a dense block of townhouses can still be the right permit, and in a suburb can be the neighbour's. We count any candidate as a match today and publish the score distribution so that you can see how soft the base is. A stricter cut is on the roadmap, and when it lands the rate will fall and the pages will say why.
What a match is not
A match is a permit sitting where a listing sits. It is not proof that the listing is the permitted unit, and a missing match is not proof of an illegal rental. A permit can be issued to a unit that is not on the platform. A listing can sit next to a permitted address. A registry can lag issuance by weeks. So the pages say "matched to a permit" and "no permit found", never "legal" and "illegal", and the sample size sits beside every share.
The false zeros we caught this week
Writing this page meant ranking every sub-market by its match share, and the bottom of the list did not look like unpermitted cities. It looked like a bug.
Austin showed a 0% match share across 2,549 listings. We hold Austin's registry, 3,260 permits, and none of them carries coordinates. Chicago showed 0% across 657 listings on the strength of a single permit row that carried the word Chicago in a county file. Atlanta had two such rows. Palm Springs had six. In each case the old rule treated the city as covered because a permit with its name existed somewhere in our data, and then divided matched listings, zero, by all listings.
The rule now requires a usable registry, at least 100 geocoded permits, before a city is treated as covered. Below that, the honest value is not 0%, it is "not measured", and the page says so. That change moved fourteen sub-markets from a false zero to a blank, and left 41 sub-markets of at least 200 listings with a share we can stand behind.
The second defect was in the wording. A metro's share is measured only over listings inside jurisdictions where we hold a registry. For Dallas-Fort Worth that is Richardson, one suburb, 347 listings. The page used to say "only 19% of active listings map to a valid registration", as if that described the metro. It now names the base: 19% of the 347 listings in jurisdictions where we hold a registry. The number did not change. The claim did.
Where the match rate is high, and where it is not
Among sub-markets with at least 200 entire-home listings and a usable registry, Nashville matches at 94%, Seattle at 92%, San Diego at 91%, Panama City Beach at 84%, New Orleans at 84%. These are cities with mature registries, published with coordinates, and enforcement that makes the permit worth holding.
At the other end, four places sit below 20% after the coverage rule: St. Petersburg at 11% of 747 listings, Orlando at 17% of 474, Cambridge at 18% of 240, and Richardson at 19% of 347. We publish those with their sample sizes and the registry beside them. A low share on a thin registry is as likely to describe the registry as the market, and the full ranking of all 41 covered sub-markets is on its own page.
How to check one address
A place-level share tells you about the block, not the building. Before you offer on a specific property, look it up in the city's own registry. Every DwellSignal legality section links the registry it read, with the date it was read. If the address is not there and the city requires a permit, the number you are underwriting depends on getting one, and the page's revenue band assumes you can.
What changes next
The buffer-and-score rule stays. Three things are queued: a stricter primary-match threshold with the rate published on both bases, the 12,986 ungeocoded permits re-run through a second geocoder, and county-level registries matched by parcel geometry rather than a point, which we have live for four counties and will extend. Each change gets a dated entry in the methodology changelog, and pages whose number moves will say "updated".