NYC DOB Permits, Violations & Complaints Scraper
Pricing
from $5.00 / 1,000 results
NYC DOB Permits, Violations & Complaints Scraper
Pulls NYC Department of Buildings permits, violations, job filings and complaints, filterable by borough, block or contractor, priced per result.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
M Usama
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
Share
What does NYC DOB Permits, Violations & Complaints Scraper do?
It pulls building permits, DOB violations, job application filings and complaints from the NYC Department of Buildings, filtered by borough, tax block or contractor business name. Every record carries the address, block, lot, BIN, status and date up front, plus dataset specific fields like job type, business name, violation type or complaint category. Pricing is per result returned.
Data source
Public JSON APIs on the NYC Open Data Socrata portal (data.cityofnewyork.us): DOB NOW Approved Permits, DOB Violations, DOB NOW Job Application Filings and DOB Complaints Received, updated by the city on an ongoing basis, no login required.
Why use it?
- Lead generation: find recently permitted construction jobs and the contractors filing them, by borough or block.
- Due diligence: check open violations and complaints on a building before a purchase or lease.
- Compliance monitoring: track a contractor's active permits and violation history across boroughs.
- Replaces manually paging through the NYC Building Information System or Socrata's raw dataset browser.
How to use it
- Open the Actor and pick a record type: permits, violations, job filings or complaints.
- Set a borough, tax block or contractor name to narrow the results, and a max results cap.
- Click Start. Download results as JSON, CSV or Excel, or read them through the API.
- Add a Schedule and an Integration (Slack, Google Sheets, webhook) to get new records automatically.
Input
| Field | Description |
|---|---|
recordType | Which dataset to pull: permits, violations, jobFilings or complaints. Default permits. |
borough | Manhattan, Bronx, Brooklyn, Queens or Staten Island. Leave blank for all boroughs. |
block | Tax block number. Matches with or without leading zeros. Not used for complaints. |
contractorName | Filter by applicant, filing representative or owner business name. Permits and job filings only. |
maxResults | Hard stop for the run. You are billed per result, so this caps the cost. |
proxyConfiguration | Apify proxy is recommended for larger runs. |
Example input:
{"recordType": "permits","borough": "Manhattan","block": "","contractorName": "","maxResults": 50}
Output
Every record has a recordType, id and the fields for that dataset. A permit record looks like:
{"id": "permit:M01248246-I1:M01248246-I1-EW-SP","recordType": "permit","borough": "Manhattan","address": "12 EAST 52 STREET","block": "1287","lot": "62","bin": "1035477","status": "Signed-off","date": "2025-09-19T00:00:00","jobType": "Sprinklers","businessName": "STALWART PLUMBING CORP","ownerBusinessName": "PR","jobDescription": "REMOVAL OF SPRINKLER HEADS AND RELATED PIPING AS SHOWN ON DRAWINGS. NO CHANGE TO USE, EGRESS OR OCCUANCY.","filingReason": "Initial Permit","estimatedJobCosts": 20000,"expirationDate": "2026-06-06T00:00:00","jobFilingNumber": "M01248246-I1","workPermit": "M01248246-I1-EW-SP","trackingNumber": "912522473","latitude": 40.759481,"longitude": -73.975581,"scrapedAt": "2026-09-30T09:01:39.959Z"}
| Field | Meaning |
|---|---|
id | Stable key, safe for deduplication between runs |
recordType | permit, violation, jobFiling or complaint |
borough | Manhattan, Bronx, Brooklyn, Queens or Staten Island |
address | House number and street |
block / lot / bin | NYC tax block, lot and building identification number |
status | Permit, violation, filing or complaint status as published by DOB |
date | Main date for the record, in ISO format |
businessName | Applicant, filing representative or contractor firm (permits and job filings) |
violationType, complaintCategory, ... | Extra fields specific to the chosen record type |
Pricing
Pay per event: a small fee when a run starts, then a fixed price per result returned. You only pay for records that pass your filters. Set maxResults to cap any run.
Limitations
- Older BIS era permits are not included; permits come from the current DOB NOW system.
- Some fields are occasionally blank or inconsistent in the source data (DOB is the publisher, not this Actor).
blockfiltering is not available for the complaints dataset, which the city does not publish with a block field.contractorNamefiltering only applies where DOB publishes a business name (permits and job filings).
FAQ
Is this legal? The Actor reads NYC Open Data's public Socrata API, the same data anyone can browse or download for free without a login, and stores only business information the city publishes for that purpose. You are responsible for how you use the data.
Something is missing or broken? Open an issue in the Issues tab; response time is usually under a day.