NYC HPD Housing Violations - Building Code Enforcement avatar

NYC HPD Housing Violations - Building Code Enforcement

Pricing

from $0.03 / 1,000 nyc hpd violation records

Go to Apify Store
NYC HPD Housing Violations - Building Code Enforcement

NYC HPD Housing Violations - Building Code Enforcement

New York City housing code violations from HPD (public open data, 11.3M records): building and apartment, violation class A/B/C/I, inspection and compliance dates, the notice text and current status. Screen a building by HPD id, or filter by class, borough, ZIP, street, status or date.

Pricing

from $0.03 / 1,000 nyc hpd violation records

Rating

0.0

(0)

Developer

Wenhao Yang

Wenhao Yang

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Every housing code violation issued by New York City's Department of Housing Preservation and Development, straight from the City's open data. 11.3 million violations - what was wrong, in which building and apartment, how serious, and whether it is still open.

Low cost

From $0.00005 per record, down to $0.00003 at Gold. Pay only for the records you actually receive - the whole register stays queryable, you are never billed for the scan behind it.

What you get

One row per violation:

  • Where - the borough, house number, street, ZIP, apartment, story, block and lot, plus the BBL, BIN and community board
  • How serious - the violation class: A (non-hazardous), B (hazardous), C (immediately hazardous) or I (informational)
  • What - the notice-of-violation text describing the condition
  • When - the inspection date, the notice issue date, the compliance deadline and the certification date
  • Where it stands - the current status, the Open/Close flag, the notice type (original or reissued) and whether the violation impairs the rent

The building id joins the HPD complaint table, and the BBL joins the City's property records.

Filter it

  • Class - class="C" for immediately-hazardous violations.
  • Status - violationStatus="Open" for violations not yet cleared.
  • Rent impairing - rentImpairing="Y" for the rent-abatement tier.
  • Place - boro="BROOKLYN", zip="11206", street="BROADWAY".
  • One building - buildingId="375411" for that building's most recent violations (up to 2,000 per run).
  • Period - dateFrom="2026-01-01", or recentDays=30 for the last month.

Example inputs

The serious, still-open violations - class C, not yet cleared.

{ "class": "C", "violationStatus": "Open", "maxResults": 50 }

One building's record - buildingId is the HPD key.

{ "buildingId": "375411", "maxResults": 100 }

Recent Brooklyn cases - a borough and a window.

{ "boro": "BROOKLYN", "class": "C", "recentDays": 90, "maxResults": 50 }

How the violations break down - mode=aggregate counts per class.

{ "mode": "aggregate", "groupBy": "class" }

Or roll it up

Set mode=aggregate and get a count by class, status, borough, notice type or current status. Every group comes back - this mode is not cut off by maxResults.

Then use it

  • Tenant / legal diligence - a building's open class-C violations and rent-impairing findings.
  • Underwriting - violation density and open-case load as a property risk signal.
  • Watch a building - pull its violations by buildingId and track new ones.

Example output

One open class-C violation - a lead-paint hazard, as captured on 2026-10-17:

{
"platform": "nyc-hpd-violations",
"source": "nyc-hpd-housing-violations",
"mode": "rows",
"groupKey": "",
"groupCount": "",
"groupBy": "",
"violationId": "19287708",
"buildingId": "557821",
"registrationId": "412403",
"boro": "QUEENS",
"houseNumber": "79-05",
"streetName": "147 STREET",
"zip": "11367",
"apartment": "E1",
"story": "1",
"block": "6691",
"lot": "1",
"class": "C",
"inspectionDate": "2026-10-06T00:00:00.000",
"approvedDate": "2026-10-06T00:00:00.000",
"originalCertifyByDate": "2026-11-05T00:00:00.000",
"originalCorrectByDate": "2026-10-31T00:00:00.000",
"certifiedDate": "",
"orderNumber": "624",
"novId": "10696081",
"novDescription": " 27-2056.6 ADM CODE - CORRECT THE LEAD-BASED PAINT HAZARD-PAINT THAT IS PEELING OR ON A DETERIORATED SUBSURFACE AND EITHER TESTED INCONCLUSIVE FOR LEAD CONTENT AT 0.5MG/CM2 OR TESTED POSITIVE FOR LEAD CONTENT ON A METAL OR CERAMIC SUBSTRATE AS SET FORTH IN (28 RCNY 11-07(b)) USING WORK PRACTICES SET FORTH IN 28 RCNY 11-06(b)(2). 1st DOOR FROM SOUTH AT WEST WALL IN THE FOYER LOCATED AT APT E1, 1st STORY, 1st APARTMENT FROM NORTH AT EAST , SECTION ''79-19''",
"novIssuedDate": "2026-10-07T00:00:00.000",
"currentStatus": "NOV SENT OUT",
"currentStatusDate": "2026-10-07T00:00:00.000",
"novType": "Original",
"violationStatus": "Open",
"rentImpairing": "N",
"communityBoard": "8",
"councilDistrict": "24",
"bbl": "4066910001",
"bin": "4144769",
"nta": "Kew Gardens Hills",
"sourceUpdatedAt": "2026-10-17"
}

mode=aggregate, groupBy=class - one count row per class:

B 5,312,252
C 2,615,952
A 2,585,034
I 806,060

Notes on the data, from the source

  • Counts in this section are a 2026-10-18 snapshot. The register refreshes daily, so the live figures differ slightly.

  • Class C is the one that matters. A = non-hazardous, B = hazardous, C = immediately hazardous (2.6M records, 585k still open), I = informational. Filter on class to find it.

  • Open vs closed. violationStatus is Open (2.87M) or Close (8.43M); currentStatus gives the finer workflow state. rentImpairing="Y" marks the 775,900 violations that impair an apartment's rent.

  • The listing is keyed by buildingId and BBL. One buildingId lookup returns the most recent violations, up to 2,000 per run (192 buildings have more than 2,000 rows in the register); the BBL joins the City's CAMA records.

  • buildingId is exact, not a name. It is the HPD numeric id, not an address - look it up from the building, then pull its violations here.

  • The register refreshes daily; sourceUpdatedAt carries the dataset's own refresh date.