# EPA Lead-Safe Certified Firms · Contractor Phones by State (`corent1robert/epa-lead-safe-certified-firms`) Actor

Export EPA Lead-Safe Certified renovation (RRP) and lead abatement contractors by US state: firm name, phone, full address, GPS, certification number and expiry. One row per firm. Official EPA source. No login.

- **URL**: https://apify.com/corent1robert/epa-lead-safe-certified-firms.md
- **Developed by:** [Corentin Robert](https://apify.com/corent1robert) (community)
- **Categories:** Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## EPA Lead-Safe Certified Firms · Contractor Phones by State

Export every **EPA Lead-Safe Certified** renovation (RRP) and lead abatement firm in the United States, state by state: firm name, phone, full address, GPS coordinates, certification number and expiry date. One row per firm, ready for your CRM or dialer.

**Official EPA source. No login. No API key. A full state in seconds.**

### Who is this for?

| Persona | Typical goal | Suggested setup |
|---|---|---|
| Building material and paint suppliers | Reach remodelers, painters and window installers who work on pre-1978 homes | One or more states, RRP, no cap |
| Contractor insurance and bonding agents | Prospect certified renovators who need liability coverage | Your licensed states, Both |
| Lead testing labs and XRF equipment sellers | Sell kits and lab services to inspection and abatement firms | Abatement, all states |
| Home services marketplaces and lead-gen agencies | Recruit certified pros into a network | Target cities, RRP |
| Property managers and housing authorities | Shortlist certified firms for pre-1978 units | One state + cities |
| Training providers (RRP refresher courses) | Contact firms whose certification expires soon | Both, sort by expiry |
| Market researchers | Count certified firms per state or ZIP | All states, no cap |

**What you get by default:** firm name, phone (filled for more than 99.9% of firms in our tests), street address, city, state, ZIP, latitude and longitude, certification numbers, disciplines and expiry date. The EPA locator does not publish emails or websites.

### Quick start

1. Pick one or more **US states** (leave empty for the whole country).
2. Click **Start**. Download your list as CSV, Excel or JSON.

On the Free plan, a run exports up to 20 firms so you can check the data before you upgrade.

### Ready-made examples

- California lead-safe renovation firms (RRP)
- New York certified renovators with phone numbers
- Lead abatement and inspection firms, all states
- Certified firms in a list of cities (e.g. Chicago, Houston, Philadelphia)

### What it extracts

| Field | Example |
|---|---|
| firmName | 2805 Wisconsin Street, LLC |
| phone | (907) 538-4256 |
| phoneE164 | +19075384256 |
| address | 2051 Dimond Drive |
| city / state / zipCode | Anchorage / AK / 99507 |
| fullAddress | 2051 Dimond Drive, Anchorage, AK 99507 |
| programs | Lead-Safe Renovation (RRP) |
| disciplines | Renovation |
| certificationNumbers | NAT-F263328-1 |
| certificationExpires | 2029-05-02 |
| certificationActive | true |
| latitude / longitude | 61.1771 / -149.8432 |
| googleMapsUrl | Google Maps search link |
| firmId | 263328 |

Firms certified for both RRP and abatement are merged into a single row with all their certifications.

### Fill rates and volume

Measured on 24 Oct 2026 across all states, both programs:

- **55,365 unique firms**, 55,364 with a phone number.
- Biggest states: New York 9,365 · California 5,992 · Minnesota 3,683 · Pennsylvania 3,513 · Florida 2,842 · Texas 2,653 · New Jersey 2,424.

### Limitations

- Some states (for example Wisconsin, Iowa, North Carolina, Rhode Island) also run their own state lead program. Firms certified only by the state may not appear in the EPA locator.
- No emails or websites: the official locator does not publish them.
- Data is as fresh as the EPA locator at run time.

### Input

| Field | Type | Description |
|---|---|---|
| states | array | Two-letter state codes. Empty = all states. |
| program | string | `rrp` (default), `abatement` or `both`. |
| cities | array | Optional exact city names to keep. |
| maxResults | integer | Stop after N firms. 0 = no cap. Default 100. |

```json
{
  "states": ["CA", "NY"],
  "program": "both",
  "cities": [],
  "maxResults": 0
}
```

API-only options: `verboseLogs` (boolean, more detailed log), `useProxy` (boolean, route requests through Apify Proxy).

### How much does it cost to scrape EPA Lead-Safe Certified Firms?

Pay per event: a small start fee per run, then one charge per firm exported. Firms with a phone number cost slightly more than firms without one.

| Event | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| Run start | $0.05 | $0.05 | $0.05 | $0.05 |
| Firm with phone | $0.0025 | $0.0022 | $0.0019 | $0.0017 |
| Firm without phone | $0.0015 | $0.0013 | $0.0011 | $0.0010 |

| Scenario | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| 1 city, ~100 firms | 20 firms max per run | $0.27 | $0.24 | $0.22 |
| Alaska, ~220 firms | 20 firms max per run | $0.53 | $0.47 | $0.42 |
| California, ~6,000 firms | 20 firms max per run | $13.25 | $11.45 | $10.25 |
| All states, ~55,000 firms | 20 firms max per run | $121.05 | $104.55 | $93.55 |

Platform usage is included in these prices.

### Is it legal to scrape the EPA Lead-Safe Certified Firm Locator?

This Actor reads public information that the US Environmental Protection Agency publishes so consumers can find certified firms. It does not log in, bypass access controls or collect private data. Business contact data is still personal data in some contexts: use it in line with the CAN-SPAM Act, the TCPA (for calls and texts), state laws and your own compliance policies. If unsure, ask your lawyer.

### How it works

The Actor opens a session with the official EPA locator, asks for every certified firm in each selected state and program, merges duplicate firms, cleans names and phone numbers, then saves one row per firm. No browser is needed, so runs are fast and cheap.

### Output sample

Real row from a test run (24 Oct 2026):

```json
{
  "firmName": "Action Roofing Services , Inc",
  "phone": "(907) 677-6969",
  "phoneE164": "+19076776969",
  "city": "Anchorage",
  "state": "AK",
  "zipCode": "99517",
  "programs": [
    "Lead-Safe Renovation (RRP)"
  ],
  "disciplines": [
    "Renovation"
  ],
  "certificationNumbers": [
    "NAT-89772-3"
  ],
  "certificationExpires": "2027-07-07",
  "certificationActive": true
}
```

### Also available

- [IICRC Certified Firms · Emails & Phones by State](https://apify.com/corent1robert/iicrc-certified-firms-scraper): water damage, mold and restoration contractors.
- [US Home Inspectors · ASHI & InterNACHI Hub](https://apify.com/corent1robert/us-home-inspectors-hub): certified home inspectors.
- [InvestorLift Scraper](https://apify.com/corent1robert/investorlift-scraper): US off-market wholesale deals.
- [Independent Insurance Agencies · IIABA Contacts](https://apify.com/corent1robert/independent-insurance-agencies).

### Local development

```bash
npm install
npm test
echo '{"states":["AK"],"maxResults":20}' > input.json
npm start
```

### Contact

Questions, a custom export or another directory? Email corentin@outreacher.fr.

# Changelog

This Actor's version history is a separate document: https://apify.com/corent1robert/epa-lead-safe-certified-firms/changelog.md

# Actor input Schema

## `states` (type: `array`):

Pick one or more states. Leave empty to export every state covered by the federal EPA program. For contractors, roofers, painters, suppliers and insurers who sell to certified renovation firms.

## `program` (type: `string`):

RRP = renovators, painters, window and remodeling contractors certified for pre-1978 homes. Abatement = lead removal, inspection and risk assessment firms.

## `cities` (type: `array`):

Keep only firms located in these cities (exact city name, case-insensitive). Leave empty for the whole state.

## `maxResults` (type: `integer`):

Stop after this many firms. 0 = no cap (full export).

## Actor input object example

```json
{
  "states": [
    "CA"
  ],
  "program": "rrp",
  "maxResults": 100
}
```

# Actor output Schema

## `firms` (type: `string`):

No description

## `callList` (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 = {
    "states": [
        "CA"
    ],
    "maxResults": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("corent1robert/epa-lead-safe-certified-firms").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 = {
    "states": ["CA"],
    "maxResults": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("corent1robert/epa-lead-safe-certified-firms").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 '{
  "states": [
    "CA"
  ],
  "maxResults": 100
}' |
apify call corent1robert/epa-lead-safe-certified-firms --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,corent1robert/epa-lead-safe-certified-firms"
        }
    }
}
```

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/2aOSTUB7bV6lW8CdJ/builds/ID5RfmWKnJ2VO7hqI/openapi.json
