Property Violations Registry — Multi-City Code Data
Pricing
Pay per usage
Property Violations Registry — Multi-City Code Data
Official city building code-enforcement / property-violation records (not permits) in one unified schema across Chicago, NYC, San Francisco and Austin. Violation ID, address, type, status, issued date, description. Distress signals for RE investors, insurers, contractors, title/lending.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Bryan
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Property Violations Registry — Multi-City Code Enforcement
Official city building code-enforcement / property-violation records (NOT permits) from government open-data portals, normalized into one schema across cities. The records support property compliance review, municipal analysis, repair planning, and historical research.
Cities (all endpoints data-layer verified 2026-07-12)
| City | Source dataset | Rows |
|---|---|---|
| Chicago, IL | Building Violations (22u3-xenr) | ~2.0M |
| New York City, NY | HPD Housing Maintenance Code Violations (wvxf-dwi5) | ~11M |
| San Francisco, CA | DBI Housing/Building Complaints (gm2e-bten) | ~333k |
| Austin, TX | Code Enforcement Cases (6wtj-zbtb) | ~83k |
All are open Socrata SODA JSON endpoints — no login, no CAPTCHA.
Unified schema
{ violation_id, address, type, status, issued_date, description, city, state, raw }
raw preserves the full source row so no field is ever lost.
Input
cities— any ofchicago,nyc,san_francisco,austin(default: Austin).status—alloropen(open/active only — the distress signal).maxRecordsPerCity— cap per city, newest first (default: 100).
This public-record product is for property and regulatory research. It is not a consumer report and must not be used to determine an individual's eligibility for credit, insurance, employment, or housing.
Proof
node test_smoke.mjs pulls real rows from every city and asserts unified schema, correct
city tagging, real content (id + address + date), and a working open-only filter. No account,
no cost. Adding a city = one adapter in src/cities.js (endpoint + normalize + isOpen).