Skip to main content

How to Use Property Records to Find Old Roofs (A Roofer's Field Playbook)

Emily Crawford, Home Maintenance Editor··32 min readRoofing Lead Generation
On this page

Every roofing company has the same problem in a different costume: too many doors, not enough hours, and a crew that burns daylight knocking houses with roofs three years old. The roofs that actually need you are out there right now, but they are scattered one in twelve, one in twenty, hidden behind identical-looking subdivisions. Property records are the cheapest tool you own for narrowing the field before anyone leaves the office, and most contractors use maybe ten percent of what the data can do.

The pitch you have heard is that you can "look up roof age" in public records and print a list of houses that need a roof. That is half-true in a way that gets people in trouble. Almost no county in the United States stores a field called "roof installation date." What counties store is a stack of indirect signals — the year a house was built, the date of the last building permit, the last sale date, the assessor's depreciation schedule, sometimes a re-roof permit if your jurisdiction pulls them. Read those signals together and you can build a door list that is dramatically richer in old roofs than a random street. Read them wrong and you will swear you knock a 1998 build, ladder it, and find a roof installed last spring.

What follows is the actual workflow — where the data lives, how to pull it without paying a data broker, how to combine the fields so the math points at real opportunity, and the traps that make this go sideways. It is written for the person who has to make the route, not for the person who sells the dashboard.

What "property records" actually means (and what they don't)

When people say property records they are usually blurring four different public datasets that live in four different offices. They overlap, they disagree with each other, and each one tells you something the others can't. You need to know which is which.

The county assessor / appraisal district file

This is the workhorse. Every parcel in the country sits in a tax roll maintained by a county assessor (called an appraisal district in Texas, a property appraiser in Florida, a tax assessor across most of the Northeast). The assessor's job is to value property for taxation, and to do that they keep a characteristics record on each structure. The fields that matter to you:

  • Year built (sometimes "effective year built" — keep reading, this distinction is the whole ballgame)
  • Living area / square footage (proxy for roof size and job value)
  • Number of stories (steep-and-high changes your bid and your crew)
  • Roof material and roof type/shape, where recorded — many assessors carry a coded field like "COMP SHINGLE," "WOOD SHAKE," "METAL," "TILE"
  • Last sale date and sale price (from recorded deeds, mirrored into the assessor file)
  • Owner name and mailing address (tells you owner-occupied vs. absentee)
  • Assessed/market value and the land-vs-improvement split

Most assessors put a public search portal online. Many also publish the entire roll as a downloadable file or through a GIS open-data portal. That bulk file is the real prize, and we will come back to how to get it.

The building department / permit records

Separate office, separate database, and the one contractors underuse most. The permit office holds the record of work that required a permit — new construction, additions, and in a growing number of jurisdictions, re-roofs and tear-offs. A permit record typically shows the permit type, issue date, a short scope description, valuation, the contractor of record, and the inspection/final dates.

This is the single best signal you can get, because a re-roof permit dated 2007 tells you the clock essentially reset in 2007 regardless of when the house was built. The catch: permit coverage is wildly inconsistent. Some cities require a permit for any roof covering replacement; some only for structural decking work; some unincorporated county areas barely enforce roofing permits at all. Know your local rule before you trust a "no permit found" as "original roof."

The recorder / register of deeds

This office records the legal transfer of property — deeds, mortgages, liens. For roof hunting you mostly care about one derived fact: the last arm's-length sale date. It matters because of a behavioral pattern that is remarkably reliable: a large share of roofs get replaced within the first 12 to 24 months of a new owner taking the house, either because the buyer negotiated it, the inspection flagged it, or the new owner finally did the thing the old owner deferred. A house that last sold 14 years ago and has never permitted a re-roof is a very different prospect than one that sold 10 months ago.

The GIS / aerial layer

Not a "record" in the courthouse sense, but most counties run a GIS portal with parcel boundaries draped over aerial imagery. You will use it constantly to eyeball roof condition, confirm the structure footprint, count facets, and spot tarps, patches, or staining that the tabular data will never tell you. The newest imagery date on the county viewer also gives you a free, rough "as of when was this roof intact" reference.

What to actually look for on the aerial that tabular data hides: discoloration and streaking that suggests granule loss or algae, a roof that is a visibly different shade than its identical neighbors (often a tell that it was replaced or, conversely, that everyone else was), blue tarps or patched sections, missing or curling shingle texture at high zoom, and the facet geometry that drives your bid. Count valleys, hips, dormers, and penetrations — a cut-up roof with lots of detailing prices very differently than a simple gable, and you want that read before a rep ever quotes. A historical imagery slider, where the county offers one, is even better: flipping between a 2016 and a 2023 capture can show you the roof changed shade or texture in between, which brackets a replacement to a window without ever pulling a permit.

Why "year built" lies to you (the effective-age trap)

Here is the mistake that costs people whole days of canvassing. They pull every house built before 2005, assume those roofs are 20-plus years old, and knock the list. Half the doors are dead because those roofs were already replaced — and the assessor often knows, but stored it somewhere you didn't look.

There are two different "year" fields hiding in assessor data, and they answer two different questions.

Actual year built is when the structure was originally constructed. It never changes. A 1992 house shows 1992 forever, even after three re-roofs.

Effective year built (also "effective age" or "EYB") is the assessor's estimate of the structure's condition expressed as an age. When a home gets meaningfully renovated or re-roofed and the assessor catches it — often triggered by a permit — they bump the effective year forward. A 1992 house that was gutted and re-roofed in 2014 might carry an effective year built of 2009 or 2014. That gap between actual and effective is a flashing sign that work happened.

Not every assessor publishes effective year, and the ones that do don't all update it reliably. But where it exists, the actual-vs-effective spread is one of the most useful signals in the file:

Actual year built Effective year built What it probably means
1998 1998 Possibly original roof — strong candidate
1998 2013 Major work caught around 2013 — likely re-roofed, lower priority
2003 2003 Mid-life roof — track for the future
1985 1991 Old bump, original by now — candidate if no later permit

The rule of thumb: trust actual year built only as far as the permit and effective-age fields let you. Year built tells you the oldest the roof could be. It never tells you how old the roof actually is. The other fields close that gap.

The five signals, ranked by how much they tell you

No single field finds old roofs. You are stacking probabilities. Here is how I weight the public fields when I build a list, strongest signal first.

  1. Re-roof permit date (when it exists). This is the closest thing to ground truth public data offers. A re-roof permit issued 16 years ago, with no permit since, on a material that lasts ~20–25 years, is gold. Equally valuable in reverse: a re-roof permit from two years ago tells you to skip the house entirely.
  2. Effective year built vs. actual year built. A large gap usually means work was caught; a zero gap on an old house means nobody has logged an improvement. Read alongside permits.
  3. Last sale date. Recent sale (under ~2 years) flags possible just-replaced or about-to-replace. A long-held home (10+ years) with no re-roof permit is a deferred-maintenance candidate.
  4. Actual year built + roof material. This sets the theoretical clock. A 2002 build with a coded "COMP SHINGLE" roof and a typical asphalt service life is approaching the back half of its life. A tile or metal roof on the same house is a different conversation.
  5. Aerial imagery condition. The tie-breaker. Once the tabular data hands you candidates, the aerial layer confirms or kills them before you spend a single drive-by.

The power is in the combination. One signal is a guess. Three signals pointing the same direction is a route.

How long roofs actually last (so your age math means something)

A roof-age number is useless until you anchor it to how long the material lasts. "This roof is 19 years old" tells you nothing until you know what kind of roof it is and what it has been through. Your filters and your composite score both depend on a working model of service life, so build one before you build a list.

Asphalt composition shingle is the bread and butter of most residential markets, and its service life spreads wider than people assume. A builder-grade three-tab installed on a tract home in 1999 is a different animal than a heavy architectural laminate installed on a custom home in 2015. Three-tab shingles tend to age out faster; dimensional/architectural shingles run longer. Climate compresses or stretches the range hard: brutal sun, big day-night temperature swings, and repeated hail or wind all shorten the clock, while a mild, shaded, low-storm environment lengthens it. The same shingle that is tired at 16 years in a high-UV, hail-prone plains market may have real life left at 22 in a temperate coastal one.

That is why a single national "asphalt lasts X years" number is a trap. What you want is a local service-life band you have calibrated against roofs you have actually torn off in your territory. Most operators land on something like this as a starting frame, then adjust:

Roof material Typical service-life band What shortens it Records signal that flags it
Three-tab asphalt shorter end of asphalt range UV, hail, poor ventilation year built + "COMP/3-TAB" material code
Architectural/laminate asphalt longer end of asphalt range severe hail, wind uplift year built + "ARCH/DIMENSIONAL" code
Wood shake/shingle long but maintenance-heavy rot, fire codes forcing replacement "WOOD SHAKE" code on older builds
Tile (concrete/clay) very long; underlayment fails first broken tiles, underlayment age "TILE" code — underlayment, not tile, is the job
Metal (standing seam/panel) very long fastener/coating failure, hail denting "METAL" code — different sales motion
Low-slope membrane varies widely by system ponding, seam failure, UV flat/low-slope flag on the structure

Two practical takeaways. First, the material field in the assessor file is what lets you apply the right service-life band, which is why you should not throw it away even though it is imperfect. Second, tile and metal change the conversation entirely — on a tile roof the tiles may outlast the house while the underlayment fails at a fraction of that, so the records play is to find old underlayment, not old tile. Knowing the failure mode of each material is what separates a contractor reading records from a list broker shuffling rows.

State and county data realities you will hit

The biggest surprise for contractors who expand across county or state lines is how uneven this data is. There is no national property database — there are thousands of county systems, each with its own software, its own field names, its own update cadence, and its own appetite for open data. A workflow that hums in one county can stall in the next one over. A few patterns worth knowing before you cross a line.

Texas runs on county appraisal districts (CADs), and many CADs publish strong, downloadable data, frequently including roof material and a usable improvement breakdown. Texas is also a heavy storm-restoration state, which means both rich opportunity and tighter scrutiny of contractor conduct — the state insurance department publishes consumer guidance specifically about post-storm contractors, and that tells you how the regulators think.

Florida uses county property appraisers, and many of them publish excellent characteristic data including roof structure and material, partly because windstorm and roof condition drive so much of the state's insurance picture. Florida's insurance environment makes roof age a live, sensitive topic with carriers, so the data tends to be detailed and the homeowners tend to be roof-aware.

Northeastern states lean on town and municipal assessors rather than strong county offices, which means data can be fragmented across hundreds of small jurisdictions, each with different access. You may be making many small records requests rather than one clean county download.

Unincorporated and rural areas anywhere are the soft spot for permit data. Building-permit enforcement is often lighter outside city limits, so the "no permit means original roof" signal degrades exactly where you might most want it. Lean harder on year built, effective age, and aerial condition there.

The operational lesson: build your process to be county-aware, not one-size-fits-all. Keep a short internal note for each county you work — where the assessor data lives, whether effective year built is published, whether permits are reliable, what the roof-material field looks like, and how stale the roll tends to be. That cheat sheet compounds in value every time you re-run a territory.

Pulling the data without paying a broker

You can buy lists from data vendors, and sometimes that is the right call for scale. But you should know how to get the raw data yourself, both to control quality and to verify what a vendor is actually selling you.

Step 1 — Find the assessor's public access

Search [your county] assessor property search or [your county] appraisal district. You are looking for one of three things, in order of preference:

  • A bulk download / open-data portal (best). Many counties publish the parcel roll as CSV/Excel, and the GIS department often republishes parcels as a downloadable layer. Counties on ArcGIS Hub or Socrata frequently expose the full attribute table.
  • A public records request path. If there is no download button, the assessor's office will often sell you the roll on request for a nominal fee under your state public-records law. Ask specifically for the "residential characteristics extract" with year built, effective year, roof fields, last sale, and square footage.
  • The parcel-by-parcel web search (slowest). Fine for spot-checking and small farms; impossible at territory scale.

Step 2 — Pull the permit data

Go to the city or county building department site and look for a permit search or an open-data permit dataset. Big metros (and a surprising number of mid-size cities) publish issued permits as downloadable data with type, date, address, and valuation. Where there is no portal, the building department takes records requests the same as the assessor. Filter or request permit types containing "roof," "re-roof," "reroof," "tear off," "roof covering," or the local code's roofing classification.

A practical warning: permit scope descriptions are written by clerks and contractors in a hurry. You will see "REROOF," "RE-ROOF," "ROOF REPLACEMENT," "ROOFING," and a dozen typos for the same thing. Build your filter to be greedy, then clean.

Step 3 — Get the deed / sale dates

Usually you don't need a separate trip — the assessor file already mirrors the last sale date and price from recorded deeds. If you want transfer history deeper than the last sale, the recorder/register of deeds has its own search. For roof hunting, last-sale-date in the assessor extract is enough 90 percent of the time.

Step 4 — Join everything on the parcel ID

Every one of these datasets shares a common key: the parcel number (APN / PIN / parcel ID). Addresses are messy and will not join cleanly ("123 N Main St" vs "123 North Main Street"). The parcel ID is the spine. Pull assessor, permits, and any deed data, then join them on parcel ID in a spreadsheet or a lightweight database. Now each row is one house with year built, effective year, last sale, roof material, square footage, and any permit history side by side.

That joined table is your prospecting engine. Everything from here is filtering and ranking.

A worked example: building a 500-door list from a raw county roll

Let's make this concrete with realistic (illustrative) numbers. Say you pull a residential extract for a township and it comes back with 18,400 single-family parcels. Here is how the funnel narrows.

Start: 18,400 single-family parcels.

Filter 1 — material and structure. Keep asphalt/composition shingle roofs (your wheelhouse), single-family, 1 to 2 stories. Drop tile, metal, and flat commercial. Say this keeps 71 percent → 13,060 parcels.

Filter 2 — age window. Keep actual year built between, say, 1995 and 2010, so the roof clock could plausibly be in the 15–30 year zone for original asphalt. → 4,900 parcels.

Filter 3 — kill the already-done. Remove any parcel with a re-roof permit in the last 12 years. Also down-rank any parcel where effective year built is within 10 years even if no permit shows. Say permits + effective age knock out 22 percent → 3,820 parcels.

Filter 4 — overlay condition. Now you have a tabular shortlist small enough to eyeball. Sort by your composite score (below), take the top 1,200, and run them past aerial imagery to drop the obviously-new and obviously-already-replaced. → roughly 900 verified candidates.

Filter 5 — route geometry. Cluster the 900 by street so a crew isn't crisscrossing town. Cut to the densest 500 for the first canvassing wave. → 500-door list, clustered, old-roof-rich.

The point is not the exact percentages — yours will differ by county. The point is the discipline: every filter is a probability gate, and by the end you have turned an 18,000-parcel haystack into 500 doors where the hit rate is several times what a cold street would give you.

A simple composite score you can build in a spreadsheet

You don't need software to rank a list. A weighted score in a spreadsheet beats gut feel. One version that works:

  • Roof-age points: estimate roof age as today − (re-roof permit year if present, else effective year built if present, else actual year built). Award points on a curve — 0 points under 8 years, climbing to max around the material's typical end-of-life, then tapering (a 40-year-old asphalt roof is either not asphalt anymore or already failed and patched).
  • Tenure points: add points for last-sale-date older than ~8 years (long-held, deferred maintenance), and a separate flag for sold-in-last-18-months (different play — see below).
  • No-permit bonus: add points when no re-roof permit exists in a jurisdiction that does require them, since that strengthens the "still original" read.
  • Size factor: lightly weight by square footage if you want to bias toward larger jobs, but don't let it dominate.

Sort descending. The top of that list is where your best reps should be on Monday morning.

Worked scoring on three real-looking houses

Abstract weights are hard to feel, so run three houses through the same score and watch them separate. Assume today is the current year and your local asphalt service-life band peaks around 22 years.

House A — 142 Birch Ln. Actual year built 2001, effective year built 2001, last sale 2009, roof material COMP SHINGLE, no re-roof permit ever, city with reliable permitting. Best-available date is the actual year built (no permit, effective equals actual), so estimated roof age sits near the top of the asphalt band. Tenure is long (sold 16 years ago). No permit in a permit-reliable city adds the original-roof bonus. This house scores high on three independent signals. It goes near the top of the route.

House B — 88 Cedar Ct. Actual year built 1999, but effective year built 2014 and a re-roof permit dated 2014. Best-available date is the permit year, so estimated roof age is only about a decade — under the threshold where you award meaningful age points. Two signals (permit and effective year) agree that this roof was already replaced. It scores low and drops off the canvassing list entirely, which is exactly what you want: you just avoided laddering a roof with years of life left.

House C — 12 Aspen Way. Actual year built 2003, effective year built 2003, last sale 11 months ago, COMP SHINGLE, no re-roof permit. Estimated roof age is mid-to-late in the band — a real candidate — and the recent sale fires the "sold and stalled" flag rather than the long-tenure one. This house scores well but routes into a different pitch segment: a new owner who probably had the roof flagged at inspection, not a decade-long deferrer. Same score band, different conversation.

Three houses, one scoring model, and the data did the triage: one prime deferred-maintenance door, one dead door you skip, one recent-buyer door that needs its own script. That is the entire value of scoring over eyeballing.

From spreadsheet to the field: making the list actually get worked

A scored list that lives in a spreadsheet nobody opens is worth nothing. The handoff from data to doors is where most records programs quietly die, so treat it as part of the workflow, not an afterthought.

Push the ranked list into wherever your reps already live — your CRM or canvassing app — with the score, the segment tag, and the two or three data points a rep can actually use at the door (estimated age range, last sale year, owner-occupied or absentee). Reps do not need the raw roll; they need a reason this door is on their map and a hook to open with. Keep it to a glance.

Close the loop the other direction, too. Every door a rep works should write back a disposition — booked, not home, not interested, already replaced, roof actually newer than expected. That feedback is gold for two reasons. It stops your team re-knocking dead doors, and it tells you which data signals are lying in your market. If "already replaced" keeps coming back on houses your model scored as old-roof candidates, your permit or effective-age coverage has a hole, and you have just found it for free. A records program without a disposition loop is flying blind; one with it gets sharper every cycle.

Where storm data changes the whole calculation

Everything above finds roofs aging out on a calendar. It says nothing about the roof that was fine last month and got chewed up by a hailstorm two weeks ago. Those are two different kinds of opportunity, and the second one is time-sensitive in a way the first is not.

Property records are blind to weather. The assessor file does not know a supercell dropped 1.5-inch hail across the northeast quadrant of your territory. To catch the storm-driven opportunity you have to layer weather history onto the same parcels — which storms hit which addresses, how hard, and how that intersects with roof age and material. A 22-year-old asphalt roof under a severe hail core is a far stronger candidate than the same roof in a part of town the storm missed by two miles.

This is exactly the gap where per-roof data tooling earns its keep, and where RoofPredict fits the workflow described here. It is built for the contractor's problem of which roofs are due, house by house. Rather than a single "year built" field, it estimates a roof-age range per address from aerial imagery, and it models storm physics per roof — so the hail and wind exposure is tied to the specific structure, not a five-mile-wide warning polygon. The result is a ranked view of doors and routes that combines aging-out roofs with storm-worn roofs, which is the same two-signal stack the manual workflow is trying to approximate by hand.

Be clear-eyed about the limits, because honest expectations keep you out of trouble:

  • A roof-age estimate is a range, not an install date. Imagery and modeling narrow the window; they do not stamp a roof with a birthday. Treat it like the permit/effective-age signals above — strong, not absolute.
  • A storm model is odds, not proof. Modeled hail or wind at an address tells you where to look; it is not evidence of damage and is not a substitute for a roofer documenting actual conditions on the roof. The ladder still settles every question.
  • None of this replaces your judgment on the roof or the insurer's role on a claim. The homeowner owns the claim; the insurer decides coverage; your job is documenting conditions and writing an honest estimate.

Used that way, the tooling does the same thing the county-records workflow does — narrows the field so your crew spends its hours on the roofs most likely worth the climb — and adds the weather dimension that public property data simply can't see. If you already love working the assessor roll, think of it as the storm layer the courthouse never had.

The behavioral signals pros actually read

Beyond raw fields, experienced canvassers read patterns in the data the way a card counter reads a table. A few that consistently pay:

The "sold and stalled" home

Last sale 12–20 months ago, no re-roof permit, original-age roof. New owners are the most motivated re-roof buyers in the dataset — they just spent on the house, an inspection likely flagged the roof, and they haven't pulled the trigger. This is a softer, faster conversation than a deferred-maintenance owner who has ignored the roof for a decade.

The subdivision cohort

Tract homes built the same year by the same builder got the same roof, the same underlayment, and the same flashing details on the same week. When one roof in a 1999 subdivision fails, the whole cohort is in the failure window. Find the development's build-year cluster in the assessor data and you have a natural farm — and a powerful referral story, because the neighbors all have the identical roof and the identical age.

The absentee owner

Owner mailing address differs from the property address (a rental or an inherited home). These split two ways: some are deferred-maintenance goldmines because the owner doesn't see the roof daily; others are hard to reach and slow to decide. Flag them, route them separately, and bring a landlord-focused pitch (cost certainty, tenant retention, avoiding emergency repair calls).

The permit gap in a permit-heavy area

In a city that requires roof permits and enforces them, a 24-year-old asphalt roof with zero roofing permits ever is a near-certain original roof. The absence of a record, in a place where records are reliable, is itself a strong signal. (Run this play only where you trust permit coverage — in the next section is exactly why.)

The value mismatch

A home whose improvement value lags comparable neighbors can indicate deferred upkeep across the board — and the roof is usually the most-deferred big item. Soft signal, but it stacks.

The recent-permit neighbor effect

This one is sideways and underused. When you find a cluster of recent re-roof permits in a subdivision, the houses without a recent permit in that same cohort jump in value, not down. The whole tract is the same age; if a third of the street has already replaced, the holdouts are overdue and their neighbors just proved the roof fails. Reverse the obvious instinct: a flurry of permits nearby is a buy signal for the un-permitted homes around them, and it hands you a referral story you can say out loud — "we did the Hendersons two doors down, same builder, same year."

How to read a raw assessor record without getting lost

The first time you open a county's raw characteristics extract it looks like alphabet soup — fifty cryptic columns, codes instead of words, abbreviations no key explains. Knowing the handful of fields that matter, and what their codes usually mean, turns that soup into a working tool fast.

The columns you care about, and the gotchas that bite people:

  • YRBLT / YEAR_BUILT / ACTYRBLT — actual year built. The ceiling on roof age, never the age itself.
  • EFFYR / EYB / EFF_YR_BLT — effective year built. Not every county includes it; when present it is one of your top signals. If actual and effective are always identical for every row, the county is not maintaining effective age and you should ignore the column rather than trust it.
  • EXTWALL / ROOF_COVER / ROOF_MATL / RFTYPE — roof material and shape codes. Expect terse codes (CS or 3 for comp shingle, WS for wood shake, MT or ME for metal, TL or CT for tile). Some counties publish a code dictionary; if not, reverse-engineer it by spot-checking a dozen parcels against the aerial.
  • SALEDT / LAST_SALE_DATE / DEED_DT — last recorded sale date. Watch for non-market transfers (quitclaims, family transfers, foreclosure deeds) that show a recent "sale" date but no real ownership change — those can falsely fire your recent-sale flag.
  • MAILADDR vs SITEADDR — owner mailing address versus the property address. When they differ, the parcel is likely absentee-owned.
  • LIVAREA / GLA / HEATED_SQFT — finished living area, your size proxy. Confirm it is finished area, not total under-roof area including garage, before you size jobs off it.
  • PARCELID / PIN / APN — the join key for everything. Note its exact format, because permit and deed files sometimes store it with or without dashes and leading zeros, and a format mismatch will break your join silently.

Two habits save hours. First, before trusting any coded field across the whole file, pull ten random parcels and verify each code against the aerial and the public web record — five minutes that catches a county's quirks before they poison 18,000 rows. Second, never assume a blank means "none." A blank roof-material or effective-year field usually means "not recorded," not "no roof" or "same as built" — treat blanks as unknowns and let the other signals carry those rows.

What pros get wrong with property records

The difference between a sharp records operation and a wasteful one is mostly avoiding a handful of recurring errors. Here are the ones that cost the most.

Trusting year built as roof age. Covered above, and it is the number one mistake. Year built is the ceiling on roof age, never the actual age. Always reach for permit and effective-year data before you believe a roof is old.

Ignoring permit coverage gaps. A "no re-roof permit found" means "original roof" only in places that actually require and enforce roofing permits. In an unincorporated county where roofers routinely skip permits, the absence of a permit means nothing at all. Calibrate your trust in permit data to local reality before you let it drive decisions.

Treating the data as current. Assessor rolls update on a cycle — often annually, sometimes lagging a year or more behind reality. The roll you download in June may reflect characteristics as of last January. Last week's storm, last month's re-roof, and the tarp that went up Tuesday are all invisible. Records are a starting filter, not a live feed.

Joining on address instead of parcel ID. Address strings don't match across datasets and you will silently drop or duplicate thousands of rows without noticing. Always join on the parcel number.

Skipping the aerial check. The tabular data will happily hand you a house that was re-roofed last year if the permit didn't capture it. Sixty seconds on the aerial layer kills bad candidates before they waste a drive-by. Never skip it on your top-priority doors.

Over-trusting the roof-material field. Many assessors carry roof material, but it is frequently stale, coded loosely, or recorded once at construction and never revisited. Use it to filter broadly, verify visually before you bid.

Forgetting the legal line on outreach. Property records are public, but how you contact people is regulated. Mailers, door-knocking, and especially calls and texts touch Do-Not-Call rules, state telemarketing law, and post-disaster solicitation restrictions some states impose after declared storms. Knowing where a roof is does not mean every channel to reach the owner is fair game — check the rules for your outreach method.

Confusing a list with a strategy. A 5,000-row list is not a plan. Ranked, clustered, and assigned with a clear pitch per segment is a plan. The records get you the list; your process turns it into revenue.

Compliance and ethics: the part that keeps your license

Using public data to find work is completely legitimate — it is what the data is for. But roofing canvassing runs into a thicket of rules, and storm work especially draws regulatory attention because of bad actors. A few guardrails that keep you clean.

Keep your documentation honest. When you do get on a roof, your role is to document the actual condition and write a fair estimate — not to promise coverage, not to guarantee a claim outcome, not to advertise a "free roof." The homeowner owns their claim and the insurer decides what is covered; many states have unfair-claims and public-adjusting rules that draw a hard line between documenting damage and negotiating or adjusting a claim on the owner's behalf. Stay on the documentation side of that line.

Don't oversell prediction. A roof-age range from imagery or a storm model is a prospecting signal — odds about where to look. It is not proof of damage, not a substitute for inspection, and should never be presented to a homeowner or carrier as evidence that a roof is covered or destined to fail. Lead with what you can stand behind: what you saw on the roof.

Respect contact rules. Federal Do-Not-Call and state telemarketing statutes govern calls and texts; several storm-prone states add cooling-off periods, contract-cancellation rights, and restrictions on soliciting in declared-disaster areas. Public records tell you the address — your outreach method has to follow its own rulebook.

Mind the data's accuracy in writing. Don't put a roof age you can't support into a contract or an estimate as fact. "Estimated 18–24 years based on available records and visual inspection" is defensible; "your roof is 22 years old" stated as certainty from a year-built field is not.

None of this is meant to scare you off the workflow. It is the difference between a records-driven sales operation that scales for years and one that draws a complaint. The contractors who win with data are the ones who treat public records as a way to be in the right place, then let honest, on-the-roof documentation do the rest.

Putting it on the calendar: a 30-day rollout

If you have never run a records-driven canvassing motion, here is a month to stand one up without blowing up your week.

Week 1 — Acquire. Identify your assessor's bulk-download or records-request path and pull the residential extract for one or two target ZIP codes. Pull the matching permit dataset. Confirm both share a parcel ID. Don't try to boil the whole county — start with a few thousand parcels you can actually work.

Week 2 — Build the model. Join the data on parcel ID. Add the composite score columns. Sort and eyeball the top 200 against the aerial layer to sanity-check that your filters are surfacing real old roofs, not noise. Tune the weights based on what you see. This is where you learn your county's quirks — which fields are reliable, where permits are thin.

Week 3 — Route and pitch. Cluster the top candidates by street. Write two or three short pitch variations per segment (long-held deferred owner, recently-sold owner, absentee owner). Assign clusters to reps with the segment tag so they know who they are talking to before they knock.

Week 4 — Knock and measure. Work the list. Track hit rate by segment and by score band so you learn which signals actually predict a booked inspection in your market. That feedback is the whole point — after one cycle, your composite score stops being a guess and starts being calibrated to your territory.

Then repeat with the next ZIP, and layer storm data on top whenever weather gives you a fresh event to chase. The records workflow becomes your steady baseline; storms become the spikes you ride on top of it.

Field checklist

Keep this taped to the wall of whoever builds your lists.

  • Pull assessor extract (year built, effective year built, roof material, square footage, last sale date, owner mailing address) — bulk or records request, not parcel-by-parcel.
  • Pull permit data; build a greedy roof-permit filter, then clean the scope text.
  • Confirm you can join everything on parcel ID, never address.
  • Verify local permit coverage before trusting "no permit = original roof."
  • Compute roof-age estimate from the best available date: re-roof permit > effective year > actual year.
  • Score and rank; never knock raw year-built order.
  • Run top candidates past the aerial layer before routing.
  • Cluster by street; tag each door with its segment and pitch.
  • Layer storm history to prioritize when weather gives you an event.
  • Keep age claims as ranges; keep on-roof documentation honest; follow contact-method rules.

Property records will never tell you a roof is finished — only a roofer on the roof can do that. What the records do, done right, is make sure that roofer is standing on the houses most likely to be worth the climb. That is the entire game: spend fewer hours on dead doors, more on roofs that are genuinely aging out or storm-worn, and let honest documentation close the rest. The data is sitting in your county's public files right now, mostly free, and most of your competitors are reading ten percent of it. Read the other ninety.

FAQ

Do property records actually show roof age?

Almost never directly. Very few counties store a 'roof installed' date. What you get instead are indirect signals: the year the house was built, any building permit for a re-roof, the assessor's effective year built (a condition-based age estimate), and the last sale date. Combined, those let you estimate roof age as a range. The strongest single signal is a re-roof permit date where your jurisdiction issues them.

What is the difference between 'year built' and 'effective year built'?

Actual year built is when the structure was originally constructed and it never changes. Effective year built is the assessor's estimate of the home's condition expressed as an age, and it moves forward when major work — like a re-roof or gut renovation — gets caught, often via a permit. A big gap between the two (say a 1998 actual year and a 2013 effective year) usually means significant work happened, which often includes a new roof.

Where do I get building permit data for roofing?

From the city or county building department, not the assessor. Many cities publish issued permits as a downloadable open-data set with permit type, date, address, and valuation; where there is no portal, the building department fills public-records requests. Filter for scope text containing roof, re-roof, reroof, tear off, or roof covering, and expect messy, inconsistent descriptions you will need to clean.

Does 'no re-roof permit on file' mean the roof is original?

Only in places that require and enforce roofing permits. In a city with strict permitting, the absence of a roof permit on a 24-year-old home is a strong signal the roof is original. In an unincorporated county where roofers routinely skip permits, a missing permit means nothing. Calibrate how much you trust permit data to your local enforcement reality before letting it drive decisions.

Why does last sale date matter for finding old roofs?

Because of a reliable behavioral pattern. A large share of roof replacements happen within the first 12 to 24 months of new ownership — the buyer negotiated it, the inspection flagged it, or the new owner finally addressed deferred maintenance. So a home sold in the last 18 months may be just-replaced or about to replace, while a home held 10-plus years with no re-roof permit is a classic deferred-maintenance candidate.

Can I download an entire county's property data?

Often yes. Many assessors and GIS departments publish the full parcel roll as a CSV or downloadable GIS layer through an open-data portal. Where there is no download button, your state public-records law usually lets you request the residential characteristics extract for a nominal fee. Ask specifically for year built, effective year built, roof fields, last sale date, and square footage.

How do I combine assessor, permit, and deed data?

Join them on the parcel number (APN, PIN, or parcel ID), never on the street address. Addresses are written inconsistently across datasets and will silently drop or duplicate thousands of rows. The parcel ID is the common key every public dataset shares, so it is the reliable spine for stitching year built, permits, sale dates, and roof characteristics into one row per house.

How does storm data fit with property records?

Property records find roofs aging out on a calendar but are completely blind to weather. To catch storm-driven opportunity you have to layer hail and wind history onto the same parcels so you know which specific addresses took a hit and how that intersects with roof age and material. Per-roof tools like RoofPredict estimate a roof-age range from aerial imagery and model storm physics per address, which adds the weather dimension public records can't provide.

Yes — public records exist to be used, and prospecting from them is legitimate. The regulated part is how you contact owners: calls and texts fall under federal Do-Not-Call and state telemarketing rules, and several storm-prone states add cooling-off periods and restrictions on soliciting in declared-disaster areas. Knowing an address is fine; your outreach method has to follow its own rulebook.

How accurate is a roof-age estimate from records or imagery?

Treat it as a range, not a fixed install date. Records narrow the window through permits, effective age, and sale dates; imagery-based estimates narrow it further from the roof's visible condition. Neither stamps a roof with a birthday, and a storm model gives you odds about exposure, not proof of damage. Use these as prospecting signals to decide where to look, then let an on-the-roof inspection settle the actual condition.

The Roofline by RoofPredict

Stay Ahead of Roofing Market Changes

Join The Roofline by RoofPredict for weekly roofing intelligence: material price signals, storm demand, insurance and regulatory updates, sales tactics, and local contractor opportunities.

By signing up, you agree to receive The Roofline by RoofPredict. Unsubscribe anytime.

Sources

  1. NRCA Roofing Manual and Technical Resourcesnrca.net
  2. IBHS — Hail and Roof Performance Researchibhs.org
  3. NOAA National Centers for Environmental Information — Storm Events Databasencdc.noaa.gov
  4. NOAA Storm Prediction Centerspc.noaa.gov
  5. National Weather Serviceweather.gov
  6. OSHA — Fall Protection in Constructionosha.gov
  7. U.S. Census Bureau — American Housing Surveycensus.gov
  8. International Code Council — International Residential Code (IRC)iccsafe.org
  9. U.S. Bureau of Labor Statistics — Roofers Occupational Outlookbls.gov
  10. Federal Trade Commission — National Do Not Call Registryftc.gov
  11. Texas Department of Insurance — After the Storm: Hiring a Contractortdi.texas.gov
  12. FEMA — Declared Disastersfema.gov
  13. USGS — The National Map and Aerial Imageryusgs.gov
  14. RoofPredictroofpredict.com

Related Articles