# ENERGY STAR Certified Product Finder (`tehsnarf/energy-star-certified-products`) Actor

Pulls certified-product records (brand, model, category, efficiency/spec attributes, certification date) from EPA's official ENERGY STAR open data across any of the 56 product categories (clothes washers, refrigerators, dishwashers, boilers, and more).

- **URL**: https://apify.com/tehsnarf/energy-star-certified-products.md
- **Developed by:** [Chris Hoover](https://apify.com/tehsnarf) (community)
- **Categories:** Lead generation, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

## ENERGY STAR Certified Product Finder

Pulls certified-product records — brand, model, efficiency metrics, capacity/spec fields, and
certification date — from EPA's official ENERGY STAR open data. Covers any of the 56 ENERGY STAR
product categories (clothes washers, refrigerators, dishwashers, boilers, and more), pulled
directly from EPA's public API and open-data portal — no browser rendering, no HTML scraping.

### Use cases

- **Rebate/procurement teams** — pull the current list of ENERGY STAR-certified models in a
  category to check rebate eligibility or build a compliant procurement shortlist.
- **Appliance market research** — analyze efficiency metrics (kWh/year, water use, IMEF/IWF) and
  brand distribution across a certified product category.
- **ESG / green-building reporting** — cross-reference model numbers against ENERGY STAR
  certification status for sustainability disclosures.

### Input

| Field | Type | Default | Description |
|---|---|---|---|
| `productCategories` | array of strings | 3 categories (see below) | ENERGY STAR `productUniqueName` codes to scrape |
| `maxItems` | integer | 100 | Max records **per category** |
| `pageSize` | integer | 100 | Records requested per API page (up to 1000) |
| `delaySeconds` | number | 1.0 | Polite delay before each fetch |
| `concurrency` | integer | 3 | How many pages to fetch at once |

Default `productCategories`: `certified-clothes-washers`, `certified-residential-refrigerators`,
`certified-residential-dishwashers`. Any of the 56 official category codes works — see EPA's
[Product Finder](https://www.energystar.gov/productfinder/advanced) for the full list of product
types and their unique names.

### Output fields

| Field | Type | Description |
|---|---|---|
| `productCategory` | string | Category code, e.g. `certified-clothes-washers` |
| `productCategoryName` | string | Human-readable category name |
| `pdId` | string | EPA's internal product record ID |
| `brand` | string | Brand name |
| `modelNumber` | string | Model number |
| `certificationDate` | string | Date the model was ENERGY STAR qualified |
| `attributes` | object | All remaining category-specific fields — efficiency metrics, capacity/spec fields, certification/status details. These vary by product type (a washer and a boiler have different spec fields), so they're passed through as-is rather than forced into one fixed schema. |
| `datasetSourceUrl` | string | The exact EPA open-data API URL this record came from |
| `lastSeenTimestamp` | date | When this Actor fetched the record |

### Example output

```json
{
  "productCategory": "certified-clothes-washers",
  "productCategoryName": "Clothes Washers",
  "pdId": "2545602",
  "brand": "AEG",
  "modelNumber": "W14120",
  "certificationDate": "2023-07-04T00:00:00.000",
  "attributes": {
    "load_configuration": "Front Load",
    "volume_cubic_feet": "2.20",
    "integrated_modified_energy_factor_imef": "2.07",
    "annual_energy_use_kwh_year": "110",
    "integrated_water_factor_iwf": "4.2",
    "annual_water_use_gallons_year": "2713",
    "meets_most_efficient_criteria": "No"
  },
  "datasetSourceUrl": "https://data.energystar.gov/resource/bghd-e2wd.json",
  "lastSeenTimestamp": "2026-08-11T08:17:26.425218+00:00"
}
```

### Pricing

$1.50 per 1,000 results.

| Results | Cost |
|---|---|
| 100 | $0.15 |
| 500 | $0.75 |
| 1,000 | $1.50 |
| 5,000 | $7.50 |

### Notes

- Data source is EPA's official, public ENERGY STAR open-data API
  (`data.energystar.gov/resource/*.json`) — the same export EPA links to from the Product Finder
  itself. No login, no PII, no ToS restriction found for this data.
- `maxItems` applies **per category**, not globally — requesting 3 categories at `maxItems: 100`
  returns up to 300 records total.

# Actor input Schema

## `productCategories` (type: `array`):

ENERGY STAR productUniqueName values to scrape, e.g. certified-clothes-washers, certified-refrigerators, certified-dishwashers. Leave at defaults for a solid general sample, or replace with your own category codes.

## `maxItems` (type: `integer`):

Maximum number of certified-product records to scrape per category

## `pageSize` (type: `integer`):

Records requested per Socrata API page (up to 1000 per request)

## `delaySeconds` (type: `number`):

Polite delay each fetch waits before requesting (matches data.energystar.gov's robots.txt Crawl-delay of 1s)

## `concurrency` (type: `integer`):

How many pages to fetch at once (each still waits delaySeconds before requesting)

## Actor input object example

```json
{
  "productCategories": [
    "certified-clothes-washers",
    "certified-residential-refrigerators",
    "certified-residential-dishwashers"
  ],
  "maxItems": 100,
  "pageSize": 100,
  "delaySeconds": 1,
  "concurrency": 3
}
```

# 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("tehsnarf/energy-star-certified-products").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("tehsnarf/energy-star-certified-products").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 tehsnarf/energy-star-certified-products --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,tehsnarf/energy-star-certified-products"
        }
    }
}

```

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/jKRvdiN0IK6HEAdeK/builds/ZvtF9o6yEeiuyzygZ/openapi.json
