US Building Permits Feed (37 Cities & Counties, One Schema)
Pricing
$3.00 / 1,000 permits
US Building Permits Feed (37 Cities & Counties, One Schema)
New building permits from official open-data portals in 37 US cities and counties (NYC, LA, Chicago, Philadelphia, San Antonio, DC, Boston, Denver, Miami and more) in one schema with trade tags (solar, roofing, HVAC, ADU...). Filter by trade, keyword, value. No API key.
Pricing
$3.00 / 1,000 permits
Rating
0.0
(0)
Developer
novadata
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
Fresh building permits from official city and county open-data portals, all in one consistent schema, with trade tags so you can pull just the solar, roofing, HVAC, electrical, pool or ADU jobs you care about.
37 jurisdictions (33 cities and 4 counties), including New York City, Los Angeles, Chicago, Philadelphia, San Antonio, San Jose, Austin, Columbus, Fort Worth, Washington DC, Denver, Nashville, Boston, Louisville, Baltimore, Detroit, Miami and Miami-Dade County. Every source is read live from the government's own public data service (Socrata, ArcGIS REST or CARTO APIs, or the city's official CSV export for Boston, San Antonio and San Jose). No API key, no login, no scraping of web pages.
Coverage
| City / county | Key | Official source | Contractor name | Project value | Permits found, last 30 days* |
|---|---|---|---|---|---|
| Chicago, IL | chicago | data.cityofchicago.org (Socrata) | Yes (by role) | Yes | 2,915 |
| New York City, NY | nyc | data.cityofnewyork.us (Socrata) | Yes (permittee business) | Yes | 5,000+ |
| Los Angeles, CA | los_angeles | data.lacity.org (Socrata) | No | Yes | 4,575 |
| San Francisco, CA | san_francisco | data.sfgov.org (Socrata) | No | Yes | 1,287 |
| Austin, TX | austin | data.austintexas.gov (Socrata) | Yes, with business phone | Some | 4,402 |
| Seattle, WA | seattle | data.seattle.gov (Socrata) | Some | Yes | 451 |
| New Orleans, LA | new_orleans | data.nola.gov (Socrata) | Yes | Yes | 1,300 |
| Baton Rouge, LA | baton_rouge | data.brla.gov (Socrata) | Some | Some | 650 |
| Philadelphia, PA | philadelphia | opendataphilly.org (CARTO) | Yes | No | 3,652 |
| Washington, DC | washington_dc | opendata.dc.gov (ArcGIS REST) | No | No | 3,418 |
| Columbus, OH | columbus | opendata.columbus.gov (ArcGIS REST) | Yes | Some | 3,949 |
| Fort Worth, TX † | fort_worth | data.fortworthtexas.gov (ArcGIS REST) | No | Some | 5,000+ |
| Nashville, TN | nashville | data.nashville.gov (ArcGIS REST) | Some | Yes | 925 |
| Denver, CO | denver | opendata-geospatialdenver.hub.arcgis.com (ArcGIS REST) | Yes | Yes | 458 |
| Louisville, KY | louisville | louisville-metro-opendata-lojic.hub.arcgis.com (ArcGIS REST) | Some | Yes | 1,175 |
| Baltimore, MD | baltimore | data.baltimorecity.gov (ArcGIS REST) | No | Yes | 2,456 |
| Detroit, MI | detroit | data.detroitmi.gov (ArcGIS REST) | No | Yes | 565 |
| Miami, FL | miami | datahub-miamigis.opendata.arcgis.com (ArcGIS REST) | Yes | Yes | 2,584 |
| Miami-Dade County, FL | miami_dade_county | gis-mdc.opendata.arcgis.com (ArcGIS REST) | Yes | Yes | 5,000+ |
| Minneapolis, MN | minneapolis | opendata.minneapolismn.gov (ArcGIS REST) | Yes | Some | 2,799 |
| Cleveland, OH | cleveland | data.clevelandohio.gov (ArcGIS REST) | Yes | Yes | 1,360 |
| Raleigh, NC | raleigh | data-ral.opendata.arcgis.com (ArcGIS REST) | Yes | Yes | 424 |
| Tacoma, WA | tacoma | www.cityoftacoma.org (ArcGIS REST) | No | Some | 742 |
| Bellevue, WA | bellevue | data.bellevuewa.gov (ArcGIS REST) | Yes | No | 823 |
| Boulder, CO | boulder | open-data.bouldercolorado.gov (ArcGIS REST) | Yes | Yes | 756 |
| Pierce County, WA | pierce_county | gisdata-piercecowa.opendata.arcgis.com (ArcGIS REST) | No | Some | 805 |
| Cincinnati, OH | cincinnati | data.cincinnati-oh.gov (Socrata) | Yes | Yes | 931 |
| Norfolk, VA | norfolk | data.norfolk.gov (Socrata) | No | Yes | 976 |
| Mesa, AZ | mesa | citydata.mesaaz.gov (Socrata) | Some | Yes | 353 |
| Cambridge, MA | cambridge | data.cambridgema.gov (Socrata) | No | No | 1,129 |
| Montgomery County, MD | montgomery_county_md | data.montgomerycountymd.gov (Socrata) | No | Yes | 603 |
| Marin County, CA | marin_county | data.marincounty.gov (Socrata) | Yes | Yes | 404 |
| Corona, CA | corona | corstat.coronaca.gov (Socrata) | No | Some | 263 |
| Everett, WA | everett | data.everettwa.gov (Socrata) | Yes | Yes | 651 |
| San Jose, CA ‡ | san_jose | data.sanjoseca.gov (official CSV export) | Yes | Some | 2,264 |
| San Antonio, TX | san_antonio | data.sanantonio.gov (official CSV export) | No | No | 5,000+ |
| Boston, MA | boston | data.boston.gov (official CSV export) | No | Yes | 263 |
* Rows the Actor read from each source for permits issued Sep 18 – Oct 18, 2026 (test on Oct 18, 2026), before your filters. Volumes change daily; this is a snapshot, not a guarantee.
† Fort Worth doesn't publish an issue date, so the date window uses the filing date (appliedDate) and issueDate is empty.
‡ San Jose's official feed only covers the last 30 days.
"Contractor name": Yes = most records name a contractor business, Some = a minority do, No = the source doesn't publish one.
Who it's for
- Contractors and installers (solar, roofing, HVAC, pools, windows) looking for neighbourhoods where work is happening, or for subcontracting partners
- Building-material suppliers and distributors finding active contractors
- Insurance, home-warranty and home-services marketers watching renovation activity
- Real-estate investors and analysts tracking new construction, ADUs and demolitions
- PropTech and data teams that want one schema instead of 37
Inputs
| Input | Example | Notes |
|---|---|---|
cities | ["philadelphia", "columbus", "miami"] | Keys from the table above. Empty = all 37 |
issuedWithinDays | 7 | Cities publish with a lag of 1 to 10 days |
trades | ["solar", "roofing", "hvac"] | Keyword-based tags (see below) |
keywords | ["heat pump"] | Matches permit type, work class and description |
minValue | 50000 | Declared project value in USD |
requireContractor | true | Drops permits without a contractor name (and so cities that don't publish one) |
includePersonNames | false | Off by default (see Privacy) |
dedupe | true | One row per permit number per city |
maxPerCity, maxItems | 200, 1000 | maxItems also caps your cost |
Example input: roofing, solar and HVAC permits from the last 2 weeks that name a contractor
{"cities": ["philadelphia", "columbus", "cleveland", "miami", "raleigh"],"issuedWithinDays": 14,"trades": ["solar", "roofing", "hvac"],"requireContractor": true,"maxItems": 1000}
Output
Every record has the same fields whatever the city. Fields a city doesn't publish are null. Example (real record from a test run):
{"city": "Austin","state": "TX","permitNumber": "2026-101809 MP","permitType": "Mechanical Permit","workClass": "Remodel","status": "Active","description": "INTERIOR REMODEL-RECEPTION AREA AND EXPANDING INTO 3500SF OFFICE SPACE THE REST OF THE SPACE IS PAINT AND FLOORING","issueDate": "2026-10-16T00:00:00.000","appliedDate": "2026-07-29T00:00:00.000","estimatedValue": null,"address": "5301 SOUTHWEST PKWY BLDG 1 UNIT 460","zip": "78735","latitude": 30.24357546,"longitude": -97.84150985,"contractorName": "Airco Mechanical","contractorTrade": "Mechanical Contractor","contractorPhone": "512XXXXXXX (redacted in this README)","contacts": [],"ownerName": null,"recordUrl": "https://abc.austintexas.gov/web/permit/public-search-other?t_detail=1&t_selected_folderrsn=13750684","tradeTags": ["hvac","remodel"],"sourcePortal": "https://data.austintexas.gov/d/3syk-w9eu","sourceApi": "https://data.austintexas.gov/resource/3syk-w9eu.json","scrapedAt": "2026-10-17T12:48:07+00:00"}
Trade tags
Tags come from keyword rules on the permit type, work class and description, such as "re-roof" → roofing or "heat pump" → hvac. They're useful but not perfect. A renovation that "removes the existing roof" gets tagged roofing, and cities with short permit types (Cambridge, Denver, Louisville) get fewer tags. Tags: solar, roofing, hvac, electrical, plumbing, ev_charger, generator, pool, new_construction, demolition, remodel, addition, adu, windows_doors, fence, sign, fire_protection, elevator, foundation.
Pricing
$3.00 per 1,000 permits, with no start fee. A weekly pull of 500 filtered leads costs $1.50.
Privacy and responsible use
- By default the Actor returns business information only: permit details, address of the work, and contractor business names. Homeowner names and sole-proprietor names are left out unless you turn on
includePersonNames. - For the 29 jurisdictions added in October 2026, owner names, applicant phone numbers and e-mail addresses are never downloaded or returned, even with
includePersonNameson. Where a city's contractor/applicant column can hold either a company or a person (Nashville, Minneapolis, Louisville, Miami-Dade, Bellevue, Mesa, Marin County, Everett), names that don't look like a business are dropped unlessincludePersonNamesis on. - Some cities list individual tradespeople as the contractor (common in New Orleans). Those names are part of the official permit record.
- Permit records are public, but public doesn't mean any outreach is allowed. Phone and text marketing is regulated (TCPA, Do-Not-Call), and some states restrict commercial use of public records. You're responsible for how you use the data.
- This Actor isn't affiliated with, endorsed by, or acting for any of these governments. Data is provided by each agency "as is", and the agencies don't warrant its accuracy, completeness or timeliness. Each record links to its source (
sourcePortal,sourceApi). Check the source before relying on a record.
Limits
- Coverage is the 37 jurisdictions above. More can be added one dataset at a time.
- Los Angeles refreshes weekly and Baton Rouge with a lag of about a week. A 7-day window can return few or no rows for them, so use 14 to 30 days.
- Washington DC is read from its 2025 and 2026 yearly layers, so windows reaching before Jan 1, 2025 return nothing older for DC.
- NYC reissues the same permit number on renewals, and San Antonio repeats a permit number per sub-record. With
dedupeon you get the latest row only. - Boston and San Antonio are read from their full official CSV exports (about 50 MB and 28 MB), which can add a minute or two to runs that include them. They're listed last, so runs that hit
maxItemsearlier skip them. - If one city's API is down, the run continues with the others, and the error is reported in the
RUN_SUMMARYrecord.