# Building Energy Benchmark Lookup (NYC + Chicago) (`kevinserver24/building-energy-benchmark-lookup`) Actor

A building's own government-mandated annual energy/water disclosure filing, read live from NYC (Local Law 84/97) and Chicago (Energy Benchmarking Ordinance) and normalized into one column set across the two cities' different schemas, primary keys and missing-value conventions.

- **URL**: https://apify.com/kevinserver24/building-energy-benchmark-lookup.md
- **Developed by:** [Kevin](https://apify.com/kevinserver24) (community)
- **Categories:** Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$200.00 / 1,000 building benchmark verifieds

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

## Building Energy Benchmark Lookup (NYC + Chicago)

Unaffiliated, third-party Actor. Not affiliated with, endorsed by, or
sponsored by the City of New York or the City of Chicago. Built on each
city's own open-data portal: NYC's Local Law 84/97 building energy/water
disclosure dataset (`data.cityofnewyork.us`) and Chicago's Energy
Benchmarking Ordinance dataset (`data.cityofchicago.org`).

Give it a list of buildings -- each one `{"city": "nyc" or "chicago",
"building_id": the city's own identifier, and/or "address": free text}` --
and get back that building's own government-mandated annual energy
disclosure, normalized into ONE column set across both cities: ENERGY STAR
score, site/source EUI (kBtu per square foot), gross floor area, primary
property type, year built, total greenhouse-gas emissions and (Chicago
only) its own separate 0-4 star rating -- kept distinct from the ENERGY
STAR score rather than folded into it, because the two are different
scales.

Each city publishes this under a different dataset, a different primary
key, different column names for the same measurement, and a different way
of marking a value as not yet reported. There is no shared building
identifier across the two ordinances. This Actor reads both live on every
run and reconciles them, so a buyer working across a multi-city portfolio
does not have to build and maintain that mapping by hand.

A building located but not yet reporting energy data (a real, verified
shape in both cities' own datasets -- see the product notes) is delivered
free, with the reason, and never billed as a benchmark it isn't.

Coverage today: New York City and Chicago. Roughly 15-20 US cities run a
similar mandatory disclosure ordinance; adding one is a mapping-table
change, each requiring its own live-verified column names the same way
these two got theirs.

# Actor input Schema

## `buildings` (type: `array`):

Each item: {"city": "nyc" or "chicago", "building\_id": the city's own identifier (NYC property\_id or Chicago id), and/or "address": a free-text street address to match against the city's own filed address}. At least one of building\_id/address is required per item; building\_id is exact, address is a best-effort match. Up to 25 buildings per run.

## Actor input object example

```json
{
  "buildings": [
    {
      "city": "nyc",
      "building_id": "6414946"
    },
    {
      "city": "chicago",
      "address": "318 N Carpenter St"
    }
  ]
}
```

# Actor output Schema

## `results` (type: `string`):

No description

# 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 = {
    "buildings": [
        {
            "city": "nyc",
            "building_id": "6414946"
        },
        {
            "city": "chicago",
            "address": "318 N Carpenter St"
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("kevinserver24/building-energy-benchmark-lookup").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 = { "buildings": [
        {
            "city": "nyc",
            "building_id": "6414946",
        },
        {
            "city": "chicago",
            "address": "318 N Carpenter St",
        },
    ] }

# Run the Actor and wait for it to finish
run = client.actor("kevinserver24/building-energy-benchmark-lookup").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 '{
  "buildings": [
    {
      "city": "nyc",
      "building_id": "6414946"
    },
    {
      "city": "chicago",
      "address": "318 N Carpenter St"
    }
  ]
}' |
apify call kevinserver24/building-energy-benchmark-lookup --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,kevinserver24/building-energy-benchmark-lookup"
        }
    }
}

```

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/fPvH7zdiOIP0H6d5C/builds/KrmdiHk0SVacK8h5i/openapi.json
