US Building Permits Scraper - 38 City Sources avatar

US Building Permits Scraper - 38 City Sources

Pricing

from $4.00 / 1,000 permits

Go to Apify Store
US Building Permits Scraper - 38 City Sources

US Building Permits Scraper - 38 City Sources

Building permits from 38 official US city and county open-data portals in one schema, no API key. Each record: permit number, type, trade, issued date, address, valuation, contractor name, geocodes. Filter by trade, date or valuation, export CSV or JSON, schedule a daily feed. Pay per record.

Pricing

from $4.00 / 1,000 permits

Rating

0.0

(0)

Developer

Automation Craft

Automation Craft

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

1

Monthly active users

12 days ago

Last modified

Share

US Building Permits Scraper - 38 City Sources

This building permits scraper pulls fresh permits from 38 official US city and county open-data sources, normalized into one schema, classified by trade, and exported as JSON, CSV or Excel. Built for contractor lead generation (roofing, solar, HVAC, plumbing, pools), construction and real-estate market intelligence, and AI agents that need structured permit data.

Every record comes straight from the jurisdiction's official public portal (Socrata, ArcGIS, CKAN, Carto, or published city files). No third-party middlemen, no stale mirrors. Most sources update daily.

Quick start

  1. Pick your cities (or all).
  2. Set the date window, for example permits issued in the last 14 days (issuedAfter).
  3. Optionally filter by trade (roofing, solar), minimum valuation (minValuation) or search text.
  4. Click Start. Export JSON, CSV or Excel from the dataset, or run it on a schedule, through the API, or as an MCP tool for your AI agents.

Example: roofing leads in Texas metros

{
"cities": ["austin", "san-antonio", "arlington-tx"],
"issuedAfter": "2026-08-04",
"trades": ["roofing"],
"maxRecordsTotal": 500
}

Example: high-value commercial activity in Chicago

{
"cities": ["chicago"],
"issuedAfter": "2026-07-01",
"minValuation": 1000000
}

What you get

One normalized record per permit:

{
"city": "Denver",
"state": "CO",
"jurisdiction": "Denver, CO",
"permit_number": "2026-RESCON-0001780",
"permit_type": "Alteration/Tenant Finish",
"permit_subtype": "Residential",
"trade": "building",
"description": null,
"status": null,
"issued_date": "2026-08-10",
"applied_date": "2026-06-02",
"expires_date": null,
"finaled_date": null,
"address": "599 S Dale CT",
"zipcode": null,
"latitude": 39.69,
"longitude": -104.99,
"valuation": 8000,
"contractor_name": "SENNETT WINDOWS",
"contractor_license": null,
"contractor_phone": null,
"applicant_name": null,
"owner_name": null,
"source": "Denver Open Data — construction permits",
"source_dataset_url": "https://opendata-geospatialdenver.hub.arcgis.com"
}

Fields a jurisdiction does not publish come back as null. See the coverage table for exactly what each city provides. We never invent or "enrich" data that is not in the official record.

Why this Actor

  • One schema for 38 jurisdictions. Every city publishes permits differently: different portals, field names and date formats. This Actor refines them into a single normalized record, so contractor_name means the same thing in Seattle as it does in Miami-Dade.
  • Trade classification built in. Each permit is classified as roofing, solar, electrical, plumbing, mechanical, pool, demolition, fence, sign, fire, grading, building or other, so you can filter to exactly the leads you sell to.
  • Honest pricing. You pay per permit record delivered. Zero results, a broken city source or an invalid input means no per-record charges, ever.
  • Fresh. Verified update cadence: most sources publish within 1 to 3 days of issuance. The few that lag are flagged in the coverage table.

Coverage (verified live)

JurisdictionAddressValuationContractorLat/LonNotes
Atlanta, GA✓✓no✓recent-activity window (about 1 year)
Austin, TX✓partial✓ +phonepartial
Baltimore, MD✓partialno✓2019 to present
Arlington, TXno✓no✓no street address published
Baton Rouge, LA✓✓✓✓
Boston, MA✓✓no✓applicant published
Chicago, IL✓✓✓✓
Cincinnati, OH✓✓✓✓
Cleveland, OH✓✓✓ +license✓
Columbus, OH✓✓no✓applicant business published
Denver, CO✓✓✓✓no work description
Las Vegas, NV✓✓✓nono work description
Detroit, MI✓✓no✓
Los Angeles, CA✓✓no✓permits issued 2020+
Louisville, KY✓✓partial✓active/recent permits
Maricopa County, AZ✓nono✓unincorporated Phoenix metro
Marin County, CA✓✓✓ +license✓
Memphis, TN✓✓no✓
Mesa, AZ✓✓✓ +license✓
Miami, FL (city)✓✓✓✓
Miami-Dade County, FL✓✓✓ +phoneno
Minneapolis, MN✓✓✓✓
Montgomery County, MD✓✓no✓residential permits
Nashville, TN✓✓✓✓
New Jersey (statewide)no✓nonomunicipality-level, huge volume
New Orleans, LA✓✓✓✓
New York City, NY✓✓no✓DOB NOW; applicant + owner published
Philadelphia, PA✓no✓✓
Pittsburgh, PA✓✓partial✓owner published
Raleigh, NC✓✓✓ +phone✓past 180 days
Sacramento, CA✓✓✓nosource lags 1 to 2 weeks; current year
San Antonio, TXpartialnononoapplicant published
San Diego, CA✓partial✓✓current year
San Francisco, CA✓✓no✓
Seattle, WA✓✓no✓
Tempe, AZ✓✓partial +phone✓
Tucson, AZ✓✓no✓
Washington, DC✓nono✓current calendar year

"partial" means the official source populates the field on some records only, and "no" means the jurisdiction does not publish it at all. Contractor phone numbers come through on Austin, Raleigh, Tempe and Miami-Dade.

What this Actor CAN do

  • Pull permits issued in a date window across any of the 38 covered jurisdictions
  • Normalize official records into one schema with ISO dates and numeric valuations
  • Classify permits by trade and filter by trade, valuation or free text
  • Return contractor names, plus licenses and phones where the city publishes them
  • Feed spreadsheets, CRMs, dashboards or AI agents (works as an MCP tool via Apify)

What this Actor does NOT do

  • No jurisdictions beyond the coverage table. If a city is not listed, it is not covered yet. Coverage grows; suggest cities in the Issues tab.
  • No data the city does not publish. Fields marked "no" are null for that city. We do not buy, scrape or guess contact details from elsewhere.
  • No permit applications (except where noted). This is issued and approved permits.
  • No guarantee of same-day data where the official source itself lags (flagged in the table).
  • No historical backfill beyond each source's own window. DC is the current year, Raleigh is 180 days, most others go back years.

How much does it cost to scrape building permits?

Pay per event. Current prices:

EventFree and BronzeSilver (10% off)Gold and above (20% off)
Permit record (permit-record)$0.005$0.0045$0.004
Actor Start (apify-actor-start)$0.0001$0.0001$0.0001

The Actor Start event is charged once per run, one event per GB of memory, minimum one event, and carries no Store discount. So 1,000 fresh permit leads cost about $5 on Free and Bronze, $4.50 on Silver and $4 on Gold and above. Compare that with permit lead services at $79 to $249 per ZIP code per month, or permit data APIs starting at $599 a month. No subscription, no seat licenses, no sales call.

  • Zero matching permits means $0 in record charges. You only pay the start fee.
  • A city source being down means $0 for that city, and the run reports it in a status record.

Input

FieldTypeWhat it does
citiesarrayWhich jurisdictions to pull, or all
issuedAfterstringOnly permits issued on or after this date (YYYY-MM-DD)
issuedBeforestringOnly permits issued on or before this date (YYYY-MM-DD)
tradesarrayTrade filter, for example ["roofing", "solar"]
minValuationintegerMinimum declared project valuation in USD
searchTextstringFree-text match on permit description and type
maxRecordsPerCityintegerCap per jurisdiction
maxRecordsTotalintegerCap for the whole run
includeRawbooleanAttach the untouched source record to each row
socrataAppTokenstringOptional Socrata app token for higher rate limits

FAQ

Where does the building permit data come from?

Directly from each jurisdiction's official open-data portal: Socrata (Chicago, NYC, LA, SF, Seattle), ArcGIS (Denver, DC, Miami, Nashville), CKAN (Boston, San Antonio, Pittsburgh), Carto (Philadelphia) and official published files (San Diego). Every record carries its own source_dataset_url so you can trace it back.

Which cities and counties are covered?

38 jurisdictions, all named in the coverage table above, from Atlanta to Washington DC, including county sources such as Miami-Dade, Maricopa, Marin and Montgomery County, plus New Jersey statewide. If a city is not in the table it is not covered, and requests go in the Issues tab.

How fresh are the permits?

Most sources update daily, so the newest permits are typically 1 to 3 days old. Sacramento and a few others lag 1 to 2 weeks, and every lagging source is flagged in the coverage table.

Building permits are public records, published by the jurisdictions themselves on their own open-data portals specifically for public reuse. This Actor only reads those official public datasets.

How do I turn permit data into contractor leads?

Filter by trades to the work you sell (roofing, solar, mechanical, pool) and by minValuation to the job size you want, then work the address, contractor_name and, where the city publishes them, contractor_phone and contractor_license. Austin, Raleigh, Tempe and Miami-Dade publish contractor phone numbers, so a large share of those rows arrive ready to call.

Can I schedule a daily permit feed into my CRM?

Yes. Schedule the Actor in Apify Console with issuedAfter set to yesterday, and pipe new permits to Google Sheets, a webhook, Make, Zapier or your CRM.

Why does this Actor run with limited permissions?

Least privilege. It only reads and writes its own run storages, the dataset and key-value store Apify creates for each run, so it never needs access to the rest of your account. Everything it fetches comes from public official portals.

More data tools by Automation Craft