Comprehensive building data for any NYC property: PLUTO records, DOB violations, OATH/ECB violations, complaints, and permits in a single call.
The NYC Property Violations API provides comprehensive building data for any property in New York City, sourced directly from NYC Open Data and the Department of Buildings (DOB). Look up any property by street address, Borough-Block-Lot (BBL), or Building Identification Number (BIN) and receive a full report including property details (owner, building class, land use, year built, floors, units, lot area, assessed values), DOB violations with severity and status, OATH/ECB violations with balance due, filed complaints with inspection dates and dispositions, and building permits with job type, filing date, and estimated cost. Data is cached and refreshed hourly for fast repeated lookups.
/lookupGet a full property report including PLUTO data, DOB violations, OATH/ECB violations, complaints, and permits. Query by address, BBL, or BIN.
| Name | Type | Required | Description |
|---|---|---|---|
address | string | Optional | Street address (e.g., "121 AVENUE OF THE AMER") |
bbl | string | Optional | Borough-Block-Lot identifier (e.g., "1004777501") |
bin | string | Optional | Building Identification Number (e.g., "1083493") |
{
"property": {
"bbl": "1004777501",
"bin": "1083493",
"address": "121 AVENUE OF THE AMER",
"borough": "MN",
"block": "477",
"lot": "7501",
"zip_code": "10013",
"building_class": "RB",
"land_use": "5",
"year_built": 1925,
"num_floors": null,
"total_units": 0,
"lot_area": 13571,
"building_area": 84365,
"assessed_land_value": 1682551,
"assessed_total_value": 10734751,
"owner_name": "UNAVAILABLE OWNER"
},
"summary": {
"violation_count": 47,
"complaint_count": 15,
"permit_count": 0
},
"violations": [
{
"violation_id": "2747720",
"issue_date": null,
"violation_type": "LANDMK-LANDMARK",
"description": null,
"status": "V*-DOB VIOLATION - DISMISSED",
"severity": "LANDMK",
"penalty_imposed": null,
"balance_due": null,
"source": "dob"
},
{
"violation_id": "39166454H",
"issue_date": null,
"violation_type": "Unknown",
"description": "ELECTRICAL WORK WITHOUT A PERMIT",
"status": null,
"severity": null,
"penalty_imposed": null,
"balance_due": 1600,
"source": "oath"
}
],
"complaints": [
{
"complaint_id": "1115946",
"date_entered": "2003-12-07T00:00:00",
"complaint_type": "56",
"description": null,
"inspection_date": null,
"status": "CLOSED",
"disposition": "I2",
"source": "dob"
}
],
"permits": []
}/searchSearch cached properties by address, BBL, or BIN. Returns properties already fetched via /lookup. Call /lookup first for properties not yet in the cache.
| Name | Type | Required | Description |
|---|---|---|---|
q | string | Required | Search term matching address, BBL, or BIN (e.g., "Empire State", "1000477501") |
borough | string | Optional | Filter by borough: MANHATTAN, BROOKLYN, QUEENS, BRONX, or STATEN ISLAND |
limit | number | Optional | Max results to return (1–50, default 10) |
{
"query": "Empire State",
"count": 1,
"properties": [
{
"bbl": "1000477501",
"bin": "1001083",
"address": "350 FIFTH AVE",
"borough": "MANHATTAN",
"block": "477",
"lot": "7501",
"zip_code": "10118",
"building_class": "O4",
"land_use": "05",
"year_built": 1931,
"num_floors": 102,
"total_units": 0,
"lot_area": 79604,
"building_area": 2768591,
"assessed_land_value": 55000000,
"assessed_total_value": 286000000,
"owner_name": "EMPIRE STATE REALTY"
}
]
}/violationsGet DOB and OATH/ECB violations for a property. Use for targeted violation queries.
| Name | Type | Required | Description |
|---|---|---|---|
address | string | Optional | Street address |
bbl | string | Optional | Borough-Block-Lot identifier |
bin | string | Optional | Building Identification Number |
/complaintsGet DOB complaints filed against a property with inspection dates and dispositions.
| Name | Type | Required | Description |
|---|---|---|---|
address | string | Optional | Street address |
bbl | string | Optional | Borough-Block-Lot identifier |
bin | string | Optional | Building Identification Number |
/permitsGet building permits for a property with job type, filing date, expiration, and estimated cost.
| Name | Type | Required | Description |
|---|---|---|---|
address | string | Optional | Street address |
bbl | string | Optional | Borough-Block-Lot identifier |
bin | string | Optional | Building Identification Number |
/changesReturns only the violations, complaints, and permits added since a given ISO 8601 timestamp. Use this endpoint to poll for new records at a regular interval instead of re-fetching the full report each time.
| Name | Type | Required | Description |
|---|---|---|---|
bbl | string | Required | Borough-Block-Lot identifier (e.g., "1004777501") |
since | string | Required | ISO 8601 datetime — return records added after this timestamp (e.g., "2025-01-01T00:00:00Z") |
{
"bbl": "1004777501",
"since": "2025-01-01T00:00:00Z",
"violations": [
{
"violation_id": "3812944",
"issue_date": "2025-01-15T00:00:00",
"violation_type": "LL11-LOCAL LAW 11",
"description": "FACADE INSPECTION REQUIRED",
"status": "ACTIVE",
"severity": "LL11",
"source": "dob"
}
],
"complaints": [],
"permits": [],
"violation_count": 1,
"complaint_count": 0,
"permit_count": 0
}/landlordReturn all NYC properties owned by a given person or LLC. Searches the PLUTO dataset by owner name (partial match). Useful for tenant advocacy, due diligence on landlords, and portfolio analysis.
| Name | Type | Required | Description |
|---|---|---|---|
owner | string | Required | Owner name or LLC to search (partial match, e.g. "TRUMP" or "BLACKSTONE REAL ESTATE") |
limit | number | Optional | Max properties to return (1–200, default 50) |
{
"owner_query": "BLACKSTONE",
"count": 3,
"properties": [
{
"bbl": "1005870001",
"bin": "1015418",
"address": "345 PARK AVE",
"borough": "MANHATTAN",
"zip_code": "10154",
"building_class": "O4",
"year_built": 1969,
"num_floors": 44,
"total_units": 0,
"assessed_total_value": 594000000,
"owner_name": "BLACKSTONE REAL ESTATE PARTNERS"
}
]
}/timelineReturn all violations, complaints, and permits for a BBL merged into a single chronological event feed. Sorted newest-first. Useful for due diligence dashboards and property history views.
| Name | Type | Required | Description |
|---|---|---|---|
bbl | string | Required | Borough-Block-Lot identifier (e.g., "1000477501") |
{
"bbl": "1000477501",
"property": {
"address": "350 FIFTH AVE",
"borough": "MANHATTAN",
"owner_name": "EMPIRE STATE REALTY"
},
"event_count": 3,
"timeline": [
{
"type": "violation",
"date": "2024-11-03T00:00:00",
"title": "LL11-LOCAL LAW 11",
"description": "FACADE INSPECTION REQUIRED",
"status": "ACTIVE",
"severity": "LL11",
"source": "dob",
"id": "3812944"
},
{
"type": "permit",
"date": "2023-06-15T00:00:00",
"title": "EW",
"description": "FACADE REPAIR",
"status": "ISSUED",
"estimated_cost": 125000,
"source": "dob",
"id": "421855126-01"
},
{
"type": "complaint",
"date": "2022-03-07T00:00:00",
"title": "45",
"description": "ELEVATOR DEFECTIVE/UNSAFE",
"status": "CLOSED",
"disposition": "A5",
"source": "dob",
"id": "5882013"
}
]
}/neighborhoodReturn aggregate stats for an NYC zip code: total properties and units from PLUTO, plus violation, complaint, and permit rates computed from the local cache. Call /lookup on individual properties first to warm the cache for a given zip.
| Name | Type | Required | Description |
|---|---|---|---|
zip_code | string | Required | NYC zip code (e.g. "10001") |
{
"zip_code": "10001",
"pluto_summary": {
"total_properties": 1842,
"total_residential_units": 12540,
"avg_assessed_total_value": 2850000.0,
"avg_year_built": 1943
},
"cached_properties": 12,
"total_violations": 87,
"total_complaints": 34,
"total_permits": 61,
"violation_rate": 7.25,
"complaint_rate": 2.83,
"permit_rate": 5.08,
"top_violation_types": [
{ "type": "LL11-LOCAL LAW 11", "count": 18 },
{ "type": "LANDMK-LANDMARK", "count": 9 }
],
"top_permit_types": [
{ "type": "EW", "count": 24 },
{ "type": "AL", "count": 15 }
]
}