Do it yourself · 30 minutes
scrape every permit in your county
Every building permit pulled in your county is a public record: who is building, what, where, and roughly what it costs. Almost nobody in construction uses it, because getting at it used to require a developer.
It does not anymore. Here is the whole thing, start to finish, assuming you have never installed a developer tool in your life.
What we got in Baltimore County
One spreadsheet: every permit, sorted by job value, with the scope of work and the address on each line. The same approach works in most US counties.
setting up
You do this once. About 15 minutes, and most of it is waiting on downloads.
get a claude subscription
3 minutesGo to claude.ai and make an account. The free tier will not do this job — you need a paid plan to get Claude Code, which is the piece that actually reads data and writes files on your computer.
- Pro — fine for trying this once or twice a week.
- Max — what you want if this becomes part of how you run the business. More usage, fewer interruptions mid-job.
Pay with a card, same as any other subscription. You are not installing anything yet.
download the claude desktop app
5 minutesGo to claude.ai/download and get the app for your machine — Mac or Windows. Install it like any other program and sign in with the account you just made.
The desktop app matters because it can see the files on your computer. The website version cannot. Everything after this point happens in the app.
install git
5 minutesGit is a free tool Claude Code leans on. You will never type a Git command yourself — it just needs to be on the machine.
- Windows — download from git-scm.com and click through the installer. Accept every default.
- Mac — open Terminal and type: git --version. If it asks to install developer tools, say yes. That is the whole step.
If a screen asks you something you do not understand, take a screenshot, paste it into Claude, and ask what to click. That is a legitimate way to use this tool.
open claude code
2 minutesIn the Claude desktop app, open Claude Code and point it at a folder. Make a new empty folder somewhere you will find it again — call it permit-leads — and choose that.
That folder is now Claude's workspace. Anything it builds lands there, where you can open it in Excel like any other file.
step 05 — find the data
This is the only genuinely uncertain part, and it is worth doing as its own step. Every county publishes permits differently. Some hand you a clean data feed; some bury it behind a search form. Before you ask for a spreadsheet, ask what you are working with. Swap in your own county.
Paste this into Claude Code
Find out how [YOUR COUNTY] publishes its building permit records. Check for a public data API first — ArcGIS REST, Socrata, or an open data portal. If there isn't one, find the public permit search portal (Accela Citizen Access, Tyler EnerGov, or similar) and tell me if it can be read programmatically. Then tell me, honestly: - What fields are available on each permit - Whether contractor and owner names are actually filled in, or mostly blank - Whether there are any emails or phone numbers (usually there are not) - How far back the data goes and how current it is Do not build anything yet. I want to know what's really there first.
Read what comes back before moving on. In Baltimore County the answer was: a public ArcGIS feed with nine permit layers, live to the current day, no key required — but the county website itself blocks automated tools, and the contractor name is filled in on only about 5% of permits. Both of those facts changed what was worth building. You want to know that now, not after you have promised someone a list.
step 06 — get the spreadsheet
Now you build. Be specific about what you want out the other end — a spreadsheet you can open in Excel, not a pile of technical output.
Paste this next
Now build me a script that pulls every permit issued in the last 90 days from that source. Then put it in an Excel workbook with these tabs: - Summary: total permits, total declared job value, breakdown by trade - Contractor Leads: only permits with a contractor name filled in - Owner Leads: only permits with an owner name filled in - All Permits: everything, sorted by job value, highest first Every row should show: job value, address, scope of work, permit number, issue date, and trade. Two things I care about: - Score each permit so the biggest and most relevant ones sort to the top - Remember what you already pulled, so when I run this next week I only see permits that are new Test it against the live source and show me the real numbers before you tell me it works.
That last line matters more than it looks. Ask for the real numbers and you find out on the spot whether the thing works. In our run it surfaced immediately that the plumbing and electrical permits — the highest-volume ones, the permits a trade contractor actually pulls — have the contractor column sitting completely empty. Better to learn that in minute four than after building a campaign on top of it.
step 07 — draft the outreach
The permit is the entire reason a cold message works here. You know what they are building, where, and that they just got approved. That beats any generic pitch — but only if the message actually uses it.
Then this
Take the top 10 leads from the Contractor Leads tab and draft an outreach email for each one. Rules: - Reference their specific permit — the scope and the address — in the first line, and say it came from public county records - Never quote the dollar value back to them. It's a filing estimate, it's often wrong, and it reads like surveillance - One clear ask. Short. No fake familiarity, no invented connections - Include who I am and a real opt-out line - Nothing that implies the county sent me or endorsed me Put them all in one file as a review queue, and do not send anything. I'll read them and tell you which ones go.
the part everyone skips
You will be tempted to let it send on its own. Do not — and this is practical advice, not a legal disclaimer.
- Unreviewed cold email to scraped addresses is the fastest way to get your company domain flagged as spam. Once that happens, your estimates and invoices stop reaching people too.
- Permit data has no email addresses in it. Anything the tool attaches came from somewhere else and can be wrong — a bad address sends your pitch to a stranger with your name on it.
- CAN-SPAM requires a real sender identity, a physical address, and a working opt-out on every commercial email. That is not optional and it is not hard.
- Homeowners are a different animal than contractors. Do not autodial or text them off a permit list — that is TCPA territory. In most states, soliciting home improvement work from homeowners also requires a license.
The workflow that holds up: AI does the finding, the sorting, and the drafting. A person reads the drafts and decides which ones go out. That still takes the job from a week to about twenty minutes, which was the point.
what this is actually good for
Most permits will not have a name attached — in Baltimore County it was about 5%. That sounds like a failure until you notice the rest of the sheet is still telling you something nobody else in your market is reading:
Where work is moving
Which ZIP codes are heating up, which are going quiet, three months before it shows up in anyone's revenue.
What GCs are starting
A large commercial permit today means subs get bought out in the next 60 days. That is a callable window.
Which trades are busy
Volume by trade tells you where capacity is tight and where you can raise your number.
Timing your bid
Site work permits precede vertical construction. You can see the job coming before the invitation does.
questions
Is scraping permit data legal?
Building permits are public records. Every county publishes them, and using them to find work is ordinary business — title companies, roofers, and solar sales teams have done it for decades. What is not fine is implying the county sent you, or that your outreach is any kind of official notice.
Do I need to know how to code?
No. You are describing what you want in plain English. Claude writes the code, runs it, and hands you a spreadsheet. If something breaks, you paste the error back and it fixes it.
Will this work for my county?
Usually. Most counties publish permits through one of a handful of systems — ArcGIS, Socrata, Accela, Tyler. Some publish clean data, some hide it behind a search form that has to be clicked through one page at a time. Ask Claude to find out before you assume either way.
How often should I run it?
Weekly is the sweet spot. Permits are a timing signal — the value is reaching someone the week they got approved, not three months later. The tool remembers what it already pulled, so each run shows only what is new.
Can it send the emails automatically?
It can, and you should not let it. Read the section above on why. Drafting is the hard part and AI is genuinely good at it; sending unreviewed mail to scraped addresses is how you burn your domain and your reputation in a market where everyone knows everyone.
want it built into how you actually work?
Everything above is yours to run for free — that is the point of the page. If you would rather have it wired into your CRM, running on a schedule, and tuned to the trades and job sizes you actually chase, that is what we do.