US Building Permits API: Construction, Roofing & Solar Leads avatar

US Building Permits API: Construction, Roofing & Solar Leads

Pricing

from $1.30 / 1,000 permits

Go to Apify Store
US Building Permits API: Construction, Roofing & Solar Leads

US Building Permits API: Construction, Roofing & Solar Leads

Newly issued building permits from 38 official US city & county open-data APIs (Chicago, NYC, LA, Boston, Philadelphia, Denver, Nashville, Austin, Seattle...). Filter by date, cost, ZIP, keyword and lead category: roofing, solar, HVAC, pool, ADU, new construction. Only-new mode for daily lead feeds.

Pricing

from $1.30 / 1,000 permits

Rating

0.0

(0)

Developer

Thomas Spriggs

Thomas Spriggs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

15 hours ago

Last modified

Share

Get newly issued building permits from 38 official US city and county open-data portals in one clean, normalized dataset. Use it as a building permits API, a daily construction leads feed, or a source of roofing leads, solar leads, HVAC leads, pool leads and contractor leads. No login, no API keys, no scraping of web pages: every record comes from a government's own documented open-data API (Socrata SODA or ArcGIS REST).

What you get

  • 38 sources, one schema. Chicago, New York City, Los Angeles, Boston, Philadelphia, San Antonio, Denver, Nashville, San Francisco, Seattle, Austin, Raleigh, Columbus, Detroit, Charlotte, Cincinnati, New Orleans, Mesa, Baton Rouge, Norfolk, Cambridge MA, Rockford IL, plus whole counties like Montgomery County MD, Collin County TX, Wake County NC, Maricopa County AZ, San Diego County CA and Pierce County WA. The full list is below.
  • Lead categories tagged automatically: solar, roofing, hvac, pool, adu, new_construction, demolition, electrical, plumbing, kitchen_bath, ev_charger, fence, windows_doors.
  • Filters: issue date range, minimum job cost, lead category, free-text keywords (e.g. "generator", "battery", "deck"), ZIP codes, and states.
  • Fast and cheap: date, cost, category and keyword filters are pushed into the source's own query (SoQL $where / ArcGIS where), so the actor downloads only the permits you asked for.
  • Only new since last run: schedule the actor daily or weekly and get only permits you haven't seen before. That makes it a ready-made lead feed for your CRM, Google Sheets, Zapier, Make or n8n.
  • Contractor and owner details where the city publishes them, e.g. contractor company, phone, email and license (Mesa, Raleigh, Austin, San Diego County, Baton Rouge), owner names (NYC, Baton Rouge, Everett, Collin County, Charlotte, Raleigh).

Who uses building permit data

  • Roofers, solar installers, HVAC, pool and remodeling contractors: find homeowners and properties with fresh permits in your service ZIP codes.
  • Suppliers and subcontractors: see which general contractors are pulling permits, and for how much.
  • Real-estate investors, proptech and market researchers: track new construction, ADUs and big-ticket remodels by city.
  • AI agents and data pipelines: a single, predictable JSON schema across 38 sources.

How to use

  1. Pick Cities / counties (or enter States, or tick All sources).
  2. Set Issued in the last N days (default 7) or an exact Date from / Date to.
  3. Optionally choose Lead categories, Keywords, Min estimated job cost and ZIP codes.
  4. Run it, then download the results as JSON, CSV, Excel or via the API.
  5. For a lead feed: tick Only new since last run and add a schedule (e.g. every morning).

Example inputs

Roofing permits in Texas from the last 30 days:

{ "states": ["TX"], "categories": ["roofing"], "daysBack": 30 }

Solar permits worth $10,000+ in California and Massachusetts:

{ "states": ["CA", "MA"], "categories": ["solar"], "minEstimatedCost": 10000, "daysBack": 30 }

Daily feed of new $100k+ projects in Chicago, Columbus and Detroit (schedule it daily):

{ "cities": ["chicago", "columbus", "detroit"], "minEstimatedCost": 100000, "daysBack": 3, "onlyNew": true }

Pool permits in Raleigh / Wake County:

{ "cities": ["raleigh", "wake-county"], "keywords": ["pool"], "daysBack": 60 }

Output

Each permit is one dataset item. Fields that a city doesn't publish are left out or null. Example (real record from Mesa, AZ, abridged):

{
"id": "mesa:PMT26-15222",
"cityKey": "mesa",
"sourceName": "Mesa, AZ",
"city": "Mesa",
"state": "AZ",
"permitNumber": "PMT26-15222",
"permitType": "Residential Permit",
"workType": "Renovations/Remodels",
"description": "Repair existing foundation including installa...",
"status": "Issued",
"issuedDate": "2026-10-15",
"appliedDate": "2026-08-18",
"estimatedCost": 15942,
"address": "1136 E GARNET CIR",
"fullAddress": "1136 E GARNET CIR, Mesa, AZ",
"lat": 33.391307,
"lon": -111.806394,
"contractor": "Groundworks",
"contractorPhone": "4806356133",
"contractorEmail": "phxpermits@groundworks.com",
"contractorLicense": "ROC358060",
"categories": [],
"sourceUrl": "https://citydata.mesaaz.gov/d/dzpk-hxfb",
"sourceLicense": "City of Mesa Terms of Use",
"scrapedAt": "2026-10-17T16:00:00+00:00"
}

Common fields: id, cityKey, sourceName, city, state, permitNumber, permitType, workType, description, status, issuedDate, appliedDate, estimatedCost, address, fullAddress, zip, lat, lon, contractor, owner, applicant, squareFeet, units, parcel, link, categories, sourceUrl, sourceLicense, scrapedAt. Turn on Include raw source record to also get every original column under raw.

A RUN_SUMMARY record in the run's key-value store shows how many permits each source returned.

Pricing

Pay per result: you pay only for permits saved to your dataset (plus a tiny per-run start fee). A run that finds nothing costs only the start fee. Use Max permits in total to cap the cost of any run.

Supported cities and counties

StateJurisdictioncities valueOfficial sourceUpdate cadence
AZMaricopa County, AZ (unincorporated)maricopa-countyArcGIS RESTdaily / near-daily
AZMesa, AZmesacitydata.mesaaz.govdaily / near-daily
CACorona, CAcoronacorstat.coronaca.govdaily / near-daily
CALos Angeles, CAlos-angelesdata.lacity.orgdaily / near-daily
CAMarin County, CA (unincorporated)marin-countydata.marincounty.govdaily / near-daily
CASan Diego County, CA (unincorporated)san-diego-countydata.sandiegocounty.govdaily / near-daily
CASan Francisco, CAsan-franciscodata.sfgov.orgdaily / near-daily
CODenver, CO (commercial)denver-commercialArcGIS REST (Denver Open Data)daily / near-daily
CODenver, CO (residential)denverArcGIS REST (Denver Open Data)daily / near-daily
ILChicago, ILchicagodata.cityofchicago.orgdaily / near-daily
ILRockford, ILrockfordillinois-edp.data.socrata.comupdated monthly; latest data can be several weeks old
ILUrbana, ILurbanaillinois-edp.data.socrata.comupdated monthly
LAEast Baton Rouge Parish, LAbaton-rougedata.brla.govdaily / near-daily
LANew Orleans, LAnew-orleansdata.nola.govdaily / near-daily
MABoston, MAbostondata.boston.gov (CKAN)daily / near-daily
MACambridge, MA (additions/alterations)cambridge-madata.cambridgema.govdaily / near-daily
MACambridge, MA (new construction)cambridge-ma-new-constructiondata.cambridgema.govdaily / near-daily
MACambridge, MA (solar installations)cambridge-ma-solardata.cambridgema.govdaily / near-daily
MDMontgomery County, MD (commercial)montgomery-county-md-commercialdata.montgomerycountymd.govdaily / near-daily
MDMontgomery County, MD (residential)montgomery-county-mddata.montgomerycountymd.govdaily / near-daily
MDPrince George's County, MDprince-georges-county-mddata.princegeorgescountymd.govupdated monthly
MIDetroit, MIdetroitArcGIS RESTdaily / near-daily
NCCharlotte / Mecklenburg County, NCcharlotteArcGIS RESTdaily / near-daily
NCRaleigh, NCraleighArcGIS RESTdaily / near-daily
NCWake County, NCwake-countyArcGIS RESTdaily / near-daily
NYNew York City, NY (DOB NOW)nycdata.cityofnewyork.usdaily / near-daily
OHCincinnati, OHcincinnatidata.cincinnati-oh.govdaily / near-daily
OHColumbus, OHcolumbusArcGIS RESTdaily / near-daily
PAPhiladelphia, PAphiladelphiaOpenDataPhilly / L&I (CARTO SQL)daily / near-daily
TNNashville / Davidson County, TNnashvilleArcGIS REST (Metro Nashville Open Data)daily / near-daily
TXAustin, TXaustindatahub.austintexas.govdaily / near-daily
TXCollege Station, TXcollege-stationdata.cstx.govdaily / near-daily
TXCollin County, TX (all cities, via Collin CAD)collin-county-txdata.texas.govdaily / near-daily
TXSan Antonio, TXsan-antoniodata.sanantonio.gov (CKAN, CC BY)daily / near-daily
VANorfolk, VAnorfolkdata.norfolk.govdaily / near-daily
WAEverett, WAeverettdata.everettwa.govdaily / near-daily
WAPierce County, WA (unincorporated)pierce-countyopen.piercecountywa.govdaily / near-daily
WASeattle, WAseattlecos-data.seattle.govdaily / near-daily

"Update cadence" is the publisher's typical refresh. Three sources publish monthly, so use a 30–60 day window for them.

Want another city? Open an issue with the link to its official open-data permits dataset and we'll add it.

Data, licensing and limitations

  • All data comes from official government open-data portals through their public, documented APIs. Licenses are listed per source above and in each record (sourceLicense). Many are public domain (e.g. Boston, Austin, Seattle, Cincinnati, Baton Rouge, Montgomery County MD, Cambridge MA, New Orleans).
  • Coverage, field names and update speed differ by city. The actor maps each portal into the common schema, but some cities don't publish contractor, cost or coordinates.
  • Denver publishes the permit class (New Building, Addition, Alteration...), valuation, contractor and neighborhood but no free-text description, so keyword searches rarely match Denver; use categories or cost instead. Nashville's applicant is the permit contact, usually the contractor.
  • Philadelphia and Maricopa County don't publish a job value, so estimatedCost is empty there and a Min estimated cost filter skips them.
  • "Estimated cost" is the job value the applicant declared to the city, and is often 0 for trade permits.
  • Lead categories are keyword-based tags on permit type, work type and description. They are useful for filtering but not perfect.
  • Contact data (names, phones, emails) is published by the cities themselves. If you use it for outreach, follow the laws that apply to you (e.g. TCPA, CAN-SPAM, state telemarketing rules and do-not-call lists).

FAQ

Is there a building permits API for all US cities? No national one exists. Each city or county publishes its own. This actor wraps 38 of the best official ones in a single API, and more are being added.

Can I get only permits I haven't seen yet? Yes. Tick Only new since last run. The actor remembers permit IDs (per source and per filter set) in a named key-value store in your account. Use a different State store name for each independent schedule.

How fresh is the data? Most sources update daily. The actor reads the portal live on every run, so you get whatever the city has published.

Do I need a Socrata app token? No. You can optionally add one for higher rate limits on very large pulls.

  • US Contractor License Lookup: FL, TX, NY, WA, OR, CT, CO, MD: check whether the contractor on a permit is licensed, active and (in Oregon) bonded and insured. 12 official state and city license databases, including about 114,000 active Florida DBPR licenses; search by name or license number, or build trade-contractor lead lists by city, ZIP and trade.
  • Bluesky Scraper: Posts, Profiles, Followers & Likers: search Bluesky posts and users, export followers, likers, replies and starter-pack members. No login needed. Useful for finding local contractors, homeowners and trade accounts talking about projects.

Built and maintained by Spriggs Data.