Building Permits Scraper — Construction Leads, US & Canada
Pricing
from $1.20 / 1,000 permits
Building Permits Scraper — Construction Leads, US & Canada
Building permits from city open data in Chicago, New York, Los Angeles, San Diego County, Seattle, Austin, Calgary and more: work, address, value, contractor company, dates. Keyword, value and new-since-last-run filters. No login.
Pricing
from $1.20 / 1,000 permits
Rating
0.0
(0)
Developer
Northbell
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Get newly issued building permits from the official open data of Chicago, New York City, Los Angeles, Seattle, Austin, Cincinnati, Baton Rouge, New Orleans, Montgomery County (MD), Cambridge (MA), Mesa, San Diego County, Pierce County (WA), Calgary and Edmonton in one run, one clean row per permit: permit number and type, the work description, issue and application dates, the address and coordinates, the project value, housing units and floor area where given, the contractor company and the permit's status. $1.50 per 1,000 permits, no login, no API key.
Run it again, or put it on a daily schedule, and every row also tells you whether the permit is new since the last run (isNewSinceLastRun). Set What to return to Only new and you pay only for permits you have not seen before. In the week of 15–21 Oct 2026 these lists issued about 7,000 permits (New York City 3,046, Austin 1,166, Chicago 691, Los Angeles 541, Calgary 335, Edmonton 323, New Orleans 300 and the rest), so the useful question is what was issued since yesterday.
Try it now. The input is already filled in. Press Start: permits issued in the last 7 days in Chicago and Seattle, 20 per city — 40 permits in about 6 seconds, for $0.07 (measured on 28 Oct 2026). Three of the rows:
city | permitType | issuedOn | valuation | description |
|---|---|---|---|---|
| chicago | PERMIT - NEW CONSTRUCTION | 2026-10-26 | 625,000 | SC 2019 CBC. ERECT A 2 STORY, TWO DWELLING UNIT TYPE VA FRAME APARTMENT BUILDING WITH A BASEMENT … |
| seattle | New | 2026-10-23 | 810,118 | Construct new one family dwelling per plan |
| seattle | Addition/Alteration | 2026-10-23 | 461,717 | Construct addition and substantial alterations in existing one family dwelling per plan. |
Each row also has the address, ZIP, coordinates, contractor company (when the city publishes it) and a link to the permit. Seattle publishes a few days behind and Pierce County about a week behind, so their newest permits are a few days old.
What you get
| Field | What it is |
|---|---|
city, cityName, region, country | the list the permit came from (chicago, new-york…), its name, the state or province and US / CA |
isNewSinceLastRun | true / false whether the permit is new since your previous run of the same search (null on the first run) |
permitNumber, permitType, workType, category | the city's permit number, its type (PERMIT - RENOVATION/ALTERATION, Plumbing Permit…), the kind of work (New, Remodel, Addition/Alteration…) and residential / commercial where the city says so |
description | the work description as the city wrote it |
status, appliedOn, issuedOn | the permit's status and the application and issue dates |
address, zip, latitude, longitude | where the work is |
valuation, currency | the stated project value (job value, valuation or construction cost) in USD or CAD |
housingUnits, squareFeet, fees | housing units added, floor area and permit fees, where the city gives them |
contractor, contractorHidden | the contractor's company name (see Notes); contractorHidden is true when the city listed a contractor whose name looks like a person's, which is not returned |
permitUrl | the city's page for the permit, where one exists (Seattle, Austin, Cincinnati) |
source, license, retrievedAt | the open data list it came from, its licence, and when the row was collected |
Run it again and again
- On a schedule: save your input as a task and add a Schedule: the same cities and keywords every morning. Send each run to Google Sheets, Slack or your CRM with an integration on the task.
- Watch for changes: Set What to return to Only permits that are new since the last run.
- In bulk: All 15 cities and counties, keywords and a minimum project value in one run.
Use it for
- Construction leads: roofers, solar installers, pool builders, HVAC and supply companies: a daily list of new permits matching your trade, with the address and project value
- Market tracking: new construction and housing units added by city, week by week
- Competitor watch: which contractor companies are pulling permits, where and for how much
- Real estate research: renovation and addition activity around the properties you follow
Input
{"cities": ["chicago", "seattle", "austin"],"issuedWithinDays": 3,"keywords": ["solar", "roof"],"minValuation": 10000,"maxItemsPerCity": 200,"output": "new"}
- cities:
chicago,new-york,seattle,los-angeles,austin,cincinnati,baton-rouge,montgomery-county-md,montgomery-county-md-commercial,new-orleans,cambridge,cambridge-new-construction,mesa,san-diego-county,pierce-county-wa,calgary,edmonton. Empty means all of them. - issuedWithinDays (default 7, up to 365) — only permits issued in the last N days.
- keywords: looked for in the work description and the permit type, by the city's own server. Lines are combined with OR, words on one line with AND.
- categories:
residentialand/orcommercial. Only lists that say which kind a permit is can match (Seattle, Los Angeles, Austin, Baton Rouge, Montgomery County, New Orleans, Cambridge additions, San Diego County, Pierce County, Calgary, Edmonton). - minValuation: permits with no stated value are left out when you set it.
- maxItemsPerCity (default 200, up to 5,000) — newest first, per list.
"Is it new" is remembered per search — the same cities, keywords, categories and minimum value — in a named key-value store in your Apify account. A permit counts as new when your previous run did not return it and it was issued no more than 3 days before the newest permit that run returned for that city: cities add permits to their lists a day or two late (New York City publishes some days in two parts), and those still come through. Permits that the previous run left out because of Maximum permits per city are remembered as seen and do not come back as new. A permit added more than 3 days late can be missed by Only new; a run without it shows everything in the window.
City of Chicago data disclaimer (required by the City of Chicago's data terms of use): "This site provides applications using data that has been modified for use from its original source, www.cityofchicago.org, the official website of the City of Chicago. The City of Chicago makes no claims as to the content, accuracy, timeliness, or completeness of any of the data provided at this site. The data provided at this site is subject to change at any time. It is understood that the data provided at this site is being used at one's own risk."
Pricing
$1.50 per 1,000 permits, plus $0.01 per run. Error rows (a city's server not answering) are free. With Only new, permits you have already seen are skipped and not charged.
Notes
- Source: each city's own open data portal (Socrata), read through its public JSON API (
/resource/<dataset>.json), which needs no login or key. The robots.txt of every portal allows it and asks for one request a second, which the Actor keeps per portal. Each row names its dataset and licence: public domain for Seattle, Austin, Cincinnati, Baton Rouge, Montgomery County, New Orleans (CC0) and Cambridge (ODC-PDDL); the city's open data terms for Chicago, New York City, Los Angeles, Mesa, San Diego County and Pierce County; the Open Government Licence for Calgary and Edmonton. - No owners, applicants or contact persons. The lists also carry owner names, applicant names and contacts' names, phones and emails (Austin, Baton Rouge, New Orleans, Chicago, New York City and others); the Actor never returns them. A contractor is returned only when the name carries a company marker (LLC, Inc., Construction, Roofing, Electric, Builders…); a name that looks like a person's (often a sole proprietor or the owner doing their own work) comes back as
contractor: nullwithcontractorHidden: true, and a person's name written after the company name (… LLC - name,… LLC, name) is cut off. In a live read of 40 permits per list on 23 Oct 2026, 36 of 493 contractors were hidden this way. - The address is the location of the permitted work, as the city publishes it. Treat it with the care any property-level data needs: for example, check the laws on unsolicited marketing where you use it.
- Fill rates differ by city. In that read every list had a description and an address; the project value was given on 33 to 40 of 40 permits in most lists but on 1 of 40 in Austin (trade permits carry none) and 28 of 40 in Baton Rouge and New Orleans; coordinates were missing on most Cincinnati and half of Austin permits. Los Angeles publishes about once a week, so its newest permits can be several days old.
- Reading 40 permits from each of the 15 lists took 64 seconds. If a city does not answer, the Actor retries twice, then adds a free error row for that city and goes on with the others.
For newly registered companies from US state registries, see US New Business Registrations.
For AI agents
{"cities": ["chicago"], "issuedWithinDays": 3, "maxItemsPerCity": 5} returns up to 5 rows, newest first, each with permit type, work description, address, project value and contractor company. Rows have type: permit or error. Fields a city does not publish are null, never missing. Schedule the same input daily with "output": "new" to get only permits issued since the previous run.