US Commercial Building Permit Leads — CHI, ATX, LA avatar

US Commercial Building Permit Leads — CHI, ATX, LA

Pricing

$5.00 / 1,000 unique commercial building permits

Go to Apify Store
US Commercial Building Permit Leads — CHI, ATX, LA

US Commercial Building Permit Leads — CHI, ATX, LA

Commercial building permit signals from official Chicago, Austin and Los Angeles open data. Filter issue dates, reported valuation and permit/work types; export JSON or CSV. Not actual spend, a completed project, or verified contractor identities.

Pricing

$5.00 / 1,000 unique commercial building permits

Rating

0.0

(0)

Developer

AFK Digital

AFK Digital

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

US Multi-City Commercial Building Permit Leads (NEWAPI07)

Turn official city building permit records into structured, deduplicated commercial project signals. Choose a single city, issue-date window, reported valuation floor, permit/work type filters, result cap, and dollar cap. Export to JSON or CSV in Apify's Dataset UI/API.

This Actor does not claim construction completion, actual project expenditure, contract awards, or verified contractor identity. Reported valuation means the municipality's published figure, not realized spend. Some records have no disclosed valuation or contractor; missing data is returned as JSON null.

Supported sources and city-specific mapping

CityOfficial dataPermit IDIssued dateReported amountCommercial determinationNamed party
CHI ChicagoChicago Building Permitspermit_issue_datereported_costConservative positive business/non-residential signal in work_description; not comprehensiveContact with source type contractor or applicant; otherwise null
ATX AustinIssued Construction Permitspermit_numberissue_datetotal_job_valuationCity's permit_class_mapped = Commercialcontractor_company_name where provided, else applicant organization/name or null
LA Los AngelesBuilding and Safety - Building Permits Issued 2020–Presentpermit_nbrissue_datevaluation (source text, parsed to number)City's permit_sub_type = Commercialnull: dataset does not publish contractor/applicant name

Chicago precision trade-off: the public dataset has no explicit residential/commercial classification. Only descriptions with positively classifiable business terms or a positive non-residential unit count are emitted, and residential-only/zero-nonresidential records are rejected. Some real commercial permits will be missed; do not interpret a missing permit as proof of no activity.

Date ranges: issue_date is not an application date or the date work finished. Chicago's published date may represent the readiness-to-issue milestone for some permit types rather than fee-paid issuance; consult the official source notes.

Source freshness: Austin reports daily changes; Los Angeles usually weekly, Chicago is frequently refreshed. The Actor validates expected source columns every run; city records are subject to corrections.

Attribution and terms: source URLs are retained in each row. Austin dataset indicates U.S. Government Public Domain and carries a disclaimer. Chicago marks its license "See Terms of Use"; consult its data portal. Los Angeles Open Data Terms of Use apply; public city data are informational and subject to change. This independent product is not affiliated with or endorsed by any city.

Input

FieldMeaning
cityATX (default), CHI, LA
startDateoptional inclusive issue date YYYY-MM-DD, default 30 days before end
endDateoptional inclusive issue date, default current UTC day
minReportedCostminimum city-published valuation, default 10000 USD
permitTypecase-insensitive substring of city permit type
workTypecase-insensitive substring of city work class/category/description
maxResultsdistinct (city, permit_id) cap, default 50
maxCostUsdresult-event dollar ceiling, default 0.25 USD

Example JSON input:

{"city":"ATX","startDate":"2026-10-01","endDate":"2026-10-16",
"minReportedCost":50000,"maxResults":50,"maxCostUsd":0.25}

Output

permit_id, city, permit_type, work_description, reported_cost, cost_currency, applicant_contractor_name, property_address, issue_date, source_dataset, source_record_url, observed_at.

Each row has official source links. Missing source fields are null; no generated or inferred company names.

Pricing

Target: USD $0.005 per unique permit result, via Apify Pay Per Event custom event permit-record (1000 unique records = $5.00 in result events). No premium proxy needed. The input dollar cap also limits results to floor(maxCostUsd / 0.005); Apify's built-in Max total charge is the authoritative spending limit. An Apify synthetic startup event, if configured, may add its own fee; check the Store Pricing panel.

This price becomes active only when the publisher configures Pay Per Event and the corresponding event rate in Apify Publishing. Production fails closed if the Actor is not monetized; a developer test override exists strictly for controlled private tests.

Technical implementation

  • Socrata SODA JSON and SoQL, server-side date, valuation and commercial filters, stable (issue_date, source_row_id) keyset pagination, timeouts and capped 429/transient-5xx backoff.
  • City schema drift validation, per-run output reconciliation, checkpoint after each emitted record, deduplication by (city, permit_id) on resume.
  • Fixed source hosts and dataset IDs; user-provided strings are escaped, never injected as SoQL code.
  • 240-second processing budget, 150-page safety cap, up to 10000 results per run.
  • Absent or unparseable valuation is null when no minimum is applied; otherwise omitted.
  • CSV is standard Dataset API format=csv; JSON is format=json. No extra bill for format conversion.

Responsible use

Public permits are signals, not opted-in sales leads. Respect privacy and marketing law; do not assume contractors are verified or construction completed.

Development

Python 3.12+. Install requirements.txt then run python -m unittest discover -s tests -v. Use Apify CLI to deploy. ACTOR_TEST_PAY_PER_EVENT=true can simulate billing locally (it does not charge real users).