Building Permits Scraper: Construction Leads from 11 US Cities
Pricing
from $2.00 / 1,000 permit records
Building Permits Scraper: Construction Leads from 11 US Cities
Newly issued building permits from 11 US city and county open-data portals: address, type, description, valuation, dates and contractor. Filter by city, keyword (solar, roof, pool, ADU) and value.
Pricing
from $2.00 / 1,000 permit records
Rating
0.0
(0)
Developer
Kamal Katul
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Security
Limited permissionsShare
Building Permits Scraper: New Construction Leads from 11 US Cities
Get newly issued building permits from official city open-data portals in one clean, unified format: permit number, type, work description, address, ZIP, map coordinates, declared project value, square footage, housing units and the contractor's business name (plus phone, email and license where the city publishes them).
Instead of learning 11 different portals, column names and date formats, you pick the cities, a date window and your filters, and get one spreadsheet-ready dataset.
Use cases
- Roofers, solar installers, residential HVAC, pool, window and remodeling companies: find homes that just got a permit in your trade or in your area.
- Building-material suppliers and equipment rental: reach the general contractors who just started a job worth more than $100k.
- Real-estate investors and analysts: track new construction, ADUs and multifamily units by ZIP.
- Insurance, lending and proptech: monitor renovation and new-build activity.
- Market researchers and journalists: compare construction activity across cities.
FAQ
Which cities are covered? Austin, Dallas, Chicago, New York City, Los Angeles, San Francisco, Seattle, Baton Rouge, Cincinnati, Mesa and Marin County, from each city's official open-data portal.
Why does one permit number appear more than once? Some cities issue several permits under one job number (for example foundation and structural) or list one permit at several addresses. Each is a separate record. Exact duplicate rows are removed and never charged.
How far back can I go? Up to 10 years for most cities. Dallas publishes only about the latest 92 days through its API.
Do I need an API key? No. A free Socrata app token is optional and only helps with very large pulls.
Supported cities
| Key | City | Contractor data |
|---|---|---|
austin | Austin, TX | name, trade, phone |
dallas | Dallas, TX | name (when filled), latest 92 days only |
chicago | Chicago, IL | all contractors by role (general, electrical, plumbing...) |
new-york | New York City, NY (DOB NOW) | applicant business, license |
los-angeles | Los Angeles, CA | none published |
san-francisco | San Francisco, CA | none published |
seattle | Seattle, WA | name (some permits) |
baton-rouge | Baton Rouge / East Baton Rouge Parish, LA | name |
cincinnati | Cincinnati, OH | company name |
mesa | Mesa, AZ | name, phone, email, license |
marin-county | Marin County, CA | name, license |
All sources are official government open-data portals (Socrata SODA API). No login, no browser, no proxies.
How to use
- Pick one or more Cities.
- Choose Issued in the last N days (default 7) or an exact Issued from / to date range.
- Optionally narrow it down: Description contains (e.g.
solar,roof,pool,ADU,new construction), Minimum project value, Residential or commercial, Only permits with a contractor name. - Set Max permits per city and run. Download as CSV, Excel or JSON, or connect via API, Zapier or Make. Schedule it daily or weekly for a fresh lead feed.
Input
| Field | Type | Description |
|---|---|---|
cities | array | City keys from the table above. Required. |
daysBack | integer | Issued within the last N days (default 7). |
dateFrom / dateTo | string | Exact window, YYYY-MM-DD. |
keywords | array | Keep permits whose description contains any of these words. |
excludeKeywords | array | Drop permits whose description contains any of these words. |
permitClass | string | any, residential or commercial (best effort; uses the city's class/type and, where missing, the description). |
minValuation | integer | Minimum declared project value in USD. |
requireContractor | boolean | Only permits that list a contractor. |
maxPermitsPerCity | integer | Newest-first cap per city (default 100). |
socrataAppToken | string | Optional free Socrata token for very large pulls. |
Example:
{"cities": ["chicago", "new-york", "seattle"],"daysBack": 14,"keywords": ["roof", "solar"],"minValuation": 10000,"permitClass": "residential","maxPermitsPerCity": 50}
Output
Every permit has the same fields regardless of city (null when the city does not publish that value). Real example from a test run on 2026-10-28:
{"city": "Chicago","state": "IL","permitNumber": "100000000","permitType": "PERMIT - NEW CONSTRUCTION","permitClass": null,"workType": null,"description": "SPR 2019 CBRC. ERECT A NEW 2 STORY SINGLE FAMILY RESIDENCE W/ BASEMENT, REAR PATIO AND DETACHED 2 CAR FRAME GARAGE WITH 2 EVSE-READY PARKING SPACE WITH ROOF DECK ACCESSED BY 1-STORY OPEN STAIR. INSTALL 6 FEET HIGH WOOD FENCE AND 6 FEET IRON FENCE. ALL WORK AS PER PLANS.","status": "ACTIVE","appliedDate": "2026-07-08","issuedDate": "2026-10-26","address": "100 N EXAMPLE AVE","zip": null,"latitude": 41.88,"longitude": -87.63,"valuation": 375000,"squareFeet": null,"housingUnits": null,"contractorName": "EXAMPLE CONSTRUCTION INC","contractorTrade": "GENERAL CONTRACTOR","contractorPhone": null,"contractorEmail": null,"contractorLicense": null,"contractors": [{"name": "EXAMPLE ELECTRIC INC","role": "ELECTRICAL"},{"name": "EXAMPLE CONSTRUCTION INC","role": "GENERAL CONTRACTOR"},{"name": "EXAMPLE PLUMBING INC","role": "PLUMBER/PLUMBING"},{"name": "EXAMPLE MECHANICAL INC","role": "REFRIGERATION"},{"name": "EXAMPLE MECHANICAL INC","role": "VENTILATION"}],"sourceUrl": null,"datasetUrl": "https://data.cityofchicago.org/d/ydr8-5enu","scrapedAt": "2026-10-28T13:11:21.095Z"}
A RUN_SUMMARY record in the key-value store shows, per city, how many rows were read, filtered out and saved, plus any source errors. If one city portal is down, the other cities still finish.
Pricing
Pay per result: $0.002 per permit saved ($2 per 1,000). No start fee, and you are never charged for permits removed by your filters. Set a maximum spend per run in the Apify console and the Actor stops cleanly at your limit.
Limits and tips
- Cities publish permits with a delay of 1 to 7 days, so "last 1 day" can be empty. Use 7 days or more for a reliable feed.
- Valuation is the value declared by the applicant and is sometimes $0 or $1 for small jobs.
- Dallas stores dates as text, so the Actor limits Dallas to the latest 92 days.
- The residential/commercial filter is a best-effort heuristic because each city classifies permits differently.
- Scope: permits for HVAC, mechanical or building-systems work on commercial or non-residential properties are not included. Residential permits of every trade are included.
- Want another city or county? Open an issue with its open-data link.
Privacy and legal
Building permits are public records published by each city for reuse (for example, Austin's dataset is Public Domain). This Actor deliberately does not output property-owner or applicant names, only businesses acting as contractors, which is what the permit records them as. Use the data in line with the portal's terms and with anti-spam and telemarketing laws (CAN-SPAM, TCPA) when contacting businesses.
Not affiliated with any city government or with Socrata/Tyler Technologies.