US Commercial Building Permit Leads — CHI, ATX, LA
Pricing
$5.00 / 1,000 unique commercial building permits
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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
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
| City | Official data | Permit ID | Issued date | Reported amount | Commercial determination | Named party |
|---|---|---|---|---|---|---|
| CHI Chicago | Chicago Building Permits | permit_ | issue_date | reported_cost | Conservative positive business/non-residential signal in work_description; not comprehensive | Contact with source type contractor or applicant; otherwise null |
| ATX Austin | Issued Construction Permits | permit_number | issue_date | total_job_valuation | City's permit_class_mapped = Commercial | contractor_company_name where provided, else applicant organization/name or null |
| LA Los Angeles | Building and Safety - Building Permits Issued 2020–Present | permit_nbr | issue_date | valuation (source text, parsed to number) | City's permit_sub_type = Commercial | null: 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
| Field | Meaning |
|---|---|
| city | ATX (default), CHI, LA |
| startDate | optional inclusive issue date YYYY-MM-DD, default 30 days before end |
| endDate | optional inclusive issue date, default current UTC day |
| minReportedCost | minimum city-published valuation, default 10000 USD |
| permitType | case-insensitive substring of city permit type |
| workType | case-insensitive substring of city work class/category/description |
| maxResults | distinct (city, permit_id) cap, default 50 |
| maxCostUsd | result-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).