Building Permit Lead Scraper — Contractor Lead Generation avatar

Building Permit Lead Scraper — Contractor Lead Generation

Pricing

from $3.00 / 1,000 building permit records

Go to Apify Store
Building Permit Lead Scraper — Contractor Lead Generation

Building Permit Lead Scraper — Contractor Lead Generation

Scrape building permit data from city open-data portals for contractor lead generation. Find properties with active renovation, roofing, HVAC, and construction permits.

Pricing

from $3.00 / 1,000 building permit records

Rating

0.0

(0)

Developer

Sam Kleespies

Sam Kleespies

Maintained by Community

Actor stats

0

Bookmarked

36

Total users

9

Monthly active users

10 days ago

Last modified

Categories

Share

Building Permit Lead Scraper — Construction Permit Research

Find building permits in supported city open-data portals, filter by trade-related keywords, and export structured records for construction market research and contractor prospecting. A permit is evidence of recorded work; it does not prove that the owner is seeking bids or that a job is still available.

Start here: Chicago roofing permits — 3-record sample. The preset searches the past 365 days, returns up to three matches, disables optional Maps enrichment, and sets a $0.50 maximum charge and 300-second timeout. Inspect work descriptions and issue dates before scaling. Availability varies.

Pricing

The standard price is $3 per 1,000 returned permit records ($0.003 each), plus $0.00005 per Actor-start event. Start-event quantity depends on memory, with one event per GB and a minimum of one. At 4 GB, three records cost $0.009 in result fees plus $0.0002 startup. Platform usage is included under the current pricing configuration. The live Pricing tab is authoritative and may show applicable discounts. No separate city-data API key is required for the preset.

Supported cities and inputs

Supported city configurations: Chicago, Los Angeles, New York City, Austin, Seattle, and San Francisco. These use official city open-data sources. Dataset availability, field coverage and update schedules vary by city; a successful Chicago sample does not establish that every city is currently returning matches.

InputPurpose
citySelect the supported city; default chicago
permitTypeall, roofing, hvac, plumbing, electrical, remodel, or new_construction
daysBackLookback window, 1–365 days
maxResultsMaximum returned matches, 1–5,000; begin with 3–10
{
"city": "chicago",
"permitType": "roofing",
"daysBack": 365,
"maxResults": 3,
"enrichWithMaps": false
}

Output and interpretation

Records contain permitNumber, address, city, state, zipCode, permitType, workDescription, issueDate, estimatedCost, contractorName, ownerName, latitude, longitude, sourceUrl, and scrapedAt where available. Use the source link to check the underlying record. Export JSON, CSV, JSONL, or Excel from the dataset.

  • Missing values: cities publish different fields. A zero estimatedCost can represent unavailable source data; do not treat it as a confirmed zero-dollar project. Blank contractor or owner fields do not establish that no contractor or owner exists.
  • Work scope: roofing matches are based on permit text, which may describe repairs, porch roofs or other roof-related work. Review workDescription before treating a record as a full roof replacement.
  • Timing: issueDate is a recorded permit date, not a promise of project start, completion, source freshness, or purchasing intent. A contractor may already be engaged.
  • Contact details: a permit record is not a verified phone/email lead. Any separate business-directory enrichment can add costs and needs its own match verification.

Filtering, completeness and reliability

Trade filtering is applied as source pages are fetched. The scan continues until enough matching records are collected, the source is exhausted, or a 10,000-record safety cap is reached. A warning identifies cap-limited partial results; narrow daysBack when it occurs. RUN_SUMMARY records the selected city, time window, filter and result count. No matches is valid when the source query completes successfully; a source API failure fails the run.

Roofing matching excludes rooftop solar, antenna or HVAC-equipment-only descriptions unless they also explicitly mention roofing, reroofing, roof repair or replacement. All trade matching remains keyword-based. Some records may be missed or need manual exclusion.

Useful workflows

Trade research: choose one city and trade, inspect a small sample, then expand the lookback or result cap when useful.

Weekly project monitoring: save a task with your chosen filters. If you schedule it, budget for each run and deduplicate exports using city plus permitNumber. Overlapping lookback windows can return the same record and incur another result charge. This Actor does not automatically track changes between separate runs.

CRM import: export CSV and map fields into a dedicated research list. Review scope, source, dates and completeness before classifying a record as a sales opportunity. ZIP filtering can be done on the exported zipCode field; there is no direct ZIP input.

Use from an AI assistant

An MCP-compatible client can use the official Apify MCP server. Configure the server URL as:

https://mcp.apify.com?tools=samstorm/building-permit-lead-scraper

Authorize with your own Apify account, inspect the Actor inputs and current pricing, then request the three-record Chicago sample above. Your normal Actor charges apply. Inspect run status and retrieve the dataset before summarizing results; do not treat a started run as a completed result. This setup requires no API key funded by the Actor developer.

Data sources and support

The base search reads official city open-data portals. Check each source's terms and use public records appropriately. Publication does not establish permission for every form of outreach.

For an issue, include the run link, city, filter, expected behavior and observed result. Keep tokens and private customer data out of public issues. Report whether the run failed, returned no matches, or returned records with unexpected scope; these require different investigations.