epa-contaminated-site-screener

n8n community node for the Apify EPA Contaminated Site Screener actor: a Phase I ESA environmental database search for any US address -- EPA Superfund/NPL, RCRA CORRACTS/TSD/generators, TRI, UST, LUST, Brownfields, NPDES, AIR, TSCA and RMP, scored against

Documentation

n8n-nodes-epa-contaminated-site-screener

An n8n community node for the Apify actor EPA Contaminated Site Screener -- Apify's #1 revenue-earning actor and a real Phase I Environmental Site Assessment (ESA) database search. Give it an address or coordinate and it returns every nearby EPA-listed site across Superfund/NPL, RCRA (CORRACTS/TSD/generators), TRI, UST, LUST, Brownfields, plus opt-in NPDES, AIR, TSCA and RMP -- scored against the ASTM E1527-21 standard search distances.

Keywords: phase 1 esa, phase i esa, environmental due diligence, epa database search, contaminated site, superfund screening, astm e1527-21, brownfield screening.

Why use this node

Environmental consultants, title companies, and CRE lenders currently pay per-report for "EDR"-style database pulls. This node lets you build that pull into an n8n workflow: drop in an address list from a spreadsheet or CRM, get back structured EPA hits per property, and auto-route flagged properties (e.g. anything with an on_superfund_site hit) to a human reviewer while clean properties move straight to the next underwriting step.

Installation

Option A -- n8n GUI (self-hosted or Cloud with community nodes enabled)

  1. Go to Settings > Community Nodes.
  2. Select Install.
  3. Enter n8n-nodes-epa-contaminated-site-screener.
  4. Agree to the risk notice and select Install.

Option B -- npm (self-hosted, manual)

cd ~/.n8n/nodes   # or your n8n custom-nodes directory
npm install n8n-nodes-epa-contaminated-site-screener

Restart n8n after installing.

Credentials

This node calls the Apify API and needs an Apify account. In n8n, create a new Apify API credential (or Apify OAuth2) with your Apify API token. The underlying EPA data sources (Envirofacts, ECHO, FRS SEMS) are all keyless -- the Apify credential only authorizes the actor run itself.

Node parameters

Field Type Description
Mode Options assets (default) -- multi-database proximity screen on your addresses/coordinates, one row per nearby EPA-listed site. inventory -- raw dump of EPA SEMS/Superfund sites for chosen states.
Assets to screen (assets mode) JSON Each item is { "address": "...", "label": "..." } (geocoded via the free Census geocoder) or { "lat": <number>, "lon": <number>, "label": "...", "state": "<optional 2-letter>" }.
Screening radius (miles) Number (0.1-50) Distance within which EPA-listed sites are counted. Default 1 mile covers the widest ASTM E1527-21 distance (NPL / RCRA CORRACTS); set 0.5 or 0.25 to match the tighter ASTM distances for other programs.
Programs / databases to screen Fixed collection Six defaults: SUPERFUND, RCRA, TRI, UST, LUST, BROWNFIELD. Four opt-in extras from the same ECHO call: NPDES, AIR, TSCA, RMP. Leave empty for the original six.
Max hits per program per asset Number (1-1000) Cap on nearest-site hits reported per program per asset. Default 50.
States (inventory mode) Fixed collection 2-letter state codes, e.g. ["CO", "NJ"]. Required when Mode = inventory.
Only NPL/Superfund sites (inventory mode) Boolean Keep only National Priorities List sites. Default false.
Only sites with coordinates (inventory mode) Boolean Drop ungeocoded SEMS records. Default true.
Max results Number (1-20000) Safety cap on total rows produced.
ASTM E1527-21 search-distance summary (assets mode) Boolean Adds one astm_summary row per asset scored against the ASTM Sec. 8.2.1 standard search distances (NPL/CORRACTS 1.0 mi, SEMS-CERCLIS/TSD/LUST/Brownfields 0.5 mi, UST/generators 0.25 mi). Screening aid only -- not a substitute for a licensed Phase I ESA.
Superfund & institutional-control boundary check (assets mode) Boolean Runs true point-in-polygon checks for on_superfund_site and published institutional-control/AUL boundaries. Default true.
Require every database to answer Boolean Every row already reports programs_screened / programs_failed / data_complete; this is a reserved strict-mode flag for callers who must not accept partial coverage.

Example workflow

Google Sheets (address list) -> Apify EPA Contaminated Site Screener -> Filter (on_superfund_site) -> Email

  1. A Google Sheets (or HTTP Request / Webhook) node supplies a list of subject-property addresses.
  2. A Set node builds the actor input:
{
  "mode": "assets",
  "assets": [
    { "lat": 39.8037, "lon": -104.9986, "state": "CO", "label": "Denver industrial parcel" },
    { "address": "5980 Lipan St, Denver, CO 80221", "label": "Denver industrial parcel (address input)" }
  ],
  "radiusMiles": 1,
  "astmMode": true,
  "includeBoundaries": true
}
  1. The Apify EPA Contaminated Site Screener node runs and returns one row per nearby site hit, each carrying program, site_name, distance_miles, on_superfund_site, institutional_control_flag, and (when astmMode is on) an extra astm_summary row with astm_refined_verdict.
  2. A Filter node keeps rows where on_superfund_site is true or astm_refined_verdict indicates a flag, and an Email / Slack node alerts the deal team.

Links

License

MIT

Discussion