Products API & Data Search Coverage Property History Alerts For Contractors Data Exports
Solutions Solar & Energy Roofing HVAC Real Estate Insurance Lenders & CRE Contractors
Pricing Refer & Earn API Docs Sign In Get Started
Roofing

Find reroof & storm leads from permit data.

Browse 6.8M+ roofing permits across 48 states and DC →

When a homeowner pulls a roofing permit, the project is real and the budget is committed. Find every reroof and storm-restoration filing by city, state, or ZIP — through one nightly-refreshed API.

No credit card required. 100 free requests/day.

recent_roofing.sh
# Roofing permits issued in Dallas this quarter
curl "https://api.permit-stack.com/v1/permits/search\
?state=TX&city=Dallas\
&category=ROOFING\
&issued_after=2026-04-01\
&per_page=100" \
  -H "X-API-Key: pk_your_key_here"

# Returns address, dates, est. value,
# and contractor for every new roof

The short answer

Roofing permits are public records. PermitStack normalizes 6.8M+ ROOFING permits from city portals (Socrata, ArcGIS, Tyler EnerGov, Accela and more) into one schema across 48 states and DC. Query category=ROOFING by city, state, or ZIP, filter by issued_after to get only fresh filings, and you have a daily storm-restoration and reroof lead feed — starting on a free 100 requests/day tier.

Don't want to write code? The CSV export gives you every roofing permit we hold for a city or county, emailed as a spreadsheet, so you can sort by reroof date and find the homes due for a new roof. On any paid API plan, /v1/plays/system-age?trade=roofing returns that list directly for a city or ZIP: roofs permitted 12–25 years ago with no reroof permit since.

Better roofing leads than any storm-chase list

Bought roofing leads cost $40-150+ each and get resold to five competitors. A permit is a first-party public record of a homeowner who already committed to roof work — no bidding war, no shared list.

6.8M+

Roofing permits on file

The ROOFING category spans new roofs, reroofs, tear-offs, and repairs across 48 states and DC — one of 20 categories in a 120M+ permit database.

Nightly

Refresh cadence

Most sources are re-ingested every night. After a hailstorm, the wave of new roofing permits shows up as soon as each city publishes it, and every jurisdiction shows the date its data runs through.

$0

To start

100 free API requests per day, no credit card. Each request returns up to 50 permits from the last 30 days — enough to validate a territory before you pay anything.

From API call to qualified roofing lead

Build an automated pipeline that runs daily. No manual portal-checking, no scraping, no spreadsheets.

Filter ROOFING by location + date

Query category=ROOFING with city, state, or zip_code, then add issued_after to capture only recent storm-restoration and reroof filings.

Get address, value & contractor

Each permit returns the full property address, GPS coordinates, estimated project value, status, work description, and the contractor of record where the source provides it.

Automate with events & webhooks

Poll /v1/permits/events for new and changed permits, or register a webhook to get pushed every fresh roofing match — straight into your CRM or dialer.

Pull a storm-restoration territory in 12 lines

Hit the same REST endpoint from any language. Authenticate with a single X-API-Key header — no SDK required.

roofing_leads.py
import requests

# Recent roofing permits in a storm-hit ZIP
resp = requests.get(
    "https://api.permit-stack.com/v1/permits/search",
    headers={"X-API-Key": "pk_your_key_here"},
    params={
        "zip_code": "75070",
        "category": "ROOFING",
        "issued_after": "2026-04-01",
        "min_value": 8000,
        "per_page": 100,
    },
)
# Address comes back as components: address_street,
# address_city, address_state, address_zip.
for p in resp.json()["results"]:
    print(p["address_street"], p["address_city"], p["address_zip"], p["estimated_value"], p["contractor_name"])

# Need a spreadsheet instead? Same params, hit
# GET /v1/permits/export for a streaming CSV.

What roofing companies build with permit data

Storm-restoration canvassing

After a hail or wind event, pull every ROOFING permit issued in the impact ZIPs to map neighborhoods where damage repair is already underway — and door-knock the streets around them.

Reroof aging & recapture

An asphalt roof permitted 18-25 years ago is nearing end of life. Use the back-history and /v1/property/history to flag homes due for replacement in your service area.

Insurance & supplement work

Recent roofing permits signal insurance-driven restoration. Cross-reference roof age and replacement dates to position supplement and full-replacement bids.

Solar cross-sell partnerships

A brand-new roof is the ideal surface for panels. Hand qualified reroof leads to a solar partner — or run the reverse play and offer roofing to solar installers.

Competitive market intel

Sort by contractor_name to see which roofers dominate each ZIP, their permit volume, and average project value — then target the territories they underserve.

Territory & crew planning

Compare ROOFING permit volume across cities and ZIPs to allocate crews and sales reps where reroof demand is actually concentrated.

Know exactly how fresh each source is

Every jurisdiction carries a data_status flag — active, historical_archive, or frozen — exposed in the API and on our public coverage page. You never mistake a decommissioned feed for a live one, and future-dated permits are rejected at ingest so your dates stay trustworthy.

Roofing permit data, answered

How do roofing contractors get leads from permit data?

Roofing permits are public records filed when a homeowner reroofs or repairs a roof. PermitStack normalizes them into one API so you can query category=ROOFING by city, state, or ZIP and filter by issued_after to surface only recent filings. Each permit returns the property address, dates, estimated value, and contractor name — high-intent leads you can push straight into your CRM.

How fresh is the roofing permit data?

PermitStack re-ingests most sources every night, starting at 03:00 UTC, so a new permit usually reaches the API within a day of the city publishing it and you reach homeowners while the project is active. Some cities publish weeks after filing and some sources are temporarily blocked by their vendor, so every jurisdiction reports a data-through date (its newest permit we hold) and carries a data_status flag (active, historical_archive, or frozen) so you always know how current a source is.

How many roofing permits does PermitStack cover?

PermitStack holds 6.8M+ ROOFING permits within a database of 120M+ total permits spanning ~902 active jurisdictions across 48 states and DC, plus 75 historical-archive jurisdictions for back-history. Browse the roofing coverage by city →

Can I get notified automatically when new roofing permits appear?

Yes. Use GET /v1/permits/events to poll for new and changed roofing permits since your last sync, or register a webhook via POST /v1/webhooks (Developer plan and up) to receive a callback when fresh permits match your criteria. Both let you build a hands-off daily lead pipeline. See the alerts overview →

Is there a free way to try the roofing permit API?

Yes. The free tier gives you 100 requests per day with no credit card. Paid plans run $29/mo (Indie) to $499/mo (Scale), all self-serve through Stripe with no sales call; custom Enterprise plans are available above that. See pricing →

Start finding roofing leads today

120M+ permits · 6.8M+ roofing · 902 active data sources · most refreshed nightly · free tier

Get Free API Key Browse Roofing Permits