Building Permits Scraper - Multi-City Open Data avatar

Building Permits Scraper - Multi-City Open Data

Pricing

from $1.00 / 1,000 results

Go to Apify Store
Building Permits Scraper - Multi-City Open Data

Building Permits Scraper - Multi-City Open Data

Scrape building & construction permits from 12 US cities' official open-data portals into one clean schema: permit number, type, status, issue date, address, work description, valuation, contractor, applicant & lat/lon. Free government APIs, no key. Filter by city, issue date & permit type.

Pricing

from $1.00 / 1,000 results

Rating

0.0

(0)

Developer

James Scott

James Scott

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

Pull building & construction permits from 12 US cities into one clean, normalized schema - no API key, no account, no anti-bot. Every large US city publishes permits on its own open-data portal with its own column names; this actor translates all of them into the same record so you can query dozens of jurisdictions as one feed.

Great for contractors, roofers, solar & HVAC installers, remodelers, suppliers, and real-estate investors who want fresh permit leads and market intelligence - and for analysts tracking construction activity.

Supported cities

CitySourcePortal
Chicago, ILSocratadata.cityofchicago.org
New York, NYSocratadata.cityofnewyork.us (DOB NOW)
Los Angeles, CASocratadata.lacity.org
San Francisco, CASocratadata.sfgov.org
Austin, TXSocratadata.austintexas.gov
Seattle, WASocratadata.seattle.gov
Cincinnati, OHSocratadata.cincinnati-oh.gov
Mesa, AZSocratacitydata.mesaaz.gov
Montgomery County, MDSocratadata.montgomerycountymd.gov
Baton Rouge, LASocratadata.brla.gov
Washington, DCArcGISmaps2.dcgis.dc.gov
West Sacramento, CAArcGISgis.cityofwestsacramento.org

All data comes from official government open-data APIs (Socrata and ArcGIS FeatureServer). These are free, public, key-less endpoints, so runs are fast and cheap and need only Apify's default datacenter proxy.

Normalized schema (one row per permit)

{
"city": "Austin, TX",
"permit_number": "2026-074994 BP",
"permit_type": "Building Permit - New",
"status": "Active",
"issue_date": "2026-07-10",
"application_date": "2026-04-20",
"address": "4102 CAT HOLLOW DR AUSTIN TX 78731",
"work_description": "New construction in-ground pool and spa.",
"valuation": 0.0,
"contractor_name": "LOHR Homes",
"applicant": "Gil Lohr",
"latitude": 30.3623778,
"longitude": -97.76570347,
"source": "data.austintexas.gov",
"source_type": "socrata",
"source_url": "https://abc.austintexas.gov/web/permit/public-search-other?...",
"scraped_at": "2026-07-10T21:56:20Z"
}

Not every city publishes every field (e.g. Chicago has no status column, Cincinnati has no coordinates, DC publishes fees rather than construction valuation) - missing values come back as null rather than being faked. Coordinates are populated wherever the source provides them (8 of 12 cities).

Input

FieldTypeDescription
citiesarrayWhich cities to scrape (multi-select). Leave empty to scrape all supported cities.
issuedAfterdateOnly permits issued on/after this date (YYYY-MM-DD). Applied server-side per city.
permitTypestringKeyword filter, matched against permit type and work description - e.g. roof, solar, pool, electrical, demolition.
maxItemsintegerMax permits per city (so 3 cities x 500 = up to 1,500 rows). Default 1,000.
proxyConfigurationobjectDefaults to Apify datacenter proxy - no residential proxy required.

Example input

{
"cities": ["austin", "los_angeles", "baton_rouge"],
"issuedAfter": "2025-01-01",
"permitType": "roof",
"maxItems": 500
}

This returns every roofing permit issued since Jan 2025 across Austin, LA, and Baton Rouge - a ready-made call list for a roofing company.

Why this actor

  • One schema, many cities. Stop writing a parser per portal - each city's fields are pre-mapped to the same keys.
  • Fresh + filterable. Newest-first, with server-side date filtering and keyword type filtering.
  • Complete records. Address, geo-coordinates, valuation, contractor/applicant, and a link back to the source record where available.
  • Zero anti-bot. Public government JSON APIs - reliable and cheap.
  • Export as JSON, CSV, Excel, or pull via the Apify API.

Extending it

Adding a city is a single entry in src/parser.py -> CITIES: point it at the Socrata dataset or ArcGIS FeatureServer, list the date_field, and map that portal's column names to the canonical keys. Address and permit-type can be composed from several columns. No fetch-layer changes needed.


This data is aggregated from public government records for market research and lead generation. It is not a consumer report and must not be used for any FCRA-covered purpose (credit, employment, insurance, or tenant screening).