Building Permits Scraper - Socrata Open Data (Multi-City) avatar

Building Permits Scraper - Socrata Open Data (Multi-City)

Pricing

from $0.40 / 1,000 permits

Go to Apify Store
Building Permits Scraper - Socrata Open Data (Multi-City)

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

Ihor Bielievskiy

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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, longitudeplus 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

FieldDescription
domainCity open-data host, e.g. data.cityofnewyork.us, data.sfgov.org, data.cityofchicago.org.
datasetIdThe dataset's 4x4 id from its URL, e.g. ipu4-2q9a (NYC DOB Permit Issuance).
searchQueryKeyword across all text columns — solar, roofing, HVAC, demolition, pool. The fastest way to a niche lead list.
dateFieldDate column to filter on, e.g. issuance_date. Required for the date range.
dateFrom / dateToDate range as YYYY-MM-DD. Composed into the filter for you.
whereClauseOptional raw SoQL filter, e.g. borough='MANHATTAN' or estimated_cost > 50000.
selectColumns to keep — slims output and lowers cost. :id is always kept.
datasetsList of { domain, datasetId, … } to scrape several cities in one run.
maxItemsStop after this many records (0 = no limit).
orderSoQL sort, e.g. issuance_date DESC. :id is appended automatically.
appTokenOptional X-App-Token. Not needed for moderate volume; raises the rate limit.
proxyConfigurationOptional — 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