Building Permits Scraper - Permit Data API & Contractor Leads avatar

Building Permits Scraper - Permit Data API & Contractor Leads

Pricing

from $3.00 / 1,000 permit lead delivereds

Go to Apify Store
Building Permits Scraper - Permit Data API & Contractor Leads

Building Permits Scraper - Permit Data API & Contractor Leads

Building permit data from 31 US & Canada cities in one run: new construction leads with contractor name, phone and license, project value, trade and lead score. Only-new mode for daily schedules.

Pricing

from $3.00 / 1,000 permit lead delivereds

Rating

0.0

(0)

Developer

Vincent Vann

Vincent Vann

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Categories

Security

Limited permissions

Share

Building Permits Scraper: Permit Data API & Contractor Leads

Building Permits Scraper pulls building permit data and new construction leads from 31 official city and county open-data portals in the US and Canada in one run: New York City, Los Angeles, Chicago, Austin, Dallas, San Antonio, Seattle, San Francisco, Philadelphia, Boston, Washington DC, Miami, Miami-Dade, Nashville, Raleigh, Columbus, Cleveland, Detroit, Baltimore and more.

Every permit record comes with its trade (roofing, solar, HVAC, pool, ADU, new construction...), a HOT / WARM / COLD lead score, the project value, and the contractor's name, phone, email and license wherever the city publishes them. Use it as a permit records API or as a daily contractor leads list.

Built for roofers, solar installers, HVAC and pool companies, building-material suppliers, insurance and home-services marketers who want a fresh list of real construction projects every morning.

Why this building permit scraper

  • 31 jurisdictions, 4 data platforms. Socrata, ArcGIS, CKAN and CARTO portals, not just one. Includes cities most permit scrapers skip: Raleigh, Nashville, Columbus, Cleveland, Detroit, Baltimore, Washington DC, Miami, Miami-Dade, Philadelphia, Boston, San Antonio, Collin County TX, Calgary and Edmonton.
  • Many cities per run. Pick cities, or whole states (e.g. TX adds Austin, Dallas, San Antonio and Collin County).
  • One clean schema. Every city's columns are mapped to the same fields, dates are YYYY-MM-DD, values are numbers, phones are (512) 555-0199.
  • Trade categories on every permit, from the work description first, so "Addition/Alteration" boilerplate doesn't hide what the job actually is.
  • Lead score (0-100) and grade, with the reasons spelled out.
  • Only new permits mode for daily schedules: you never pay twice for the same permit.
  • Contractor summary: one row per contractor with permit count, total value, main trades and contact details.
  • Never fails because one city is down. Other cities still deliver, and RUN_SUMMARY says what happened.
  • Honest coverage. The table below shows exactly which fields each city publishes.

What you get per permit record

FieldExample
lead_grade, lead_score, lead_reasonsHOT, 74, ["issued in the last 7 days", "contractor phone", ...]
issue_date, applied_date, days_since_issued2026-11-03, 2026-10-21, 2
primary_trade, tradesroofing, ["roofing", "remodel"]
permit_number, permit_type, work_class, description, statusBLDR-012345-2026, Building, Alterations/Repairs, Removing and replacing roof..., Issued
address, city, state, zip, latitude, longitude123 Main St, Raleigh, NC, 27609, ...
property_typeresidential / commercial
project_value18500
contractor_name, contractor_phone, contractor_email, contractor_license, contractor_addressOak City Roofing LLC, (919) 555-0142, ...
owner_builder, owner_name, applicant_namefalse, ...
description_phoneA phone number written inside the permit description (common in Nashville)
record_url, source_dataset, source_platformLink to the permit on the city's site when available

Example output

One permit record (illustrative values, real field names):

{
"record_type": "permit",
"record_id": "raleigh:BLDR-012345-2026",
"city_key": "raleigh",
"city": "Raleigh",
"state": "NC",
"country": "US",
"permit_number": "BLDR-012345-2026",
"permit_type": "Building",
"work_class": "Alterations/Repairs",
"description": "Remove and replace 24 sq of roofing with architectural shingles, ice and water shield at valleys",
"status": "Issued",
"primary_trade": "roofing",
"trades": ["roofing", "remodel"],
"property_type": "residential",
"address": "1234 Example Oak Dr",
"zip": "27609",
"latitude": 35.8432,
"longitude": -78.6382,
"applied_date": "2026-10-28",
"issue_date": "2026-11-03",
"expiration_date": "2027-05-02",
"days_since_issued": 2,
"project_value": 18500,
"contractor_name": "Oak City Roofing LLC",
"contractor_phone": "(919) 555-0142",
"contractor_email": "office@example.com",
"contractor_license": "NC-12345",
"contractor_city": "RALEIGH",
"contractor_state": "NC",
"owner_builder": false,
"owner_name": "J DOE",
"lead_score": 88,
"lead_grade": "HOT",
"lead_reasons": ["issued in the last 7 days", "contractor phone", "contractor email", "high-intent trade: roofing"],
"source_platform": "arcgis",
"source_dataset": "https://services.arcgis.com/v400IkDOw1ad7Yad/arcgis/rest/services/Building_Permits/FeatureServer/0",
"scraped_at": "2026-11-05T15:40:00+00:00"
}

One contractor summary row (outputMode: "contractors"):

{
"record_type": "contractor",
"city_key": "austin",
"contractor_name": "Example Air & Heat LLC",
"contractor_phone": "(512) 555-0188",
"permit_count": 13,
"total_project_value": 412000,
"top_trades": ["hvac", "new_construction"],
"latest_issue_date": "2026-11-04",
"recent_permits": [{ "permit_number": "2026-123456 MP", "issue_date": "2026-11-04", "address": "500 Example St", "primary_trade": "hvac", "project_value": 9800 }]
}

Trades: solar, roofing, pool, adu, new_construction, addition, demolition, hvac, electrical, plumbing, fire_protection, windows_doors, siding, fence_deck, foundation, elevator, sign, remodel (and other).

Building permit data coverage by city

✅ = filled on most permits · ◐ = filled on some permits · — = the city does not publish it. Measured on a live 7-day sample (November 2026; Montgomery County from its published columns, as its feed lagged that week). Contact fields appear only where the city itself publishes them.

KeyJurisdictionValueContractorPhoneEmailLicenseOwner
anaheimAnaheim, CA✅✅✅———
austinAustin, TX◐✅✅———
baltimoreBaltimore, MD✅—————
baton-rougeEast Baton Rouge Parish, LA◐◐———✅
bostonBoston, MA✅—————
calgaryCalgary, AB✅✅————
cambridge-maCambridge, MA✅✅————
chicagoChicago, IL✅✅———✅
cincinnatiCincinnati, OH✅✅————
clevelandCleveland, OH✅✅——✅—
collin-county-txCollin County, TX (Plano, Frisco, McKinney...)◐✅———✅
columbusColumbus, OH◐✅————
dallasDallas, TX——————
detroitDetroit, MI✅—————
edmontonEdmonton, AB✅—————
los-angelesLos Angeles, CA✅—————
marin-countyMarin County, CA✅✅——◐—
mesaMesa, AZ✅◐◐◐◐—
miamiMiami (city), FL✅✅————
miami-dade-countyMiami-Dade County, FL✅✅✅—✅✅
montgomery-county-mdMontgomery County, MD✅—————
nashvilleNashville, TN✅✅◐ *———
new-orleansNew Orleans, LA✅✅———✅
norfolkNorfolk, VA✅—————
nycNew York City, NY✅✅——✅✅
philadelphiaPhiladelphia, PA—✅———✅
raleighRaleigh, NC✅✅✅✅—✅
san-antonioSan Antonio, TX◐—————
san-franciscoSan Francisco, CA✅—————
seattleSeattle, WA✅—————
washington-dcWashington, DC—————✅

* Nashville phones come from description_phone (a number written in the permit text).

Want another city? Open an issue with a link to its open-data permit dataset.

Examples: new construction and contractor leads

Roofing and solar leads in Texas from the last 7 days, contractor known:

{
"states": ["TX"],
"lastNDays": 7,
"trades": ["roofing", "solar"],
"requireContact": "contractor"
}

Daily schedule: only new HOT/WARM permits over $50k in Raleigh and Nashville:

{
"cities": ["raleigh", "nashville"],
"lastNDays": 7,
"minProjectValue": 50000,
"minLeadGrade": "WARM",
"onlyNew": true,
"stateKey": "nc-tn-daily"
}

Most active pool and ADU contractors in Los Angeles, Anaheim and Marin over 90 days:

{
"cities": ["los-angeles", "anaheim", "marin-county"],
"lastNDays": 90,
"trades": ["pool", "adu"],
"outputMode": "contractors",
"maxResultsPerCity": 5000
}

Good to know

  • Freshness: cities publish with a 1-7 day lag (NYC and Montgomery County tend to be the slowest). For daily schedules use lastNDays: 7 with onlyNew: true: you get each permit once, as soon as it appears.
  • Newest first: results are newest-first per city, and maxResultsPerCity stops at that many matches.
  • Filters run after download for most fields, so very narrow filters over long date ranges scan more rows. The run summary shows rows scanned per city.
  • Owner-builder permits are flagged with owner_builder: true and can be excluded.
  • Run summary: every run writes RUN_SUMMARY to the key-value store with matched/scanned counts and any source errors per city.
  • Health check: run with healthCheck: true to see how recent each source's newest permit is.

Data and responsible use

All data comes from official government open-data portals (public records). A permit shows that work was approved, not that it has started or that a contractor is still needed. Names and phone numbers are as published by the city and are not verified. If you contact people from this data, you are responsible for following telemarketing, email and privacy rules that apply to you (for example TCPA, CAN-SPAM, do-not-call lists and state privacy laws).