Building Permits Scraper - National Permit Aggregator avatar

Building Permits Scraper - National Permit Aggregator

Pricing

Pay per event

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

Pay per event

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day 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.
  • Pure API access — no browser, no proxies, no CAPTCHA. Just JSON.

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.
proxyConfigurationobject(off)Optional Apify proxy. Not needed for any supported portal.

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.

Does Building Permits Aggregator need proxies?

No. All supported portals (Socrata, CARTO) are public open-data services designed for third-party consumption. The actor defaults to direct requests — no proxy configuration needed.

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 Cloudflare 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 workflowis_new_construction, is_large_project, minValuationUsd, and geocoded addresses cover the filters that construction, roofing, solar, and insurance vendors ask for.