US Building Permits Scraper: New Permit & Contractor Leads avatar

US Building Permits Scraper: New Permit & Contractor Leads

Pricing

$3.00 / 1,000 results

Go to Apify Store
US Building Permits Scraper: New Permit & Contractor Leads

US Building Permits Scraper: New Permit & Contractor Leads

Search and monitor new building permits in NYC, Chicago, LA, San Francisco, Seattle, Austin and more from official city open-data portals, no API key. Filter by keyword, work type (roofing, solar...), ZIP and cost. Flat JSON with address, cost, contractor, owner. 'Only new' mode for alerts.

Pricing

$3.00 / 1,000 results

Rating

0.0

(0)

Developer

GovData Feeds

GovData Feeds

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Get new US building permits from nine city open-data portals in one format: address, category, estimated cost, contractor and owner, ready for lead lists and alerts.

Rate your experience: if you have used this Actor, you can tell us how it went on the reviews page. Honest feedback of any kind helps us improve it.

What it does and who it is for

This Actor reads the official open-data portals of New York City, Chicago, Los Angeles, San Francisco, Seattle, Austin, Cincinnati, Baton Rouge and Mesa and returns one flat record per permit: city, permit number and type, an automatically detected category (new construction, roofing, solar, electrical, plumbing, HVAC, pool and more), status, description, address, ZIP, issue and application dates, estimated cost, contractor name, license and phone, applicant and owner, use type, units, latitude/longitude and a link.

Filter by city, keyword, category, ZIP code, minimum project cost and issue date range. Turn on Only new for a daily lead feed.

Use cases

  • Roofers, solar installers, electricians, HVAC and pool companies: find properties where work was just permitted.
  • Building-materials suppliers and subcontractors: reach contractors with active projects.
  • Real-estate investors and appraisers: track construction activity by area.
  • Lenders, insurers and analysts: monitor new construction and renovations.
  • AI agents: answer "which solar permits were issued in Austin this week?".

Why use this instead of the free official site or API

The underlying data is public and the official sources are free. What this Actor adds is convenience: nine different city feeds become one consistent format.

What you needOfficial site / APIThis Actor
Covering several citiesEach city has its own portal, column names and quirksOne input, one record format for all nine cities
Finding a type of jobFree-text search per portalA category field (roofing, solar, electrical and others) detected from the permit text
Lead listsExport each portal and merge by handContractor, owner and cost columns in the same place for every city
Only newly issued permitsCompare exports yourselfOnly new mode with a named alert

If you only need a single lookup now and then, the official site is fine. If you want the same data on a schedule, as flat rows you can feed to a spreadsheet, CRM or agent, this saves the glue work.

Data fields

FieldTypeWhat it contains
citytextCity that issued the permit.
statetextState.
permitNumbertextPermit number from the city.
permitTypetextPermit type as named by the city.
categorytextCategory detected by the Actor from the permit text (new_construction, roofing, solar and so on).
statustextPermit status as published by the city.
descriptiontextDescription of the work.
addresstextProperty address.
ziptextZIP code, when the city publishes it.
issuedDatedateDate the permit was issued.
appliedDatedateDate the permit application was filed, when published.
estimatedCostintegerEstimated project cost in USD, when published.
contractorNametextContractor name, when published.
contractorLicensetextContractor license number, when published.
contractorPhonetextContractor phone, when published.
applicantNametextApplicant name, when published.
ownerNametextOwner name, when published.
useTypetextUse type (for example Residential).
unitsintegerNumber of dwelling units, when published.
latitudenumberLatitude, when published.
longitudenumberLongitude, when published.
urltextLink to the permit record or the city portal.
sourcetextThe open-data dataset the record came from.
scrapedAtdatetimeWhen the Actor collected the record (UTC).

Fields a source does not publish are null. Cities publish different columns, so contractor, cost, owner and ZIP are only filled where the city provides them.

"New since yesterday" alerts

Turn on Only new and the Actor remembers what it has already returned, so each scheduled run delivers only records you have not seen before.

  1. Open the Actor in Apify Console and set the input, with Only new since last run switched on and a fixed alert name (stateKey). Example input:
{
"cities": ["nyc", "chicago", "la", "sf", "seattle", "austin"],
"categories": ["roofing", "solar"],
"issuedWithinDays": 7,
"maxResultsPerCity": 200,
"maxResults": 1000,
"onlyNew": true,
"stateKey": "daily-roofing-solar-permits"
}
  1. Click Save as task, then open Schedules, create a schedule (for example the cron expression 0 7 * * * for every day at 7:00 in the time zone you pick) and add the task to it.
  2. Under the task's Integrations, send the results to Slack, email, Google Sheets, a webhook or your own system.

Cities update their portals at different speeds. A 7-day window with Only new keeps late-posted permits from being missed.

The first run returns everything that matches your window (all matching permits issued in the last 7 days); later runs return only unseen records. Use a different alert name for each task so each keeps its own memory. A run with nothing new returns no results.

Cost per run

This Actor uses pay-per-result pricing: $3.00 per 1,000 results ($0.003 per result), with the Apify platform fee included. You are charged for the records a run returns and nothing is added on top for platform usage. A run that finds nothing new returns no results, so it has no per-result charge. The Max results input caps what a run can return (and so what it can cost).

Worked example: a daily alert that returns 60 new permits costs 60 × $0.003 = $0.18 per run, about $5.40 for a 30-day month. A pull of 10,000 permits costs $30.00.

The pricing is configured in Apify Console; the Pricing tab on this page is the authoritative source if it ever differs from this text.

Example input and output

The output below comes from real test runs of this Actor. Email addresses are masked and very long text is shortened here; the Actor returns the full values.

Input used for the example:

{
"cities": ["austin", "seattle", "chicago", "nyc"],
"keyword": "solar",
"categories": ["solar"],
"issuedWithinDays": 14,
"minProjectCost": 0,
"onlyNew": true,
"stateKey": "solar-permits",
"maxResultsPerCity": 3,
"maxResults": 50
}

Output (the first 2 records of a test run):

[
{
"city": "Austin",
"state": "TX",
"permitNumber": "2026-132984 EP",
"permitType": "Electrical Permit - Auxiliary Power",
"category": "solar",
"status": "Active",
"description": "Tindall 40-25134 - Install new _6.9__kW rooftop solar system to existing residential only using backfed breaker only.",
"address": "6637 QUINTON DR",
"zip": "78747",
"issuedDate": "2026-10-21",
"appliedDate": "2026-10-08",
"estimatedCost": null,
"contractorName": "Power Home Remodeling",
"contractorLicense": null,
"contractorPhone": "(610) 874-5000",
"applicantName": null,
"ownerName": null,
"useType": "Residential",
"units": 1,
"latitude": 30.1525935,
"longitude": -97.74191386,
"url": "https://abc.austintexas.gov/web/permit/public-search-other?t_detail=1&t_selected_folderrsn=13786332",
"source": "data.austintexas.gov dataset 3syk-w9eu",
"scrapedAt": "2026-10-23T12:12:08.244Z"
},
{
"city": "Austin",
"state": "TX",
"permitNumber": "2026-052150 EP",
"permitType": "Electrical Permit - Auxiliary Power",
"category": "solar",
"status": "Active",
"description": "Solar installation at 5973 Hi Line Rd SHM Emerald Point.",
"address": "5973 HI LINE RD",
"zip": "78734",
"issuedDate": "2026-10-21",
"appliedDate": "2026-04-27",
"estimatedCost": null,
"contractorName": "RENERGY SOLAR LLC",
"contractorLicense": null,
"contractorPhone": "(830) 570-3214",
"applicantName": null,
"ownerName": null,
"useType": "Commercial",
"units": 1,
"latitude": 30.43181507,
"longitude": -97.94133438,
"url": "https://abc.austintexas.gov/web/permit/public-search-other?t_detail=1&t_selected_folderrsn=13694144",
"source": "data.austintexas.gov dataset 3syk-w9eu",
"scrapedAt": "2026-10-23T12:12:08.253Z"
}
]

Limits worth knowing

  • Each city updates its portal on its own schedule, usually daily or weekly. Use a window of 7 days or more with Only new.
  • Chicago and Mesa do not publish a permit ZIP code, so they return nothing when you filter by ZIP.
  • Cost, contractor, owner and applicant fields are only filled where the city publishes them.
  • The category is detected from permit text by rules, so some permits land in other or an unexpected category.
  • With a small Max results and Only new on, each run returns the next unseen batch.
  • Anonymous access is enough for alerts. A free city app token only raises rate limits for very large pulls.

FAQ

Which cities are covered?

New York City, Chicago, Los Angeles, San Francisco, Seattle, Austin, Cincinnati, Baton Rouge and Mesa.

Can you add my city?

We only add cities with a public, current, keyless open-data feed. Tell us the city you need.

Does it include contractor contact information?

Only what the city publishes, which for some cities includes a contractor name, license and phone.

Do I need an API key?

No.

How do I find only roofing or solar permits?

Use the Categories filter.

More Actors from GovData Feeds, all on Apify:

Data comes from city open-data portals and is public record. This Actor is not affiliated with any city. Permit data can be delayed, incomplete or corrected later.