So you've decided code violations are worth chasing. Good call. Now you need the actual list, and this is where most people stall: there's no national code violation database to download. You build the list yourself, one jurisdiction at a time, from data that cities publish in a dozen different formats or don't publish at all.

That's the bad news and the good news. It's work, which is exactly why the list stays unworked. Most investors quit at the first phone tree.

A code violation list is a compiled set of properties a city or county has cited for building, housing, or maintenance code problems, filtered down to the ones that signal a motivated seller. There's no clean version to buy. You get one by pulling from an open-data portal, filing a public records request, or using a tool that already did both, then cutting the raw dump down to the properties worth mailing.

If you're still deciding whether these leads earn the effort, I made that case in code violation leads, and the full guide to building code violations covers the whole system. This post is narrower. It's the build manual: how to physically assemble the list for your market this weekend.

Step one: find out how your city hands over data

Before you touch a spreadsheet, figure out which of three buckets your city falls into. This decides your entire next hour.

  1. Open data portal. The city publishes code enforcement cases on a site you can query and export in bulk. Seattle does this. So do a handful of others. This is the jackpot, and cities rarely advertise it.
  2. Search-only portal. There's a public lookup, but it answers one address at a time. No export button. You can read it, you can't download it.
  3. Nothing public. No portal, no search. The records exist, but you only get them by asking under your state's public records law.

Most cities are in bucket two or three, which is why the data stays scarce. I keep a running directory of which cities publish code enforcement data openly and which make you file for it. Look yours up before you start so you're not hunting for an export button that was never built.

Route 1: pull it from an open-data portal

If your city is in bucket one, this is a 20-minute job the first time and a five-minute job after that.

Find the code enforcement or code compliance dataset on the city's open data site. Seattle's lives on data.seattle.gov; a lot of other cities run their cases through an ArcGIS map service instead. Once you find it, the moves are the same:

  • Filter before you export. Set a date range (the last two or three years is usually plenty) and, if the feed carries a type field, the case types you care about. No reason to download a decade of resolved graffiti tickets.
  • Watch the row cap. Most portals cap a single export at a few thousand rows and quietly cut the rest off. If your city has real volume, pull it in chunks by date or by area, then stack the files.
  • Expect an untyped feed. Some cities publish every case with no category at all. About 48,000 of the roughly 84,000 violations across the markets I track carry no type field. That's not a dead end, it just means the sorting work moves to you.

The portal systems cities run on (Socrata, ArcGIS, eTRAKiT, Accela) each behave a little differently, but the pattern holds: find the dataset, filter, export, repeat by chunk. I pull these across the Puget Sound every morning, and the portal roulette is most of the reason a code violation list stays less worked than the pre-foreclosure and absentee lists everyone else buys.

Route 2: file a public records request

If your city is in bucket two or three, you're not stuck. You're one email away.

Code violations are public records. Under your state's public records law (the PRA in Washington, some flavor of it everywhere else), the city has to release them. The trick is what you ask for. Don't ask for "your list," because the clerk will tell you no list exists and they won't be lying. Ask for the records.

Here's the shape of a request that gets a usable file back:

Under [the Washington Public Records Act / your state's public records law], I request an electronic copy of all code enforcement case records opened between [date] and [date], including for each case: the property address, parcel number, case type, case status, and the open and close dates. A spreadsheet or CSV export is preferred.

Keep it narrow (one jurisdiction, a date range, code enforcement cases) and it's usually cheap and back in your inbox inside a couple of weeks. Naming the exact fields matters. It's the difference between a clean CSV and a stack of scanned PDFs. If you want the deeper version of why this works, I wrote up whether code violations are public record and what that actually entitles you to.

Route 3: the raw list is not the list

However you got the file, resist the urge to mail all of it. A raw export is not a lead list. It's the raw material for one.

Here's what usually comes back, and what to do with it:

  • No owner names. Most feeds give you an address and nothing about who owns it. You'll need to match each property to its parcel and skip trace from the address alone for owner contact info. Budget for that.
  • Mostly closed cases. The bulk of any export is old, resolved cases. A closed case tells you a property had a problem; an open one tells you it still does. Filter to open first.
  • Trivial mixed with severe. A one-time weeds ticket sits in the same file as a vacant building with an emergency order. Sort by type and pull vacant, emergency, and land-use cases to the top. Drop construction and permit cases, because those owners are improving the property, not fleeing it.
  • Duplicates. The same property shows up once per case, so a chronic address appears five times. Dedupe by parcel number, and while you're at it, count the cases per property, because repetition is the signal.

That last point is the whole game. In the Puget Sound data I work, 83,788 violations sit on 46,778 properties, but most of those properties carry a single minor case that means nothing. The leads are the 16,221 properties (about 35%) with two or more violations, and especially the 1,656 carrying six or more. One citation is an event. Six is an owner who stopped fighting.

So the funnel is 46,778 rows down to a few hundred worth mailing, and doing that cut cleanly is the actual skill here. (If you only need to check a single address rather than build a whole list, looking up code violations on one property is a faster path.)

Or skip the assembly

Everything above is doable by hand, and plenty of investors do it. It's also most of a weekend per market, every time you want fresh data, in cities where the portal changes its export format on a whim.

The other option is to use the compiled version. FlaggedLeads pulls every market it covers, matches each case to its owner, scores the property by distress, and puts it on a map, so the "download, clean, skip trace, filter" pipeline is already done. The free map lets you browse the raw locations; the point of the paid tier is the part you'd otherwise do by hand. If you want the broader version of this, here's where to find a free distressed property list across a few different signals.

Either way, the move is the same one everyone else won't make: get the list your competition can't be bothered to build, then cut it to the properties that actually signal a seller.

Frequently asked questions

How do I get a list of code violations in my city?

Three ways, from most effort to least. Export it from the city's open data portal if one exists, file a public records request for the code enforcement case records if there's no portal, or use a service that compiles and scores the data across markets. Cities often say they "don't keep a list," but public records law still requires them to release the underlying records.

Is there a national code violation database?

No. Code enforcement is run city by city and county by county, and each publishes (or withholds) its own data in its own format. That fragmentation is exactly why the list stays less competitive than national lead sources. You assemble it per jurisdiction rather than buying one nationwide file.

Can I get a code violation list for free?

Often, yes. Cities that run an open data portal let you export cases at no cost, and a public records request is usually cheap or free for an electronic copy. The cost isn't dollars, it's time: finding the data, exporting around row caps, and cleaning a raw file into something you can actually mail.

What do you get in a raw code violation export?

Usually a property address, a case type and status, and open and close dates. What you usually don't get is the owner's name or mailing address, so you have to match each property to its parcel and skip trace separately. Some of those parcels come back with an entity name instead of a person, and the human behind an LLC-owned property is findable for free. Many feeds are also uncategorized and heavy on old closed cases, so filtering is on you.

How do I turn a code violation list into leads?

Filter to open cases, sort by distress-signal type (vacant, emergency, and land-use first, construction last), weight properties with repeat and recent violations, then dedupe by parcel and skip trace the survivors for owner contact info. That cut, from tens of thousands of raw rows to a few hundred sharp leads, is where the value is.