Site Due-Diligence Bundle — 20-Layer Fatal-Flaw Scorecard avatar

Site Due-Diligence Bundle — 20-Layer Fatal-Flaw Scorecard

Pricing

from $55.00 / 1,000 results

Go to Apify Store
Site Due-Diligence Bundle — 20-Layer Fatal-Flaw Scorecard

Site Due-Diligence Bundle — 20-Layer Fatal-Flaw Scorecard

One call (lat/lon + radius) returns a go/caution/no-go verdict and a 0-100 site score across 20 federal layers: EPA contamination, FEMA flood, NWI wetlands, ESA habitat, NAAQS nonattainment, NRHP historic, karst, landslide, levee, dams, CBRS, tanks, pipelines, seismic.

Pricing

from $55.00 / 1,000 results

Rating

0.0

(0)

Developer

Kyle Maloney

Kyle Maloney

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

21 hours ago

Last modified

Share

Takes a coordinate and a radius and returns one site-screening scorecard that runs twenty environmental, hazard, regulatory and opportunity checks at once, instead of calling twenty separate actors. Every site comes back as a single row with a go / caution / no-go verdict, a 0–100 site score, a coverage percentage, a rolled-up fatal_flaw_count, a flags list, an opportunities list and a plain-language summary.

Built as a fast environmental site screening API for site selection due diligence, Phase I ESA database review, fatal flaw analysis and land constraint analysis — the pre-screen you run before you pay for the real studies.

What it screens (20 layers)

Layer (layers key)SourceResult type
epa_contaminationEPA ECHO — RCRA hazardous-waste handlers and TRI reporters within the radiusflag
flood_riskFEMA National Risk Index (county) via the FCC block geocoderflag on high inland/coastal flood risk
critical_habitatUSFWS ESA Critical Habitat, Final + Proposedflag (ESA Section 7 consultation)
protected_landsUSGS PAD-US protected/conservation lands (point-in-polygon)flag
seismic_designUSGS ASCE 7-22 seismic design web service (IBC 2024 edition)flag on high Seismic Design Category / site-specific study
wildfire_exposureNIFC WFIGS active perimeters and incidentsflag when in or near an active fire
karst_terrainUSGS CONUS_Karst compilation (OFR 2014-1156), 7 layersflag — Elevated or Moderate tier
landslide_hazardUSGS US Landslide Inventory (polygons + points)flag
levee_proximityUSACE National Levee Database Leveed Areasflag, with an editorial 0–100 levee_risk_score
impaired_waters_303dEPA ATTAINS Clean Water Act §303(d) impaired/threatened watersflag, with listed pollutant causes
state_tank_spill_registryEPA UST Finder national baseline + NY DEC, CA GeoTracker, TX TCEQ PST/LPST, FL DEPflag on any currently open case
gas_pipeline_proximityUS DOT NTAD Natural Gas Pipelines (EIA)flag inside the <500ft right-of-way band
calfire_fhszCAL FIRE Fire Hazard Severity Zone, California onlyflag on Very High; outside CA → not_applicable
air_nonattainment (new)EPA NAAQS nonattainment area lookup — 11 active pollutant/standard layersflag → New Source Review (NSR) offsets + LAER instead of PSD
wetlands_nwi (new)USFWS National Wetlands Inventory — on-parcel + radius bufferflag → Section 404 permit screening and mitigation
historic_nrhp (new)NPS National Register of Historic Places — sites + districtsflag → NHPA Section 106 screening
cbrs_coastal_barrier (new)USFWS Coastal Barrier Resources System unitsflag → CBRA federal-funding bar / NFIP ineligible
dam_inundation_exposure (new)USACE National Inventory of Dams — hazard class + conditionflag on a Poor/Unsatisfactory high-hazard dam nearby
transmission_gridHIFLD transmission lines + substationsopportunity (interconnection proximity)
ira_energy_communityDOE/NETL IRA energy-community layersopportunity (10% ITC / +10% PTC bonus)

The scoring model

The bundle does the synthesis instead of handing you twenty independent flags.

Severity tiers. Every flagged layer is classified by what the flag actually means, using the metrics that layer already produces:

TierWeightWhat it isTriggers
A−35Legal or physical prohibition. On its own, enough to kill a site.federal land; ESA critical habitat; inside an active fire perimeter; inside a mapped landslide; Very High CAL FIRE FHSZ; pipeline inside 500 ft; CBRS System Unit
B−18Material permitting cost/schedule risk.NAAQS nonattainment; wetland on/within 0.1 mi; NRHP resource on/within 0.25 mi; site-specific seismic study or SDC D–F; Elevated karst; non-accredited levee; open tank/spill case within 0.25 mi; Very High flood risk; in an impaired water; nearby Poor-condition high-hazard dam; CBRS OPA; non-federal protected land; wildfire near but not inside
C−6Diligence-scope item. Investigate; rarely fatal.everything else that flags (EPA RCRA/TRI counts, Moderate karst, farther pipeline bands, nearby mapped landslides, etc.)
site_score = 100 (35 × TierA) (18 × TierB) (6 × TierC) floor 0

Verdict bands, evaluated strictly in this order:

VerdictWhen
not-screenednothing was screened at all
incomplete-screencoverage_pct < 80 — too little coverage to claim anything
no-goany Tier-A constraint
cautionany Tier-B constraint, or site_score < 70
cautionany layer unavailable or partial (see the coverage gate)
proceedevery applicable layer answered and nothing flagged

The coverage gate. verdict can never be proceed while any applicable layer is unavailable or partial. A clean verdict therefore always implies complete coverage — an upstream outage can never be laundered into a clean bill of health. coverage_pct excludes not_applicable layers from its denominator and counts a partial layer as half.

A proceed can still carry flags. Tier-C findings are diligence-scope items, not blockers, so they do not move the verdict — but they are never hidden. A real proceed row from the demo portfolio reads site_score: 94, verdict: proceed, fatal_flaw_count: 1, with the finding spelled out in flags and in verdict_reason ("1 diligence-scope finding(s) to review"). Karst and nearby impaired waters are common enough across the US that treating them as blockers would make almost every site caution and destroy the verdict's discriminating power. Read verdict for the go/no-go call and flags for the scope of work.

Opportunities are scored separately. opportunity_score (0–25, from the IRA energy-community bonus and grid proximity) is never netted against constraints — an IRA bonus does not make a wetland go away.

Layer status vocabulary

Every layer returns { status, detail, metric fields, data_vintage, sources_queried, sources_failed, citation }.

StatusMeaning
clearevery source for this layer answered, and nothing was found
flaga potential fatal-flaw constraint was found
opportunitya positive finding
partialsome sources answered and found nothing, but at least one source failed and was not screened. Never read as clear.
unavailableno source answered. Not screened.
not_applicablethe dataset does not cover this location by design (e.g. CAL FIRE FHSZ outside California). Excluded from the coverage denominator.

A layer that errors upstream is never silently reported as clear, and a "nothing found" sentence names only the sources that actually ran. One bad layer or one bad coordinate never crashes the run.

Data vintage per layer

checked_at is the query time, not the data vintage. Every layer carries its own data_vintage:

LayerVintage
epa_contaminationEPA ECHO, refreshed weekly
air_nonattainmentEPA OAQPS designations, refreshed weekly
wildfire_exposureNIFC WFIGS, live / near-real-time
transmission_grid, levee_proximitycontinuously updated hosted layers
impaired_waters_303dEPA ATTAINS, Esri quarterly (exact quarter in attains_service_edition)
flood_riskFEMA NRI county release, annual cycle
state_tank_spill_registryEPA UST Finder annual + each state registry on its own cadence
gas_pipeline_proximityUS DOT NTAD annual release
seismic_designASCE 7-22 (IBC 2024); USGS model version in seismic_model_version
ira_energy_communityDOE/NETL 2024v1
critical_habitatupdated as rules publish in the Federal Register
protected_landsPAD-US, multi-year republication cycle
karst_terrainUSGS OFR 2014-1156 — a 2014 compilation
landslide_hazardUSGS inventory v2, compiled from sources of varying age
wetlands_nwiNWI imagery dates range from the 1970s to the present by project
historic_nrhpNPS spatial data; many points are batch-derived with unverified coordinates
cbrs_coastal_barrierchanges only by Act of Congress or a USFWS map revision
dam_inundation_exposureNID; per-dam update and condition-assessment dates vary widely by state
calfire_fhszSRA 2007 / LRA 2011 editions. CAL FIRE has since adopted newer SRA (2022/2024-effective) and LRA (2025) maps that this service does not yet carry — confirm the currently adopted zone with CAL FIRE.

Example input

{
"assets": [
{ "lat": 29.7355, "lon": -95.2601, "label": "Houston Ship Channel industrial site, TX" },
{ "lat": 44.29, "lon": -105.5, "label": "Gillette, WY greenfield (coal-country)" }
],
"radiusMiles": 1
}

Example output

One row per site (abridged — the real row also carries the nested layers object with per-layer metrics, data_vintage, source health and citations, plus all 20 <layer>_status columns):

{
"asset_label": "Dauphin Island, AL coastal barrier parcel",
"asset_lat": 30.23863,
"asset_lon": -88.32039,
"radius_miles": 2,
"verdict": "no-go",
"site_score": 0,
"verdict_reason": "2 Tier-A constraint(s) -- a legal or physical prohibition: ESA critical habitat; CBRS coastal barrier unit (NFIP / federal-funding bar).",
"coverage_pct": 100,
"layers_screened": 19,
"layers_applicable": 19,
"layers_not_applicable": 1,
"fatal_flaw_count": 6,
"tier_a_count": 2,
"tier_b_count": 2,
"tier_c_count": 2,
"opportunity_score": 0,
"cbrs_coastal_barrier_status": "flag",
"wetlands_nwi_status": "flag",
"critical_habitat_status": "flag",
"calfire_fhsz_status": "not_applicable",
"flags_text": "ESA critical habitat: ... | CBRS coastal barrier unit: Inside CBRS System Unit Q02 (\"Dauphin Island\") ...",
"site_screen_summary": "NO-GO - site score 0/100; 6 potential fatal-flaw constraints flagged (2 Tier-A, 2 Tier-B, 2 Tier-C)."
}

And a clean site from the same portfolio:

{
"asset_label": "Western Kansas low-constraint greenfield",
"verdict": "proceed",
"site_score": 94,
"coverage_pct": 100,
"fatal_flaw_count": 1,
"tier_a_count": 0,
"tier_b_count": 0,
"tier_c_count": 1,
"verdict_reason": "No prohibition and no major permitting constraint across 19 applicable layer(s); 1 diligence-scope finding(s) to review (see flags)."
}

Key output fields

  • verdictproceed | caution | no-go | incomplete-screen | not-screened.
  • site_score — 0–100 composite. verdict_reason explains it in one sentence.
  • coverage_pct, layers_screened, layers_partial, layers_unavailable, layers_not_applicable.
  • tier_a_count / tier_b_count / tier_c_count, opportunity_score.
  • fatal_flaw_count — how many layers returned flag.
  • flags, opportunities, unavailable_layers, partial_layers, not_applicable_layers — plus *_text single-cell versions that survive CSV/Excel export.
  • <layer>_status — a flat scalar column for each of the 20 layers, so the per-layer verdict survives a spreadsheet export without 150 nested columns.
  • layers — the full nested per-layer object with metrics, data_vintage, source health and citation.
  • site_screen_summary — one-line roll-up. Leads with INCOMPLETE COVERAGE whenever any layer was unavailable or partial.

Billing

One billable Result per successfully screened site. You are never charged for:

  • an invalid coordinate (returned in a separate non-billable invalid-inputs dataset), or
  • a row where every layer failed (0% coverage — also routed to invalid-inputs).

How radius works

radiusMiles (default 1, accepts 0.25–25) drives the distance-based layers: EPA, critical habitat, grid, wildfire, landslide, impaired waters, tank/spill, gas pipelines, NWI wetlands, NRHP resources and NID dams. The point-in-polygon layers — protected lands, flood/NRI county, seismic, IRA, karst, levee, CAL FIRE FHSZ, NAAQS nonattainment and CBRS — are exact intersect tests and ignore it.

Who uses it

  • Site selectors and corporate real-estate teams running greenfield site screening and industrial land screening on a shortlist before ordering full studies.
  • Data center site selection and solar site suitability teams checking grid proximity, the IRA bonus and the full constraint stack in one call.
  • Renewable-energy and infrastructure developers screening New Source Review NSR PSD exposure alongside wetlands, habitat and historic constraints.
  • Phase I ESA and environmental consultants scoping the assessment with a fast regulatory-records and sensitive-receptor read, including a brownfield pre-screen.
  • CRE lenders and insurers pulling CRE collateral environmental screening — flood, wildfire, seismic, karst, landslide, levee, contamination, tank/spill, pipeline, dam and coastal-barrier exposure on an address.
  • AI agents turning a coordinate into a structured constraint profile with a single verdict.

Use as an MCP tool

This Actor is callable directly by any MCP-compatible AI agent through Apify's hosted MCP server. There is no server to run and no integration code to write - the tool schema an agent sees is generated from this Actor's own input and dataset schemas.

Endpoint

https://mcp.apify.com?tools=malonestar/site-due-diligence-bundle

Claude Desktop, Claude Code or Cursor - add to claude_desktop_config.json, .mcp.json or .cursor/mcp.json respectively:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=malonestar/site-due-diligence-bundle",
"headers": { "Authorization": "Bearer YOUR_APIFY_TOKEN" }
}
}
}

Get a token at https://console.apify.com/settings/integrations. Claude Desktop can also authenticate interactively via OAuth against https://mcp.apify.com with no headers block. Full reference: https://docs.apify.com/platform/integrations/mcp

Try asking your agent

Run a full 20-layer due-diligence screen on 39.7392,-104.9903 and tell me whether the verdict is proceed, caution or no-go, and why.

Chains well with - expose these alongside it by comma-separating the tools parameter, and the agent can carry results from one into the next:

  • malonestar/parcel-owner-lookup
  • malonestar/epa-contaminated-site-screener
  • malonestar/fema-nri-county-risk-profile
https://mcp.apify.com?tools=malonestar/site-due-diligence-bundle,malonestar/parcel-owner-lookup,malonestar/epa-contaminated-site-screener,malonestar/fema-nri-county-risk-profile

Billing is unchanged when called as an MCP tool: this Actor is Pay-Per-Event and an agent pays the same per-result price a human does. A run that cannot answer fails without billing rather than returning an unverified negative.

Use in n8n

This Actor is published as an n8n community node, so it can be dropped into a workflow without writing an HTTP request by hand.

Install from Settings > Community Nodes > Install in any self-hosted n8n instance, enter n8n-nodes-site-due-diligence-bundle, then add your Apify API key as an Apify API credential. The node calls this Actor through the Apify API, so there is no extra infrastructure to run and billing is identical to a normal run.

Use in n8n

This Actor is published as an n8n community node, so it can be dropped into a workflow without writing an HTTP request by hand.

Install from Settings > Community Nodes > Install in any self-hosted n8n instance, enter n8n-nodes-site-due-diligence-bundle, then add your Apify API key as an Apify API credential. The node calls this Actor through the Apify API, so there is no extra infrastructure to run and billing is identical to a normal run.

FAQ

Is this a Phase I Environmental Site Assessment? No. It is an informational multi-source pre-screen to scope and prioritize — not a substitute for an ASTM E1527 Phase I, a legal ESA or land determination, a wetland delineation, a flood certificate, a stamped engineering study, or tax advice. Confirm every flag with the authoritative agency and a licensed professional.

What does a clear result actually guarantee? That every upstream source for that layer answered and nothing was found in the compiled national dataset. It does not rule out an undocumented local condition. If a source failed, you get partial or unavailable instead — never clear.

What isn't screened? The EPA layer covers RCRA and TRI via ECHO; Superfund/SEMS records without coordinates and the IRA brownfield category are out of scope. NWI does not map every wetland (small, forested and farmed wetlands are commonly omitted) and is not a jurisdictional delineation. NRHP listing is not the same as eligibility — unlisted but eligible resources still trigger Section 106. The tank/spill layer has a national EPA UST Finder baseline plus deeper registries in NY, CA, TX and FL only. CAL FIRE FHSZ is California-only. The dam layer is a straight-line proximity proxy, not an inundation determination — NID does not publish inundation polygons, so a site outside the radius can still lie in an inundation path; request the dam owner's EAP mapping for a real answer.

How many sites per run? Up to maxAssets (default 250). One billable scorecard row per successfully screened site.