US building permits from seven city open data portals
Collects issued building permits from the official open data portals of seven US cities and counties, one row per permit in one schema: city, permit number, dates, permit type, work description, address, ZIP, estimated cost and status.
The covered portals are Seattle, Austin, San Francisco, Cincinnati, Baton Rouge, New Orleans and Montgomery County in Maryland. They are read live through the Socrata SODA API, so a run returns what each portal has at that moment. Filter by city, issue date range, minimum estimated cost, permit type words and keywords in the work description. Results are sorted newest issued first across all selected cities.
A run with empty input returns the 50 newest permits issued in the last 30 days across all seven. Each city keeps its own wording in permitType, workClass and category. Owner, applicant and contractor names are never requested from the portals.
Sample from a real run
5 of 50 rows (selected fields) from run S0IRtl8qKkdCIXWKE on 6 October 2026, exactly as the tool returned them.
city | state | permitNumber | issuedDate | permitType | category | workDescription | zip | estimatedCost |
|---|---|---|---|---|---|---|---|---|
| Baton Rouge | LA | 186995 | 2026-10-05 | Gas Test Permit (R) | Residential | gas test for my home | 70815 | 0 |
| Baton Rouge | LA | 186982 | 2026-10-05 | Electrical Permit (R) | null | Service rebuild | 70806 | 4000 |
| Baton Rouge | LA | 186935 | 2026-10-05 | Occupancy Permit (R) | Residential | residential occupancy | 70805 | 0 |
| Baton Rouge | LA | 186922 | 2026-10-05 | Occupancy Permit (R) | Residential | Refinish floors. Lights turned on. | 70805 | 0 |
| Baton Rouge | LA | 186920 | 2026-10-05 | Occupancy Permit (R) | null | 3 Bedroon 1 bath residential home rental property Lights to be turned on. | 70805 | 0 |
Fields
Every row has these fields. Field names are stable between versions.
| Field | What it holds |
|---|---|
city | City or county |
state | Two letter state code |
permitNumber | The permit or record number used by the city. |
issuedDate | Date the permit was issued, YYYY-MM-DD. |
appliedDate | Date the application was filed, when the city publishes it. |
permitType | Permit type as the city names it, for example "Building Permit", "Demolition", "Mechanical HVAC". |
workClass | New, addition, alteration, repair and similar, where the city has it. |
category | Residential or commercial class, or land use. |
workDescription | The city's description of the work (up to 2 000 characters). |
address | Street address of the site |
zip | Five digit ZIP. New Orleans publishes no ZIP |
estimatedCost | Estimated, declared or construction value in USD as the city records it. |
status | Current status, for example Issued, Active, Finaled. Baton Rouge publishes no status. |
latitude | Latitude of the site, null when missing |
longitude | Longitude of the site, null when missing |
permitUrl | Link to the permit in the city's own system (Seattle, Austin, Cincinnati). |
sourceDataset | Link to the dataset on the city's open data portal |
sourcePortal | Host name of the open data portal |
license | License of the dataset, as stated in the portal's metadata |
Input example
Paste it into the JSON tab of the actor in Apify Console, or send it to the Apify API.
{
"cities": [],
"onlyNew": false,
"issuedTo": "",
"keywords": [],
"issuedFrom": "",
"maxResults": 50,
"permitTypes": []
}What people use it for
- Contractors and suppliers. New construction, additions and remodels above a cost threshold, every morning, with
onlyNewset to true so each run returns only permits not delivered before. - Solar, roofing and HVAC companies. Filter on
keywordssuch as["solar"],["reroof"]or["heat pump"]. - Market research. Count permits per ZIP or per month to see where building activity grows.
Price
3 USD per 1 000 permits, plus Apify platform usage.
A run with the default input returns at most 50 permits, so it costs at most 0.15 USD in results. The run on 6 October 2026 shown above returned 50 permits in 9 seconds, which is 0.15 USD. maxResults caps every run.
Run it on a schedule
Set onlyNew to true and add the actor to a schedule in Apify Console (for example the cron expression 0 7 * * * for 07:00 every day). The actor remembers what it has already delivered for the same input, in a named key-value store in your own Apify account (nightwave-state-us-building-permits), and each run returns and charges only what is new. The first run returns everything in the selection. A run with nothing new finishes with 0 rows and costs nothing beyond platform usage.
Source and license
All data comes from the Socrata Open Data API of each city's own portal, for example data.seattle.gov and data.brla.gov. Every row links to its dataset in sourceDataset. Chicago, New York City and Los Angeles are not included, since their permit datasets do not carry a public domain license in the portal metadata. The tool is not affiliated with or endorsed by any of the cities.
The license of each dataset was read from the portal's own metadata and is repeated in the license field of every row: Public Domain for Seattle, Cincinnati, Baton Rouge and Montgomery County, Public Domain U.S. Government for Austin, the Open Data Commons PDDL for San Francisco and CC0 1.0 for New Orleans. These allow copying, changing and commercial reuse without permission.
Try it
The tool runs on Apify. Apify handles your account, the runs and the payment, and you can try it with the input above before you schedule anything.
Built and maintained by Nightwave AB. Questions or bugs: kontakt@nightwave.se