The question comes up on every investor forum in some version of this: I pulled a thousand code violation records off the city portal, it is addresses only, no owner names, now what?

It is the gap between having data and having leads, and it is where most people either give up or hand the whole file to a vendor and pay for every row in it.

You can skip trace with just an address. Vendors match an address against aggregated consumer data and return a person, phone numbers, and emails with no name required. On my own log of 691 address-only lookups, 94.5% returned a person and 93.5% returned at least one phone number. The catch is that an address-only match returns whoever the data associates with that address, so on a rental it often returns the tenant. Pull the owner of record from the county first, free, and use the trace for phone numbers.

Here is the whole workflow, in the order that keeps the bill small. It is the operational end of the owner identification process inside the public records guide.

Amber chevron sequence of the address-only skip tracing workflow: dedupe, normalize, county owner, filter, then trace, with the first four steps marked as the free ones.

Step 1: Dedupe to one row per property

Do this before anything else, because it is free and it is usually the biggest single cut.

Municipal feeds publish one row per case. A house with six open violations shows up six times, and submitting that file as-is means paying six times over to get one phone number.

On a raw Seattle export I worked through, 84,430 violation rows collapsed to 47,108 unique properties. Just over 44% of the file was duplicate parcels. At typical per-record pricing that cut alone is worth more than most people's monthly data budget.

Step 2: Normalize the addresses

This is the unglamorous step that decides whether steps 1 and 5 work at all.

"1423 NE 45th St", "1423 N.E. 45TH STREET", and "1423 Ne 45Th St #B" are one property to you and three properties to a string comparison. Deduping runs on exact matches, so unnormalized addresses survive the dedupe as separate rows, and vendors match worse on non-standard formats.

Standardize before you submit:

  • Street types collapsed to one abbreviation (St, Ave, Blvd)
  • Directionals to one form (NE rather than N.E. or Northeast)
  • Unit designators to one form, and decide whether you are keeping them at all
  • Case and punctuation flattened
  • City, state, and ZIP in their own columns, since every vendor wants them separately

I run this in code because I am matching violation records to parcel records constantly, but a find-and-replace pass in a spreadsheet gets you most of the way.

Step 3: Get the owner and mailing address from the county, free

Before you pay anyone anything, understand what you can already have.

The county assessor publishes the owner of record and the tax-billing mailing address for every parcel, and both are public. That is the name you are missing and an address that demonstrably reaches the owner. Across our seven Puget Sound markets, that mailing address is populated for 292,220 of 296,651 parcels, or 98.5%.

For a handful of properties, search the assessor site parcel by parcel. For a thousand, you want the county's bulk export or GIS download instead of clicking a thousand times, and most counties publish one. That is a topic of its own, and it is worth an afternoon to find yours.

The payoff is immediate. With a name and a mailing address you can mail the entire list today for the price of postage, and you have not spent a cent on data. Skip tracing from here buys you phone numbers, which is a real thing to want, and a different thing than what you just got.

Step 4: Cut the list before you submit it

Skip tracing bills per record. That single fact should drive the order of operations.

Every address you submit that was never going to be a lead is money spent reaching somebody you would not have called anyway. So the filtering pass happens before the trace, always:

  • Drop closed and resolved cases.
  • Drop construction and permit-type violations, where the owner is improving the property rather than neglecting it.
  • Keep vacant, emergency, and land-use cases, and anything with repeat or recent activity.
  • Keep absentee owners, which you can now identify because step 3 gave you the mailing address.

The full triage is in how to filter a code violation list. Running it turns a five-figure raw file into a few hundred properties worth paying for.

Step 5: Run the address-only trace

Now submit. You need street, city, state, and ZIP per row, and no owner name.

Here is what came back across 691 address-only lookups I ran between May 27 and July 8, 2026:

Result Count Share
Returned a person 653 94.5%
At least one phone number 646 93.5%
Two or more phone numbers 516 74.7%
At least one email address 539 78.0%
No match 38 5.5%

Of the records with a phone, the top-ranked number was a mobile 532 times out of 646 (82.4%). Total cost across the set was $65.30, at $0.10 per successful match with misses free.

Source: FlaggedLeads first-party skip tracing log, 691 address-only lookups via Tracerfy across seven Puget Sound markets, May 27 to July 8, 2026.

Two things to read off that table. The hit rate on address-only input is high enough that a missing owner name is not a real obstacle. And you will usually get more than one phone, ranked by the vendor's confidence, which means your call script needs a second and third attempt built into it.

Step 6: Verify the name against the owner of record

This is the step that separates a working list from an embarrassing one, and it is the reason step 3 comes first.

An address-only trace has no idea who holds title. It matches the address to whoever the consumer data associates with it, and for a tenant-occupied rental that is the tenant.

I measured it on my own set. The traced list is roughly 80% absentee-owned by the county mailing address test, and 226 of 603 comparable matches (37.5%) came back with a person whose own address is the property itself. On a list built specifically from absentee owners, a large share of those are occupants rather than the person on the deed.

So run the comparison. Put the county owner of record next to the traced name and flag every row where they disagree. Those rows are still useful, they just need a second look before anyone dials, because pitching a renter on selling the house they are renting is a call that ends fast.

Where the returned name is an entity instead of a person, the fix is free and public: finding the human behind an LLC-owned property takes about fifteen minutes through the Secretary of State.

Step 7: Cache everything, including the misses

Store every result keyed by the normalized address, and store the misses too.

Lists overlap heavily month to month. Without a cache you re-submit the same properties every cycle and pay again for answers you already have. With one, a refresh only bills for addresses you have genuinely never seen. Caching the misses matters just as much, because a property that did not match in May will usually not match in July either, and there is no reason to keep buying that lesson.

My own store is a single table keyed by normalized address with the result, the phones, and the date. Nothing sophisticated. It is the difference between a bill that grows with your list and a bill that grows with your new list.

The workflow in order

  1. Dedupe to one row per property.
  2. Normalize the address format.
  3. Pull owner names and mailing addresses from the county, free.
  4. Filter down to properties you would actually pursue.
  5. Submit the survivors for an address-only trace.
  6. Verify every returned name against the owner of record.
  7. Cache the results, misses included.

Steps 1 through 4 cost nothing and remove most of the bill. Step 6 is the one people skip, and it is the one that protects your first impression.

If you would rather start from a list that already has the owner attached, the free FlaggedLeads map matches code violations to ownership across our live markets, and you can browse by neighborhood in Seattle, Bellevue, Tacoma, Burien, and Pierce County. Paid exports come out deduped, normalized, and owner-enriched, so the only step left is the phone lookup. Building the raw list in the first place is covered in how to pull a code violation list, and the reasoning behind paying for phones only when you need them is in what skip tracing is and when to skip it.

Frequently asked questions

Can you skip trace with just an address?

Yes. Vendors accept an address with no owner name and match it against aggregated consumer data. Across 691 address-only lookups I ran in mid-2026, 94.5% returned a person and 93.5% returned at least one phone number. Submit street, city, state, and ZIP as separate fields, and standardize the address format first, because non-standard formatting lowers match rates.

How do I skip trace a whole CSV of addresses at once?

Dedupe the file to one row per property, normalize the address formatting, then submit it through a vendor's bulk upload or API. Filter the list down before you submit, because pricing is per record. Pull the county owner name and mailing address first so you can mail the list immediately and pay only for phone numbers.

Why does my code violation export have no owner names?

Code enforcement feeds are case records, so they publish the property address, the case type, and the status rather than ownership. Ownership lives with the county assessor, which is a separate public database. Match your addresses to parcel records to get the owner and mailing address at no cost.

Does an address-only skip trace return the owner or the tenant?

Either one. The match is to the address, so for a tenant-occupied rental it frequently returns the occupant. On my own absentee-heavy list, 37.5% of matches came back with a person whose own address is the property itself. Always compare the returned name to the county owner of record before contacting anyone.

How much does it cost to skip trace a list of addresses?

I pay $0.10 per successful match and nothing for misses, which came to $65.30 for 691 addresses. Pricing varies by vendor and volume, and some sell it as a subscription. The bigger cost lever is list size: deduping and filtering before you submit cuts far more off the bill than shopping for a cheaper per-record rate.

Do I need the owner's name before I can find a phone number?

No. An address-only trace returns a person and their phone numbers without one. Getting the name from the county first is still worth doing, because it is free, it gives you a mailing address that reaches the owner, and it is what you check the traced name against.