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(explicit publisher open/active states only; missing or novel values are not open).maxRecordsPerCity— cap per city, newest first (default: 100).maxSourceRowsPerCity— independent upstream scan bound (default: 10,000; maximum: 100,000). A null output cap removes only the emitted-record cap, not this scan bound.
Open-status predicates are sent to the official source and checked again locally before the matching output cap is applied. Exact publisher Open (or San Francisco Active) is not an inference that every other status is closed. Austin Pending, for example, remains unknown rather than silently becoming Open.
Every successful or failed source traversal writes RUN-RECEIPT with the exact predicate, per-city source state, parsed-page hashes, scan/output bounds and complete_for_filter. A scan-limit or output-limit zero is not proof of absence. complete_for_query applies only to the declared bounded filter, never to all possible cases or physical condition. Source failure still fails the run after preserving its explicit receipt.
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.
Rows now include evidence_type (complaint, enforcement case or violation), the unmodified
publisher status, conservative status_classification, source_url, source_fetched_at, and
condition_assessed: false. publisher_updated_at remains unknown unless obtained separately.
Administrative evidence is not an inspection of current physical condition.
src/events.js compares material case fields within explicitly matching snapshot scopes.
Clock-only changes do not alert; conflicting duplicate identities require review. A missing
record is labeled not returned (complete versus partial scope), never automatically resolved.
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).