Browse 2.2M+ roofing permits across ~522 U.S. jurisdictions →
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 daily-refreshed API.
No credit card required. 100 free requests/day.
# 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 roofRoofing permits are public records. PermitStack normalizes 2.2M+ ROOFING permits from city portals (Socrata, ArcGIS, Tyler EnerGov, Accela and more) into one schema across ~522 active jurisdictions in all 50 states. 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.
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.
The ROOFING category spans new roofs, reroofs, tear-offs, and repairs across ~522 jurisdictions — one of 20 categories in a 51M+ permit database.
Ingest runs every day at 03:00 UTC. After a hailstorm, the wave of new roofing permits shows up while the damage is still fresh in homeowners' minds.
100 free API requests per day, no credit card. Each request returns up to 100 permits — enough to validate a territory before you pay anything.
Build an automated pipeline that runs daily. No manual portal-checking, no scraping, no spreadsheets.
Query category=ROOFING with city, state, or zip_code, then add issued_after to capture only recent storm-restoration and reroof filings.
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.
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.
Hit the same REST endpoint from any language. Authenticate with a single X-API-Key header — no SDK required.
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.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.
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.
Recent roofing permits signal insurance-driven restoration. Cross-reference roof age and replacement dates to position supplement and full-replacement bids.
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.
Sort by contractor_name to see which roofers dominate each ZIP, their permit volume, and average project value — then target the territories they underserve.
Compare ROOFING permit volume across cities and ZIPs to allocate crews and sales reps where reroof demand is actually concentrated.
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 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.
PermitStack ingests from city open-data portals daily at 03:00 UTC. Most jurisdictions appear within a day of a permit being filed, so you reach homeowners while the project is active. Each jurisdiction carries a data_status flag (active, historical_archive, or frozen) so you always know how current a source is.
PermitStack holds 2.2M+ ROOFING permits within a database of 51M+ total permits spanning ~522 active jurisdictions across all 50 states, plus 24 historical-archive jurisdictions for back-history. Browse the roofing coverage by city →
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 to receive a callback when fresh permits match your criteria. Both let you build a hands-off daily lead pipeline. See the alerts overview →
Yes. The free tier gives you 100 requests per day with no credit card. Paid plans start at $19/mo (indie) and scale to $499/mo (growth), all self-serve through Stripe with no sales call. See pricing →
51M+ permits · 2.2M+ roofing · ~522 jurisdictions · updated daily · free tier