Building Permits Scraper - National Permit Aggregator avatar

Building Permits Scraper - National Permit Aggregator

Pricing

from $1.00 / 1,000 record scrapeds

Go to Apify Store
Building Permits Scraper - National Permit Aggregator

Building Permits Scraper - National Permit Aggregator

Aggregate building permits across 30+ US metros via city open-data portals. Normalized schema: permit type, valuation, geocoded address, contractor, owner. Built for construction leads, contractor sales, PropTech, and insurance workflows.

Pricing

from $1.00 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

16

Total users

3

Monthly active users

5 days ago

Last modified

Share

Building Permits Scraper - National Construction Permit Aggregator

Aggregate US building and construction permits across 15 major jurisdictions — NYC, LA, Chicago, Austin, San Francisco, Seattle, Dallas, Philadelphia, and more — into one normalized dataset. Returns permit type, valuation, geocoded address, contractor, owner, and large-project / new-construction flags drawn from roughly 10 million public records.


Building Permits Aggregator Features

  • Covers 15 US jurisdictions out of the box, spanning every major region from the Northeast to the Pacific. The registry grows by adding one entry per city.
  • Normalizes disparate open-data schemas (Socrata SODA v2, CARTO SQL) into a single 25-field output model. No per-city post-processing.
  • Round-robin pagination distributes results across jurisdictions — you see permits from every requested metro before any one dominates the budget.
  • Filters by issue date range, minimum valuation, new-construction-only, and state. Tags large projects above a configurable threshold.
  • Geocoded output: latitude/longitude on every record that the source portal publishes them on.
  • Direct API access — clean JSON out.

What Can You Do With National Permit Data?

  • Construction lead generation — Pull issued residential or commercial permits by metro, filter by valuation, and feed them into a CRM the same day.
  • Contractor sales (roofing, solar, HVAC) — Target homeowners whose permit descriptions reference re-roofing, solar installation, or HVAC replacement. The raw description field makes this easy.
  • PropTech and real-estate intelligence — Track building-activity trends by ZIP, by contractor, or by owner across metros without maintaining 15 separate ETL pipelines.
  • Commercial GC market intel — Use the is_large_project flag and minValuationUsd filter to isolate commercial-scale permits in a region.
  • Insurance and appraisal workflows — Pair permit history with property records to validate improvements, flag unpermitted work, or score risk.

How the Aggregator Works

  1. Pick a set of jurisdictions by slug (nyc, los-angeles, chicago, austin, ...) or by state (CA, TX, NY) — or leave both empty to pull from every supported metro.
  2. Optionally set an issuedAfter / issuedBefore date range. The aggregator adds the appropriate $where clause per jurisdiction.
  3. It round-robins through the jurisdictions, fetching a page of permits from each in turn. Pagination, rate limiting, and per-city transformation all happen automatically.
  4. Records come back in a single flat schema, ready for a warehouse, a CRM, or a CSV export.

Input

{
"jurisdictions": ["nyc", "los-angeles", "chicago"],
"issuedAfter": "2025-01-01",
"minValuationUsd": 50000,
"maxItems": 500
}
FieldTypeDefaultDescription
jurisdictionsarray[string](all)City/metro slugs. See supported list below.
statesarray[string]—2-letter state codes. Expands to every supported metro in the state.
issuedAfterstring2025-01-01YYYY-MM-DD lower bound on issue date.
issuedBeforestring""YYYY-MM-DD upper bound on issue date. Empty = no upper bound.
minValuationUsdinteger0Drop permits with declared valuation below this.
onlyNewConstructionbooleanfalseKeep only permits normalized as new (excludes repairs, alterations, demolitions).
largeProjectThresholdUsdinteger100000Sets the is_large_project tag threshold. Does not filter.
maxItemsinteger100Maximum records to return across all jurisdictions.

Supported Jurisdictions

SlugMetroState
nycNew York City (DOB NOW Approved Permits)NY
los-angelesLos AngelesCA
chicagoChicagoIL
austinAustinTX
san-franciscoSan FranciscoCA
seattleSeattleWA
dallasDallasTX
philadelphiaPhiladelphia (CARTO SQL API)PA
new-orleansNew OrleansLA
baton-rougeBaton RougeLA
cincinnatiCincinnatiOH
mesaMesaAZ
san-diego-countySan Diego CountyCA
montgomery-county-mdMontgomery CountyMD
fort-collinsFort CollinsCO

Example: pull one metro, high-value projects only

{
"jurisdictions": ["los-angeles"],
"issuedAfter": "2024-01-01",
"minValuationUsd": 500000,
"maxItems": 1000
}

Example: sweep every California jurisdiction

{
"states": ["CA"],
"issuedAfter": "2025-01-01",
"maxItems": 5000
}

Building Permits Output Fields

{
"permit_id": "M01370970-S1-PL",
"source_jurisdiction": "nyc",
"source_url": "https://data.cityofnewyork.us/Housing-Development/DOB-NOW-Build-Approved-Permits/rbx6-tga4",
"permit_type": "alteration",
"permit_type_raw": "Plumbing",
"sub_type": "",
"work_class": "Plumbing",
"description": "PLUMBING WORK IN CONJUNCTION WITH INTERIOR RENOVATION OF APARTMENT 15CD.",
"status": "Permit Issued",
"issued_date": "2026-04-17",
"application_date": "2026-04-12",
"finaled_date": "2026-05-19",
"valuation_usd": 18000,
"address": "400 WEST 12 STREET",
"city": "New York",
"state": "NY",
"zip": "10014",
"lat": 40.7371,
"lng": -74.009934,
"parcel_apn": "640-7501",
"owner_name": "Justin Minskoff",
"applicant_name": "EDUART KULLA",
"contractor_name": "AQUEDUCT MECHANICAL CORP",
"contractor_license": "002532",
"is_new_construction": false,
"is_large_project": false
}
FieldTypeDescription
permit_idstringJurisdiction-assigned permit number (primary key within source).
source_jurisdictionstringSlug of the jurisdiction that produced this record (nyc, los-angeles, etc.).
source_urlstringHuman-readable URL for the source dataset on the city portal.
permit_typestringNormalized type: new, addition, alteration, demolition, repair, or other.
permit_type_rawstringRaw permit-type string from the source (useful when you need the original city taxonomy).
sub_typestringcommercial, residential, or mixed when the source exposes it.
work_classstringWork-class / scope category straight from the source.
descriptionstringFree-text description of the work.
statusstringPermit status (issued, finaled, expired, etc.) as reported by the source.
issued_datestringDate the permit was issued (YYYY-MM-DD).
application_datestringDate the permit was filed / applied for.
finaled_datestringDate the permit reached final status, when available.
valuation_usdnumberDeclared project valuation in USD. 0 if the source doesn't publish it.
addressstringStreet address of the project.
citystringCity of the project.
statestringTwo-letter state code.
zipstringZIP / postal code.
latnumberLatitude (WGS84).
lngnumberLongitude (WGS84).
parcel_apnstringParcel / APN / tax-assessor ID when available.
owner_namestringProperty owner name when published.
applicant_namestringPermit applicant name when published.
contractor_namestringGeneral contractor / business name when published.
contractor_licensestringContractor state license number when published.
is_new_constructionbooleantrue when permit_type normalizes to new.
is_large_projectbooleantrue when valuation_usd meets or exceeds largeProjectThresholdUsd.

FAQ

How do I scrape building permits across multiple US cities?

Building Permits Aggregator ships with a registry of 15 jurisdictions and normalizes them into a single schema. Pick jurisdictions by slug, by state, or leave both empty to hit every supported metro in a single run.

How much does Building Permits Aggregator cost to run?

Building Permits Aggregator runs on pay-per-event pricing: $0.10 per actor start plus $0.001 per record. A 10K-permit metro sweep is about $10 including start. A 500K-permit national pull is about $500.

Can I filter by valuation or project type?

Yes. minValuationUsd drops records below a threshold. onlyNewConstruction restricts to permits normalized as new construction. largeProjectThresholdUsd controls the is_large_project tag that commercial-GC users typically filter on downstream.

What's the difference between permit_type and permit_type_raw?

permit_type is the normalized value — one of new, addition, alteration, demolition, repair, or other — so you can query consistently across cities. permit_type_raw is whatever the source portal shipped, for when you need the original taxonomy.

Which cities are coming next?

The most-requested additions are Boston, Houston, San Jose, Miami, and Denver. Boston is currently blocked by bot protection on its CKAN endpoint; the rest depend on per-city API research. File a request for the metro you need.


Need More Features?

Need a city that isn't in the registry, contractor-license cross-references, or a custom field? File an issue or get in touch.

Why Use the Building Permits Aggregator?

  • One schema, fifteen cities — You write one query and get normalized results from NYC, LA, Chicago, and a dozen more. No per-city ETL.
  • Cheap to run — $0.001 per record. A full metro sweep is coffee money, not a budget line item.
  • Built for the lead-gen workflow — is_new_construction, is_large_project, minValuationUsd, and geocoded addresses cover the filters that construction, roofing, solar, and insurance vendors ask for.

Further reading: Building Permit Data and Property Records: Where to Get Them in Bulk