Territory
Intel drop · permit suppression Territory Intelligence · Cook County, IL · Published August 2026 · Official public records

The 82,591 homes you should never mail.

Cook County keeps a roof-permit index, and it is public. Join it to the assessor's residential file and 82,591 parcels come back with a roof permit already on the record. More than half of those permits were pulled in 2022 or later. Every one of those homes in your next drop is postage spent on an owner who already pulled a permit for the work you are selling.

82,591Residential parcels with a roof permit on fileCounty permits + assessor
7.41%Share of the county's 1,114,335 residential parcelsCounty permits + assessor
52,315Permitted in 2022 or later (63.3% of the set)County permits
$49,555Postage burned on a blind county-wide dropDerived · assumed $0.60/piece

01 · The set

Start by throwing away an eighth of the file.

The county's roof-permit index holds 94,645 distinct PINs. That is the number most people quote, and for a residential mailer it is wrong. Only 82,591 of them (87.3%) match a residential parcel in the assessor's characteristics file. The other 12,054 carry a parcel number that never appears in the residential file, so they sit outside the stock you were going to mail in the first place.

So the real suppression set is 82,591 homes, which is 7.41% of the county's 1,114,335 residential parcels. One residential parcel in every 13.5. On a 40,000-piece campaign that is 2,965 pieces you paid to print, address, and deliver to the wrong door.

9,102 of those parcels carry more than one roof permit in the index, which is a useful reminder that a permit record is a history and not a single event.

The read for contractors

Before you buy a list, buy the subtraction. Join permits to the residential file on PIN, drop the non-residential PINs, and you have a do-not-mail list that costs nothing and pays every time you print.

Permit index vs. residential stockCounty permits · assessor
PINs in permit index94,645
Match a residence82,591
No residential match12,054

02 · Freshness

This is a nine-season file, and it skews recent.

Age matters here, because a permit from 1994 tells you almost nothing while a permit from 2024 closes the door. The Cook index is overwhelmingly recent by construction: of the 82,591 matched parcels, 82,561 carry a last-permit year between 2018 and 2026. Fourteen sit earlier than 2018. Sixteen rows in the whole index carry a year field that is not a year at all, values like 202 and 1422, which is what keyed data looks like at scale.

Inside that window the weight sits at the near end. 52,315 parcels (63.3%) were last permitted in 2022 or later, and 29,639 (35.9%) in 2024 through 2026. The single biggest year on the residential file is 2024, with 15,971. The 2026 count of 748 is a partial year and should be read that way.

Put differently: 4.69% of every residential parcel in Cook County has a roof permit less than five years old. In a trade whose replacement cycle runs two decades or more, that cohort is closed for the rest of the decade.

The read for contractors

If you only have appetite for one filter, suppress the 2022-and-later cohort. It is 52,315 homes, it is the freshest third-plus of the file, and it is the group most likely to throw your postcard out unread.

Last roof permit, by cohortResidential matches · n=82,561
2018–20194,084
2020–202126,162
2022–202322,676
2024–202629,639

03 · Geography

Palos is four times the county average.

The re-roofed share is nowhere near even. Group the join by township and the top of the table is Palos at 29.16%: 4,085 of its 14,008 residential parcels carry a roof permit. Evanston follows at 26.6% (3,455 of 12,991). Then Cicero, Hanover, and Worth, all clustered near 20%.

The concentration is the point. The top ten townships hold 39,780 permitted homes across 193,656 residential parcels, a 20.54% rate, and between them they account for 48.2% of the county's entire residential suppression set. Half the waste in Cook County sits in ten townships that make up under a fifth of its housing.

These also happen to be townships a roofer wants to work. The same conditions that make a township worth a campaign are what stack up the re-roofed homes inside it.

The read for contractors

Suppression matters most exactly where you were going to spend most. A blanket drop in Palos or Evanston wastes four times the county rate, and those are the two townships a Cook roofer is most likely to pick first.

Share of homes with a roof permit on fileTop 10 of 38 townships
Palos29.16%
Evanston26.60%
Cicero20.45%
Hanover20.28%
Worth20.23%
Berwyn19.71%
Rich18.89%
Riverside18.37%
Bremen18.08%
Oak Park17.09%

04 · The money

What the blind drop costs.

Now the arithmetic, with the assumption stated up front so you can replace it. Assume 60 cents a piece, all in, print plus postage, for a standard postcard drop. That is an assumption, not a measured figure from any of the data below; your printer's quote is the number that matters and the math scales linearly, so halve it or double it as needed.

Mail every residential parcel in Cook County blind and 82,591 pieces land on homes with a roof permit already on file: $49,554.60. Suppress only the fresh cohort, 2022 and later, and you still save $31,389.00 for the price of one join.

Most contractors do not mail a county. They mail ten thousand pieces at a time, so here is the same math at that size. At the county-average rate a 10,000-piece drop puts 741 pieces in front of recently permitted homes, about $444.70. Run that same drop in Palos and the waste climbs to 2,916 pieces, or $1,749.71. Four campaigns a year in the wrong townships and the number gets serious.

The read for contractors

Permit suppression is the rare targeting move with no downside case. It removes the homes with the lowest possible response probability, it costs one query, and the savings show up on the first invoice from your printer.

Wasted spend per 10,000 piecesDerived · assumed $0.60/piece
TownshipRe-roofedWaste / 10k
Palos29.16%$1,749.71
Evanston26.60%$1,595.72
Cicero20.45%$1,227.08
Hanover20.28%$1,217.04
Worth20.23%$1,213.67
County average7.41%$444.70
Calumet0.00%$0.00

05 · The honest limit

A zero in this file does not mean nobody re-roofed.

Look at the bottom of that township table and something obvious jumps out. Calumet: 0 permits across 4,651 homes. Norwood Park: 1 across 8,203. Proviso: 105 across 42,151, a rate of 0.25%. Eleven of the county's 38 named townships come in under 2%.

Nobody believes Calumet went nine years without a single roof replacement. Permitting in Illinois happens at the municipality, not the county, and each municipality decides what it publishes, in what format, and whether it flows into a county-level index at all. A low share is a statement about the record, not about the roofs.

That asymmetry decides how you may use the file. A permit on a PIN is evidence of a recent replacement and a good reason to drop the home from a mailer. An absent permit is evidence of nothing. Use the index to subtract, never to qualify, and never let a thin-coverage township talk you into believing you found virgin territory.

The read for contractors

Check your coverage before you trust your filter. If a township shows a re-roofed share near zero while comparable townships run 18% and up, the honest conclusion is that its permits are missing from the file, so your suppression is doing nothing there.

Thin-coverage townshipsCounty permits · assessor
TownshipHomesPermits on file
Calumet4,6510
Norwood Park8,2031
Proviso42,151105
Lake142,5601,593
Barrington5,75565
Rogers Park8,04192

06 · Do it yourself

Nothing here is proprietary. Go pull it.

Every figure on this page came out of two public files and one join. If you work Cook County, or any county with an open permit portal, you can rebuild the suppression list this week.

The four steps

First, find the permit source. Most counties and larger municipalities publish issued building permits through an open-data portal or a searchable permit-search page, usually with a permit type or work-description field. Filter it to roofing work: roof, re-roof, reroof, tear-off, shingle. Second, get the parcel key on it. Permits arrive keyed by address more often than by parcel number, so you will be standardizing addresses and matching them to the assessor's parcel file. That step is the whole job, and it is where most homegrown attempts quietly lose a third of their matches.

Third, keep the latest permit per parcel and the count. One home with three permits since 2018 tells a different story from one with a single 2019 permit, and you want both fields. Fourth, left-join it onto your mail list and drop the matches. Start with the parcels permitted in the last five years if you want the biggest saving for the least work.

What actually makes it hard

The work is not the SQL. Permitting is municipal, so a county-wide list means dozens of sources with different formats, vocabularies, and refresh schedules. 12.7% of the PINs in the Cook index never match a residential parcel and will inflate your suppression count if you skip the join. Permit data goes stale in months. And every county you expand into resets the exercise.

That is the only thing TerritoryX sells here. Not access to a secret file, because there is no secret file. We keep the joins current, indexed by PIN, across every county we cover, so the suppression list is a field on your territory read instead of a project.

Territory Intelligence · by email

Get the next brief when it publishes.

County briefs, township reads, and storm-window notes for exterior contractors. Aggregate market data only. No spam, no shared lists.

Subscribed. The next brief will land in your inbox.

Method & sources

Two public files, joined on parcel number. The Cook County Assessor's residential property-characteristics file supplies the universe of 1,114,335 residential parcels and their township assignment. The county roof-permit index supplies one row per parcel with a roof permit, carrying the most recent permit year and a permit count. Every figure on this page is a count or a share computed from that join at build time.

Denominators, stated plainly: county-level shares use all 1,114,335 residential parcels. Township shares use the 1,104,856 parcels carrying a named township in the assessor file; 9,479 parcels have no township value and are excluded from the township table only. Permit-year cohorts use the 82,561 matched parcels with a last-permit year between 2018 and 2026, excluding 14 parcels with earlier years and 16 index rows whose year field is not a valid year. The 87.3% match rate is measured against the 94,645 PINs in the permit index.

The postage figures are the one thing here that is not measured. They apply an assumed all-in cost of $0.60 per mailed piece to counts that are measured, and are labeled as derived wherever they appear. Substitute your own print and postage cost; the relationship is linear.

Everything on this page is aggregate. No individual home, address, owner, or parcel number is identified, and nothing here is a claim about the condition of any specific property. A roof permit on file records that a permit was issued. It is not a statement about workmanship, materials, or the current state of a roof.

Cook County Assessor · residential characteristics & township County permit records · roof permits by parcel TerritoryX · parcel join & derived cost math

Want this join run on the towns you actually work?

The Territory X-Ray puts permit suppression next to roof age, stock, storm cohort, and ownership, ranked neighborhood by neighborhood, with the first campaign already chosen. Or start with the free county read on the Territory Intelligence hub.

Request a Territory X-Ray