Building Permits Scraper - National Permit Aggregator
Pricing
Pay per event
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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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_projectflag andminValuationUsdfilter 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
- 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. - Optionally set an
issuedAfter/issuedBeforedate range. The aggregator adds the appropriate$whereclause per jurisdiction. - 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.
- 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}
| Field | Type | Default | Description |
|---|---|---|---|
jurisdictions | array[string] | (all) | City/metro slugs. See supported list below. |
states | array[string] | — | 2-letter state codes. Expands to every supported metro in the state. |
issuedAfter | string | 2025-01-01 | YYYY-MM-DD lower bound on issue date. |
issuedBefore | string | "" | YYYY-MM-DD upper bound on issue date. Empty = no upper bound. |
minValuationUsd | integer | 0 | Drop permits with declared valuation below this. |
onlyNewConstruction | boolean | false | Keep only permits normalized as new (excludes repairs, alterations, demolitions). |
largeProjectThresholdUsd | integer | 100000 | Sets the is_large_project tag threshold. Does not filter. |
maxItems | integer | 100 | Maximum records to return across all jurisdictions. |
proxyConfiguration | object | (off) | Optional Apify proxy. Not needed for any supported portal. |
Supported Jurisdictions
| Slug | Metro | State |
|---|---|---|
nyc | New York City (DOB NOW Approved Permits) | NY |
los-angeles | Los Angeles | CA |
chicago | Chicago | IL |
austin | Austin | TX |
san-francisco | San Francisco | CA |
seattle | Seattle | WA |
dallas | Dallas | TX |
philadelphia | Philadelphia (CARTO SQL API) | PA |
new-orleans | New Orleans | LA |
baton-rouge | Baton Rouge | LA |
cincinnati | Cincinnati | OH |
mesa | Mesa | AZ |
san-diego-county | San Diego County | CA |
montgomery-county-md | Montgomery County | MD |
fort-collins | Fort Collins | CO |
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}
| Field | Type | Description |
|---|---|---|
permit_id | string | Jurisdiction-assigned permit number (primary key within source). |
source_jurisdiction | string | Slug of the jurisdiction that produced this record (nyc, los-angeles, etc.). |
source_url | string | Human-readable URL for the source dataset on the city portal. |
permit_type | string | Normalized type: new, addition, alteration, demolition, repair, or other. |
permit_type_raw | string | Raw permit-type string from the source (useful when you need the original city taxonomy). |
sub_type | string | commercial, residential, or mixed when the source exposes it. |
work_class | string | Work-class / scope category straight from the source. |
description | string | Free-text description of the work. |
status | string | Permit status (issued, finaled, expired, etc.) as reported by the source. |
issued_date | string | Date the permit was issued (YYYY-MM-DD). |
application_date | string | Date the permit was filed / applied for. |
finaled_date | string | Date the permit reached final status, when available. |
valuation_usd | number | Declared project valuation in USD. 0 if the source doesn't publish it. |
address | string | Street address of the project. |
city | string | City of the project. |
state | string | Two-letter state code. |
zip | string | ZIP / postal code. |
lat | number | Latitude (WGS84). |
lng | number | Longitude (WGS84). |
parcel_apn | string | Parcel / APN / tax-assessor ID when available. |
owner_name | string | Property owner name when published. |
applicant_name | string | Permit applicant name when published. |
contractor_name | string | General contractor / business name when published. |
contractor_license | string | Contractor state license number when published. |
is_new_construction | boolean | true when permit_type normalizes to new. |
is_large_project | boolean | true 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 workflow —
is_new_construction,is_large_project,minValuationUsd, and geocoded addresses cover the filters that construction, roofing, solar, and insurance vendors ask for.