Building permit data is a real lead source and almost everything written about it is wrong.
I pulled every record in the City of Toronto's Active Permits dataset on 4 September 2026. All 206,733 of them. Then I checked the three things every guide tells you to filter on: how recent the permits are, the estimated construction cost, and the name of the builder.
Only 1.5% had been issued in the previous 30 days. The cost field was unusable text on 57.8% of records. The builder name was blank on 94.7%.
That does not mean permit data is worthless. It means the standard advice about it was written by companies that sell permit data, and it describes a workflow that does not survive contact with an actual municipal file. Here is what the data really supports.
What building permit data actually contains
A building permit is a municipal record required under the Building Code Act before a physical structure is built, altered or demolished. Most large cities publish the file as open data, and it is genuinely free.
Toronto's Active Permits file carries 32 fields. The useful ones are the permit number, permit type, structure type, the full street address, the application date, the issue date, status, a plain-English work description, current and proposed use, dwelling units created or lost, and estimated construction cost.
Here is what it does not carry, and this is the part that matters:
No owner name. No phone number. No email address.
The only name field in the entire schema is BUILDER_NAME. The postal field holds only the forward sortation area, the first three characters, so you get M1S rather than a full postal code. Every vendor guide includes a breezy step called "enrich with contact data." That step is the whole job, and none of them tell you how much of it there is.
The problem nobody selling permit data will tell you
Search for this topic and you will get a page of permit data vendors: Shovels, Construction Monitor, ConstructConnect, Permitlify, Mercator. The top-ranking article, from Shovels, is well written and thorough. It is also not written for you. Read its audience section and you find it is aimed at "lenders, SaaS providers, and building materials and equipment suppliers," companies selling to contractors. A second-ranking page reproduces that article's heading structure and FAQ almost line for line.
Meanwhile, the actual operators are blunt about it. On r/solar in May 2026, an installer replied to a post promoting permit-based lead generation:
"At the micro level, once a permit has been pulled the planning and budgeting is done. There's no room to get in a sale."
The person who published the permit analysis conceded the point directly: "you're right that by the time a residential permit is filed, the contractor is already chosen," adding that "the residential homeowner timing issue is real and I don't think there's a clean workaround for it."
That is the entire problem in two sentences. A permit is filed by a contractor who already won the work, or by an owner who already knows what they are building. If you install furnaces and you are reading a furnace permit, you are reading a record of a job your competitor booked.
Watch out
If your plan is to pull permits for your own trade and call those addresses, you are building a list of jobs you already lost. The permit is the receipt, not the enquiry.
I pulled 206,733 permits. Here is what the file looks like
Vendor guides describe filtering by job value, deduplicating by contractor and prioritising recent permits. I tested all three against the live Toronto file.
| What the guides tell you to do | What the data actually supports |
|---|---|
| Filter by estimated job value | 57.8% of the cost field is non-numeric text. 89,582 records contain the string "DO NOT UPDATE OR DELETE THIS INFO FIELD" |
| Deduplicate by contractor | BUILDER_NAME is blank on 195,689 of 206,733 records, or 94.7% |
| Prioritise recent permits | 1.5% were issued in the last 30 days. 65.5% were issued over three years ago |
| Enrich with contact data | The file has no owner name, no phone and no email to enrich from |
| Filter by permit status | This one works, and it is the most useful filter in the file |
The freshness breakdown is worth seeing in full, because the word "active" does a lot of misleading work here:
| When the permit was issued | Records | Share |
|---|---|---|
| Not yet issued, still in review | 14,892 | 7.2% |
| Last 30 days | 3,022 | 1.5% |
| 31 to 90 days ago | 5,603 | 2.7% |
| 91 days to 1 year ago | 19,196 | 9.3% |
| 1 to 3 years ago | 28,695 | 13.9% |
| More than 3 years ago | 135,325 | 65.5% |
By the numbers
Roughly four out of five records in a file labelled "Active Permits" describe work permitted more than a year ago. Download it, sort it badly, and your first hundred calls are about jobs that finished before the pandemic ended.
The cost field deserves a specific warning. It is not merely messy, it is actively booby-trapped. A plurality of records, 89,582 of them, contain a placeholder instruction to city staff rather than a number. Another few thousand contain comma-formatted strings such as 50,000 and 10,000 that will silently parse as zero or throw an error depending on your spreadsheet. If you filter for jobs over $100,000, you are unknowingly discarding well over half your rows before you start.
The timing trap: prescribed 10 days, actual median 31
The other premise behind permit-based prospecting is that a permit predicts imminent construction. Ontario's Building Code sets prescribed review periods: 10 business days for a house, 15 for a small building, 20 for a large building and 30 for a complex one. Ottawa publishes the same targets, with 5 business days for a small homeowner project like a deck or shed.
Those are targets for a complete application. Here is the measured reality from Toronto permits issued in the last twelve months, all 27,804 of them:
- Median application to issue: 31 calendar days
- 75th percentile: 69 days
- 90th percentile: 217 days
- Only 22.7% were issued within 10 calendar days
- 20% took more than 90 days
So one permit in five sat in review for over three months. By the time it appears in your download as freshly issued, the homeowner signed their contract a season ago. A Maryland solar contractor described the same variance on r/solar: a two week wait in Baltimore County, against three months for a 6kW permit in Baltimore City a few miles away, after an eight month wait the year before.
The person analysing that data drew the right conclusion: adjacent municipalities run "totally different processing timelines, which makes permits by city a blunt instrument unless you're filtering by specific jurisdiction."
Most contractors who ask us about permit data are really asking a different question: where does consistent work come from when referrals go quiet. We map your actual lead-to-sale path first and tell you honestly which channels are worth your time, including the ones we do not sell.
The reframe that makes permit data useful
Permit data is not a lead list. It is a forward calendar for the trades that come after the one on the paperwork.
A permit for an addition is not a lead for the framer. It is a lead for everyone downstream of the framer, and those people have not been hired yet. That fixes the timing objection completely, because you are no longer trying to get in front of a decision that has already been made. You are getting in front of the next decision, months early.
Of the 3,022 permits Toronto issued in the last 30 days, the work descriptions mention:
| Keyword in description | Permits in 30 days |
|---|---|
| Furnace, HVAC or heat pump | 672 |
| Basement | 538 |
| Addition | 492 |
| Garage | 286 |
| Deck | 231 |
| Bathroom | 126 |
| Roof | 122 |
| Window | 100 |
| Kitchen | 83 |
| Solar | 18 |
| Pool | 11 |
| Fence | 8 |
Read that as a demand calendar rather than a contact list and it becomes genuinely valuable:
- 492 additions and 538 basements issued last month means several hundred homeowners who will need flooring, painting, drywall finishing, trim, final electrical and landscaping restoration in roughly four to nine months. None of those trades has been booked yet on most of those jobs.
- 11 pool permits means 11 properties that will need fencing, since pool enclosures are mandatory, plus concrete, decking and irrigation work. Toronto publishes a dedicated Pool Enclosures permit dataset, refreshed weekly, which is about as close to a purpose-built fencing lead list as public data gets.
- 286 garage permits signals demand for garage doors, openers, epoxy floors and subpanel upgrades.
- 62 demolition permits in 30 days signals a new build behind each one, and a full trade stack six to eighteen months out.
The second use is competitor intelligence, and it is underrated. Toronto separately codes Plumbing and Mechanical permits, 5,953 and 5,610 respectively over the last twelve months. If you run a plumbing company, that file tells you which neighbourhoods are producing work and, on the 5.3% of records with a builder name, who is winning it. That is a territory planning input and a partnership target list, which is exactly what the solar installer meant when he said it was "still worth my time to work with architects and builders to become their sub."
The volume reality check
Before you spend a weekend on this, run the arithmetic for your own trade.
Toronto issued 3,022 permits in the last 30 days across a city of nearly three million people. That is roughly 705 permits a week, every trade combined. The distribution:
| Permit type | Last 30 days | Share |
|---|---|---|
| Small Residential Projects | 663 | 21.9% |
| Plumbing | 631 | 20.9% |
| Mechanical | 625 | 20.7% |
| Building Additions and Alterations | 419 | 13.9% |
| Drain and Site Service | 304 | 10.1% |
| New Houses | 95 | 3.1% |
| Fire and Security Upgrade | 65 | 2.2% |
| Demolition | 62 | 2.1% |
If you are a plumbing or HVAC contractor, roughly 145 relevant permits a week is a real signal worth building a habit around. If you are a fencing contractor looking at 8 permits a month, all of them already awarded, permit data is not your channel and no amount of tooling will change that. Spend the weekend on lead generation that does not involve buying leads instead.
What you are legally allowed to do with it in Canada
This is the section every ranking article omits, because they are all written for a US audience. The rules in Canada are materially stricter and the penalties are not theoretical.
Email is the dangerous one. CASL moved Canada to an opt-in regime: with narrow exceptions, you need express or implied consent before sending a commercial electronic message. A permit record is not consent. The fact that a document is a public record does not create permission to market to the person named in it. LinkedIn and Facebook direct messages count as commercial electronic messages too.
The CRTC can impose administrative monetary penalties of up to $1 million on individuals and $10 million on organisations. In March 2015 it issued a $1.1 million penalty to Compu-Finder, a business-to-business operator that had obtained email addresses from publicly available websites and sent offers recipients found irrelevant. That precedent maps almost exactly onto the permit-scraping workflow.
Calling follows different rules. Per the National DNCL exemptions published by the CRTC, the National DNCL Rules do not apply to telemarketing calls made to businesses. Calling the builder or general contractor named on a permit is treated very differently from calling a homeowner at a residential number, which requires you to subscribe to and scrub against the National DNCL.
You may also call a consumer under an existing business relationship, meaning someone who has:
- purchased, leased or rented from you in the last 18 months, or
- a written contract in effect or expired within the last 18 months, or
- made an enquiry or application to you within the last 6 months.
Even when a call is exempt, you must identify your organisation at the start of the call, and you must maintain your own internal do not call list, adding anyone who asks within 14 days and keeping them on it for three years.
Note
The practical read: permit data is a solid basis for B2B outreach to builders and general contractors, for direct mail, and for door knocking. It is a poor and legally risky basis for cold emailing homeowners. Mail and a knock are not commercial electronic messages, which is why the oldest channels are the safest ones here.
That constraint also explains why the most effective outreach in this space stays stubbornly physical. A commercial contractor on r/b2b_sales in July 2026, describing how he got onto a major bid list, put it better than any playbook:
"those estimators aren't on linkedin, they're in a job trailer eating lukewarm gas station biscuits. i got on our biggest bid list by dropping off a hot box of local glazed donuts."
A six-step workflow that actually works
- Find your municipality's portal. Toronto publishes Active Permits and Cleared Permits on open.toronto.ca, both refreshed daily, through a CKAN API that requires no key. Ottawa, Vancouver, Calgary and Edmonton run equivalents. Skip vendors until you operate across enough jurisdictions that normalising schemas is worth a subscription.
- Filter to the last 30 to 60 days by issue date, not by status. This is the single most important step. It cuts 206,733 records to about 3,000 and removes the years of stale rows that make the file look richer than it is.
- Pick the permit types upstream of your trade, not your own. Additions, basements, new houses and demolitions are the ones that generate downstream work. Your own trade's permits are for competitor intelligence only.
- Ignore the cost field, or clean it deliberately. Strip commas, drop anything non-numeric, and accept you are working with about 40% of rows. Never filter on it without checking what you discarded.
- Choose a legal channel before you build the list. Direct mail, door knocking and B2B calls to builders are clear. Cold email to homeowners is not. Decide this first, because it determines what you need to collect.
- Time the outreach to the trade stage, not the permit date. For finishing trades, set a follow-up four to nine months out. A permit issued in September is a flooring conversation in spring, and almost nobody will be talking to that homeowner then.
Track it like any other channel. If permit-sourced outreach does not produce a booked job within two quarters, it is a hobby. Log every touch with its source and outcome in one place so you can actually answer that question, which is the same discipline that makes cash flow predictable rather than a monthly surprise.
When permit data is not worth your Saturday
Be honest about which of these describes you.
Skip it if: your trade shows up fewer than 20 times a month in your city's file, you have no capacity to run a four to nine month follow-up sequence, you were planning to cold email homeowners, or you have not yet fixed the leads already arriving at your website unanswered. Response speed on existing enquiries beats any new channel, every time, which is why we start lead generation work by fixing the path a lead already takes before adding another source to it.
Use it if: you sell to builders and general contractors rather than homeowners, you are a finishing trade that works downstream of permitted structural work, you need territory intelligence about where activity is concentrating, or you run direct mail and want a targeting list better than a postal walk.
Permit data has a real edge, and the edge is precisely that it is boring and public. Nobody competes for it, because the version being sold does not work and the version that works takes a spreadsheet, a legal constraint and a nine month memory. That filters out almost everyone.
The honest summary: it will not fill your calendar next week. It will tell you, with more precision than anything else you can get for free, where the work in your city is going to be next spring.
