US Building Permits Scraper - Contractor Leads, Verified Cities avatar

US Building Permits Scraper - Contractor Leads, Verified Cities

Pricing

from $3.00 / 1,000 permits

Go to Apify Store
US Building Permits Scraper - Contractor Leads, Verified Cities

US Building Permits Scraper - Contractor Leads, Verified Cities

Contractor leads from building permits: roofing, HVAC, solar, electrical, plumbing, remodel & new construction, classified by trade and lead-scored. 16 verified city feeds checked daily; contractor names, owner names, valuations, phones where published. From $3/1,000, source-direct government data.

Pricing

from $3.00 / 1,000 permits

Rating

0.0

(0)

Developer

PermitData

PermitData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

US Building Permits Scraper: Contractor Leads from 16 Verified Cities

Turn building permits into contractor leads. Every permit comes straight from 16 cities' official open-data APIs, normalized to one schema, classified by trade (roofing, HVAC, solar, electrical, plumbing, pool & spa, demolition, remodel, new construction) and lead-scored so sales teams work the hottest jobs first. Monitor mode turns it into a daily permit alert feed for schedules and webhooks. No proxies, no fragile HTML scraping, no reseller feed. Government APIs only.

Which lead list do you want?

Lead listHow to get it
Roofing leads (storm chasers, re-roof jobs)trades: ["roofing"]
HVAC leadstrades: ["hvac"]
Solar leads (who's installing, which contractors win)trades: ["solar"]
Electrical / plumbing job feedtrades: ["electrical", "plumbing"]
Pool & outdoor-living prospectstrades: ["pool_spa", "fence_deck"]
New construction & remodel activity (investors, suppliers)trades: ["new_construction", "remodel_addition"]
High-value projects onlyminValuation: 50000
Daily new-permit alert feedmonitor mode on an Apify schedule + webhook

Who uses it: building-product suppliers and distributors selling to contractors (permits show who's pulling jobs right now), subcontractors prospecting GCs, home-services companies (a remodel permit predicts follow-on purchases), real-estate investors tracking construction activity by block, and market researchers measuring construction trends from primary data.

Why this one

  • Verified coverage, not claimed coverage. Every listed city passes an automated daily canary check. If a source breaks, it gets flagged here and in your run's health report, so you never pay for a silently broken city. Each city shows its last-verified date below.
  • One honest schema. A field that a city doesn't publish is null, never guessed. The per-city availability matrix below tells you exactly what you'll get before you run.
  • Contractor names where cities publish them. In Austin you also get the contractor's phone number, straight from the permit record.
  • Monitor mode. Run it on a schedule and get only new permits since your last run: watermarked, deduplicated, webhook-ready. Ideal for lead-gen pipelines.
  • Health report with every run. Per-source status, record counts, freshness, and latency in the HEALTH_REPORT key-value record.
  • Works with AI agents. Call it via MCP from Claude, Cursor, or any MCP client.

Coverage

CityStatusLast verifiedContractor nameValuationGeo
Chicago, IL✅ verified2026-07-02✅ (by contact type)✅ reported cost
Detroit, MI✅ verified2026-07-02❌ not published by city✅ estimated cost
Austin, TX✅ verified2026-07-03company + name + phone✅ (often null on trade permits)
New York City, NY✅ verified2026-07-03⚠️ permittee business (varies)✅ estimated cost
San Francisco, CA✅ verified2026-07-03❌ not published by city✅ revised cost❌ (v1)
New Orleans, LA✅ verified2026-07-03❌ not published by city✅ est. project cost❌ (v1)
Cincinnati, OH✅ verified2026-07-03✅ company name✅ est. project cost
Baton Rouge, LA✅ verified2026-07-03contractor + owner✅ project value
Buffalo, NY✅ verified2026-07-03✅ applicant/contractor✅ value of work
Montgomery County, MD✅ verified2026-07-03❌ not published✅ declared valuation❌ (v1)
Seattle, WA✅ verified2026-07-03❌ not published✅ est. project cost
San Jose, CA✅ verified2026-07-04contractor + owner name✅ permit valuation + sq ft❌ (address string)
Philadelphia, PA (L&I)✅ verified2026-07-04contractor + address, owner name❌ not published
Columbus, OH✅ verified2026-07-04✅ applicant business name✅ total value + sq ft❌ (parcel number)
Washington, DC✅ verified2026-07-04applicant + owner name❌ (fees only)
Nashville, TN (Metro)✅ verified2026-07-04✅ permit contact✅ construction cost
More cities🔜 rolling out weeklyvariesvariesvaries

New cities ship weekly. Want a specific city or county? Open an issue and it goes to the top of the queue.

Dodge / ConstructConnect / Construction Monitor alternative?

If you're paying an enterprise construction-data subscription just to see who pulled permits this week, this Actor covers that slice for pennies:

This ActorDodge / ConstructConnect / Construction Monitor
AccessAPI-first (Apify, schedules, webhooks, MCP)Web portals, sales-led contracts
Price$0.003/permit, $0.02/scored lead, no subscription$100s–$1,000s per month
Data pathSource-direct city open data, same-dayAggregated, often delayed
Coverage honestyPer-city matrix + daily verified badgeOpaque
Plan rooms, bid docs❌ permits onlyIncluded at enterprise prices

Honest trade-off: this is a permit data feed, not a plan room. If you need bid documents and project managers' cell numbers, keep the enterprise tool. If you need fresh permit activity classified by trade, with contractor names where published, this does it at commodity prices.

Output schema (one row per permit)

{
"permit_id": "chicago:B200471904",
"permit_number": "B200471904",
"source": "chicago",
"source_label": "Chicago, IL",
"state": "IL",
"issued_date": "2026-05-25",
"applied_date": "2026-05-25",
"status_raw": "ACTIVE",
"permit_type_raw": "PERMIT – EXPRESS PERMIT PROGRAM",
"work_class_raw": "Electrical Work",
"trade": "electrical",
"trades_all": ["electrical"],
"description": "LINE VOLTAGE ELECTRICAL WORK. ...",
"address": "77 W WACKER DR",
"latitude": 41.8867,
"longitude": -87.6308,
"valuation": 21200.0,
"permit_fee": 75.0,
"contractor_name": "LOMBARDI ELECTRIC, INC.",
"owner_name": "CORONADO MYRNA",
"lead_score": 80,
"scoring_reasons": ["trade:electrical", "valuation:$21,200", "age:5d", "contractor-known"],
"dedupe_key": "…",
"first_seen_at": "2026-07-02T14:00:00Z"
}

Trades classified: roofing, HVAC/mechanical, electrical, plumbing, solar, demolition, pool & spa, fence/deck, new construction, remodel/addition, fire systems, signs. Classification is deterministic keyword matching on the permit type + description. Reproducible, no LLM randomness.

Modes

  • Scrape: pull a date range (sinceDays or explicit sinceDate/untilDate).
  • Monitor: stateful, emits only permits you haven't seen, with a 3-day overlap re-check for late-published records. Point a schedule + webhook at it and you have a permit alert feed.
  • Canary: free self-test of all sources; optionally posts the health summary to a Discord webhook. I run it daily myself, you can too.

How to use

  1. Click Try for free (first 25 permits are free).
  2. Pick sources (e.g. ["chicago", "austin"]) and trades (e.g. ["roofing", "hvac"]).
  3. Set sinceDays: 14 and optionally minValuation + leadScoring: true.
  4. Save & Start, then export JSON/CSV/Excel from the Output tab, ready for your CRM.

From Python:

from apify_client import ApifyClient
client = ApifyClient("<APIFY_TOKEN>")
run = client.actor("permitdata/us-building-permits-scraper").call(run_input={
"mode": "scrape",
"sources": ["chicago", "austin"],
"trades": ["roofing", "hvac", "solar"],
"sinceDays": 14,
"leadScoring": True,
})
for row in client.dataset(run["defaultDatasetId"]).iterate_items():
print(row["lead_score"], row["trade"], row["address"], row.get("contractor_name"))

Pricing

  • First 25 permits free (per account, ever). Try before you buy.
  • $0.003 per permit (raw normalized record), $3.00 per 1,000.
  • $0.02 per scored lead when leadScoring is on. Replaces the per-permit charge, so you're never double-billed for the same row.
  • Lead scoring is a documented deterministic heuristic (trade match, valuation bucket, recency, contractor identified); see scoring_reasons on every row.

Example: a weekly two-city roofing + HVAC pull of ~300 scored leads costs about $6.

FAQ

How do I get building permit leads for my city?

If your city is in the coverage table, select it in sources and run. If it isn't, open an issue; cities with open data get added quickly.

Which cities include contractor names or phone numbers?

See the coverage matrix. Austin publishes company + name + phone; Chicago, Cincinnati, Baton Rouge, and Buffalo publish contractor/applicant names. Cities that don't publish contractor data are marked ❌ so you know before you run.

Can I get a daily feed of new roofing permits?

Yes: monitor mode with trades: ["roofing"] on a daily Apify schedule + webhook emits only permits you haven't seen.

Yes. The data comes from official government open-data portals published for public use under open/public-domain licenses. No login-walled sources are used.

Does it work with AI agents?

Yes, callable via MCP from Claude, Cursor, or any MCP client.

Fair use & data provenance

All data comes from official government open-data portals published for public use. No login-walled sources, no personal-data enrichment, no skip-tracing. Owner names appear only where the government source itself publishes them.

Support

Issues tab, or the contact form on my profile. Broken-source reports are typically fixed within 24-48h; my own daily canary usually catches breakage before users hit it.

If this Actor saves you time, a quick review on this page helps other contractors and suppliers find it, and city requests from reviewers get built first.