US Code Violations Tracker: NYC, Chicago, LA, Detroit
Pricing
Pay per usage
US Code Violations Tracker: NYC, Chicago, LA, Detroit
Housing and building code violations from official open data (NYC HPD and DOB, Chicago, Los Angeles, Detroit blight tickets). Filter by keyword, ZIP and status, with a new-since-last-run mode for property investor, pest control and remediation leads.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Open Registry Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
22 days ago
Last modified
Categories
Share
US Code Violations Scraper: NYC, Chicago, Los Angeles, Detroit
Pull building, housing and blight code violations from official city open-data portals into one normalized schema: NYC HPD housing violations, NYC DOB violations, Chicago Department of Buildings violations, Los Angeles (LADBS) code enforcement cases, and Detroit blight tickets. No login, no API key, no browser. Filter by keyword (mold, rodent, lead, heat, fire escape...), ZIP code, status and date range. Diff mode returns only violations that are new since the last run.
Keywords: code violations scraper, building violations, housing code violations, HPD violations, DOB violations, Chicago building violations, LADBS code enforcement, Detroit blight tickets, distressed property leads, motivated seller leads, real estate investor leads, property compliance data, open data API.
Use cases
- Real estate investors and wholesalers: build distressed / motivated-seller lead lists from fresh violations and unpaid blight fines (Detroit includes the fine and balance due).
- Contractors and service companies: pest control (rodent/mice), mold remediation, roofing, windows, boilers, elevators, and fire-escape repair, each targeted at the exact address that was just cited.
- Property managers, lenders and insurers: monitor a portfolio for new violations (filter by ZIP, run in diff mode).
- Tenant advocates, journalists and researchers: track enforcement trends across cities.
Datasets (datasets)
| key | City | Official source |
|---|---|---|
nyc-hpd | New York | HPD Housing Maintenance Code Violations (data.cityofnewyork.us wvxf-dwi5) |
nyc-dob | New York | DOB Violations (3h2n-5cm9) |
chicago | Chicago | Building Violations (data.cityofchicago.org 22u3-xenr) |
la-open / la-closed | Los Angeles | LADBS Code Enforcement Cases, open / closed (data.lacity.org u82d-eh7z, rken-a55j) |
detroit | Detroit | Blight Tickets (City of Detroit ArcGIS open data) |
customSocrata | any | Point it at another city's Socrata dataset (advanced) |
Input example
{ "datasets": ["chicago", "nyc-hpd"], "keywords": ["mold", "rodent", "mice"], "lookbackDays": 7 }{ "mode": "diff", "datasets": ["detroit"], "zipCodes": ["48227"], "stateKey": "detroit-48227" }
Output (normalized, one item per violation)
dataset, city, violationId, date, address, borough (or LA area / Detroit neighborhood), zip, category, code, description, status, statusDetail, statusDate, parcelId, buildingId, latitude, longitude, source (+ fineAmount, balanceDue for Detroit; raw when includeRaw is on; changeType, firstSeenAt in diff mode).
Example output (real records, Oct 2026 test run):
[{"dataset": "nyc-hpd","city": "New York, NY","violationId": "19281631","date": "2026-10-05","address": "179 EAST 54 STREET Apt 1R","borough": "BROOKLYN","zip": "11203","category": "Class A","code": "556","description": "§ 27-2013 ADM CODE PAINT WITH LIGHT COLORED PAINT TO THE SATISFACTION OF THIS DEPARTMENT ALL PEELING PAINT SURFACES IN THE BATHROOM , THE KITCHEN LOCATED AT APT 1R, 1st STORY, 1st APARTMENT FROM NORTH AT EAST","status": "Open","statusDetail": "VIOLATION OPEN","statusDate": "2026-10-05","parcelId": "3046600039","buildingId": "3101545","latitude": 40.654619,"longitude": -73.926774},{"dataset": "chicago","city": "Chicago, IL","violationId": "7554231","date": "2026-10-06","address": "739 W BELMONT AVE","borough": null,"zip": null,"category": "CONSERVATION","code": "CN104015","description": "REPLCE WINDOW PANES, PLEXGLAS — SOUTH ELEVATION AT GRADE / PANES - BROKEN LOUVERED WINDOWS. 14X-3-303.13","status": "OPEN","statusDetail": "FAILED","statusDate": "2026-10-06","parcelId": null,"buildingId": "7945","latitude": 41.9398831797,"longitude": -87.6483880441},{"dataset": "detroit","city": "Detroit, MI","violationId": "26073643DAH","date": "2026-10-06","address": "15261 FORRER","borough": "Grand River-St Marys","zip": "48227","category": "Buildings, Safety Engineering & Env Department","code": "8-15-472","description": "Failure to maintain or properly install electrical equipment, wiring, or appliance in a safe or approved manner one- or two- family dwelling or building","status": null,"statusDetail": "NO PAYMENT APPLIED","statusDate": "2026-10-23","parcelId": "22054455.","buildingId": null,"fineAmount": 50.0,"balanceDue": 80.0,"latitude": 42.401276967,"longitude": -83.201938682}]
"New since last run" (diff mode)
Set Mode = diff and schedule the actor daily or weekly. Each run looks at a rolling date window and returns only records it has never returned before, tagged changeType: "new" and firstSeenAt. Seen IDs are stored in a named key-value store (stateStoreName, separate stateKey per saved search), so the state survives between scheduled runs. On the first run you can output the whole window (flagged baselineRun: true) or store a silent baseline (firstRunBehaviour: baselineOnly). Pair it with an Apify integration (Slack, email, Google Sheets, Zapier, Make, webhook) to get a lead alert feed.
Notes
- The LA datasets only publish a case type code (e.g.
PACE,GENERAL,FRP), not free-text descriptions, so keyword filters don't match LA rows. NYC DOB doesn't publish coordinates. - Respect each portal's terms. Violations concern addresses and owners, so use the data lawfully (e.g. follow FCRA/TCPA rules when you contact owners).
Source and licence
Public records from NYC Open Data, the City of Chicago Data Portal, Los Angeles Open Data, and City of Detroit Open Data, used under each portal's open-data terms. Every item carries a source block (publisher, dataset URL, retrieval time). Not affiliated with or endorsed by any city.
Row cap and failure handling
maxRowsPerSource(default 5000, 0 = unlimited): per-source cap on raw rows fetched, with automatic pagination. Sources that hit the cap are listed undercappedSourcesin theOUTPUTrecord and in the run's status message.- Failures are loud: if any source fails (HTTP error, ArcGIS error, timeout), the run is marked FAILED, the status message names the failed source(s) and error, and the
OUTPUTkey-value record containsok: falseandfailedSources. Rows from a failed source are never returned partially.