Property Violations Registry — Multi-City Code Data avatar

Property Violations Registry — Multi-City Code Data

Pricing

Pay per usage

Go to Apify Store
Property Violations Registry — Multi-City Code Data

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

Bryan

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

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)

CitySource datasetRows
Chicago, ILBuilding Violations (22u3-xenr)~2.0M
New York City, NYHPD Housing Maintenance Code Violations (wvxf-dwi5)~11M
San Francisco, CADBI Housing/Building Complaints (gm2e-bten)~333k
Austin, TXCode 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 of chicago, nyc, san_francisco, austin (default: Austin).
  • statusall or open (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).