# NYC Boiler Inspection Violations, Defects & Penalty Leads (`kempdata/nyc-boiler-compliance`) Actor

Find NYC boiler filings that name a problem. 882,059 inspection filings from NYC DOB open data, filtered to defects reported, late-filing fees and civil penalties due, with building and inspector attached. A lead list for boiler service and inspection firms.

- **URL**: https://apify.com/kempdata/nyc-boiler-compliance.md
- **Developed by:** [Mark Kemp](https://apify.com/kempdata) (community)
- **Categories:**
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.50 / 1,000 boiler inspection records

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## NYC Boiler Inspections & Compliance Leads

**880,000+ NYC boiler inspection filings from official DOB open data** — every annual boiler inspection in New York City, with computed lead flags: defects found, late-filing fees assessed, civil penalties due. Owner and inspecting company on every record.

### Who this is for

- **Boiler service & repair companies** — the *defects found* filter is a repair-lead list: 69,000+ filings reported defects, each naming the building (BIN) and owner.
- **Inspection agencies** — the *late filers* filter surfaces owners who missed the filing window and paid penalty fees; they need a more attentive inspection partner.
- **Building buyers & due-diligence teams** — pull a building's full boiler filing history by BIN before closing.
- **Insurers & risk analysts** — defect and penalty history by building, straight from the official record.

### What you get

One record per inspection filing: boiler ID, building BIN, inspection date and type, boiler make/model, pressure type, owner name, inspecting company and license, defect flag, late-filing fees, civil-penalty flag, report status, and computed `is_lead` / `lead_reasons`. Export to Excel, CSV, or JSON, or pull on a schedule via API.

### Data source & fair use

The NYC Department of Buildings "DOB NOW: Safety Boiler" open dataset, served by the city's official open-data API — public records published for exactly this use. No scraping; paged, rate-limit-respecting requests.

### Support

Questions answered fast — usually within hours. Want another city or another DOB dataset? Open an issue and name it.

# Actor input Schema

## `leadFilter` (type: `string`):

Which filings to return. "Defects found" is the repair-lead list; "Late filers" and "Civil penalties due" flag owners with compliance problems; "All filings" returns everything matching the other filters.

## `inspectionYears` (type: `array`):

Limit results to inspections from these years (e.g. 2025). Leave empty for all years.

## `pressureType` (type: `string`):

Low-pressure boilers are the residential/commercial mainstream; high-pressure units are industrial.

## `binNumbers` (type: `array`):

Limit results to specific buildings by their NYC Building Identification Number (BIN). Leave empty for all buildings.

## `maxRecords` (type: `integer`):

Stop after this many results. You are only charged for records actually returned.

## `socrataAppToken` (type: `string`):

Optional NYC Open Data app token. Not required - only useful for very large pulls, to lift the anonymous rate limit.

## Actor input object example

```json
{
  "leadFilter": "defectsFound",
  "inspectionYears": [],
  "pressureType": "any",
  "binNumbers": [],
  "maxRecords": 500
}
```

# Actor output Schema

## `records` (type: `string`):

Dataset of boiler inspection filings with computed lead flags (defects, late fees, penalties) and lead reasons.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {};

// Run the Actor and wait for it to finish
const run = await client.actor("kempdata/nyc-boiler-compliance").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {}

# Run the Actor and wait for it to finish
run = client.actor("kempdata/nyc-boiler-compliance").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{}' |
apify call kempdata/nyc-boiler-compliance --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kempdata/nyc-boiler-compliance"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/cvivmU4w9UrDfJGSU/builds/gX5woHJBcx9c8K9wW/openapi.json
