Building Permits Scraper - Socrata Open Data (Multi-City)
Pricing
from $0.40 / 1,000 permits
Building Permits Scraper - Socrata Open Data (Multi-City)
Scrape building and construction permits from any Socrata open-data portal (NYC, SF, Chicago, LA, and hundreds more). Pull issue date, permit and work type, status, address, contractor, owner, coordinates and every column the dataset exposes. HTTP-first, multi-city in one run.
Pricing
from $0.40 / 1,000 permits
Rating
0.0
(0)
Developer
Ihor Bielievskiy
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Building Permit Leads Scraper — Contractor Phone, Email & Project Data
A fresh permit is a fresh lead. When someone pulls a building permit, they are about to spend money — on roofing, solar, HVAC, a remodel, a pool, a demolition. This actor turns any US city's official permit feed into a clean, deduplicated list of contractor and owner leads — name, phone, email and license where the city publishes them, plus address, job cost, permit type and dates — ready to drop into your CRM.
It calls each city's official government open-data API (Socrata) directly, so the data is public, accurate, and there is no anti-bot to fight. From $0.40 per 1,000 results — typically several times cheaper than other permit-lead actors.
Who uses it
- Roofers, solar & HVAC installers — reach owners the day their permit is issued.
- General contractors & remodelers — find active projects by type, cost and area.
- Suppliers & subcontractors — track new construction starts in your market.
- Real-estate & proptech — renovation and new-build signals, geocoded.
- Sales teams — a steady, filterable lead list instead of cold lists.
What you get per lead
permit_number, issue_date, permit_type, work_type, status, address, city, state, zip_code, applicant (contractor), owner, applicant_phone, applicant_email, contractor_license, cost, latitude, longitude — plus every original column the city publishes, passed through untouched. Phone, email and license are filled in whenever the source dataset includes them; name, address, permit type and cost are there for essentially every city.
Export as JSON, CSV or Excel, or pull straight from the API.
Quick start
Every solar permit issued in NYC this year, newest first:
{"domain": "data.cityofnewyork.us","datasetId": "ipu4-2q9a","searchQuery": "solar","dateField": "issuance_date","dateFrom": "2024-01-01","order": "issuance_date DESC","maxItems": 1000}
Several cities in one run:
{"datasets": [{ "domain": "data.cityofnewyork.us", "datasetId": "ipu4-2q9a" },{ "domain": "data.cityofchicago.org", "datasetId": "ydr8-5enu" },{ "domain": "data.sfgov.org", "datasetId": "i98e-djp9" }],"searchQuery": "roofing","maxItems": 5000}
Coverage
Hundreds of US cities and counties publish permits on Socrata — New York, San Francisco, Chicago, Los Angeles, Austin, Seattle, Dallas, and many more. Point the actor at a city's dataset and you get its full permit history with the same stable field names everywhere, so a workflow built for one city keeps working when you add the next.
Sample output
{"record_id": "row-c5f6_ycr6.syte","permit_number": "340733647","issue_date": "06/17/2024","permit_type": "EW","work_type": "OT","status": "ISSUED","address": "BAY 34 ST","city": "BROOKLYN","state": "NY","applicant": "HENRYSMITH PROPERTY MGMT","applicant_phone": "7188020246","contractor_license": "0123456","cost": 48000,"latitude": 40.599043,"longitude": -73.992006}
Inputs
| Field | Description |
|---|---|
domain | City open-data host, e.g. data.cityofnewyork.us, data.sfgov.org, data.cityofchicago.org. |
datasetId | The dataset's 4x4 id from its URL, e.g. ipu4-2q9a (NYC DOB Permit Issuance). |
searchQuery | Keyword across all text columns — solar, roofing, HVAC, demolition, pool. The fastest way to a niche lead list. |
dateField | Date column to filter on, e.g. issuance_date. Required for the date range. |
dateFrom / dateTo | Date range as YYYY-MM-DD. Composed into the filter for you. |
whereClause | Optional raw SoQL filter, e.g. borough='MANHATTAN' or estimated_cost > 50000. |
select | Columns to keep — slims output and lowers cost. :id is always kept. |
datasets | List of { domain, datasetId, … } to scrape several cities in one run. |
maxItems | Stop after this many records (0 = no limit). |
order | SoQL sort, e.g. issuance_date DESC. :id is appended automatically. |
appToken | Optional X-App-Token. Not needed for moderate volume; raises the rate limit. |
proxyConfiguration | Optional — the API has no anti-bot, so datacenter is plenty. |
Finding a city's dataset
Open the city's permits dataset on its open-data portal and read the URL: the domain is the host and the datasetId is the 4x4 code (four letters/digits, a dash, four more), e.g. https://data.cityofnewyork.us/.../ipu4-2q9a. Paste both in.
Built for clean lead lists
- Deduplicated — each row carries the city's internal id; duplicates within a run are dropped.
- Stable pagination — paging always ends on
:id, so rows are never skipped or repeated. - No silent failures — a bad city, missing dataset, or invalid filter produces a typed error row, so an empty result always means "nothing matched", never a hidden break.
- Billed per record delivered — error rows and duplicates cost you nothing.
Plugs into your stack
- Make / Zapier / n8n — schedule a run and route new permits into a CRM, sheet or Slack.
- API — pull from the Apify Dataset API or call the actor from your backend.
- MCP — expose it to an LLM agent via Apify's MCP server and search permits in natural language.
Notes
This reads public open-data APIs that cities publish for exactly this kind of reuse. Follow each portal's terms and the laws that apply to you. Removal requests are honored.
Who built this
I build scrapers for my own projects and publish the ones that turn out genuinely useful. Need a custom scraper, a data pipeline, or a change to this actor? I'm available for freelance work.
GitHub: github.com/bujhmml · Site: bujhmml.fun