# US Dams Near Any Address: Radius, Hazard & Condition (NID) (`bigsky-data-tools/us-dams-near-me-nid`) Actor

Find every US dam within a radius of any address, nearest first, from the USACE National Inventory of Dams: hazard potential, condition, last inspection, EAP date, specs and ready-made risk flags such as inspection-overdue. Filter by state, hazard, condition, height and age.

- **URL**: https://apify.com/bigsky-data-tools/us-dams-near-me-nid.md
- **Developed by:** [BigSky Data Tools](https://apify.com/bigsky-data-tools) (community)
- **Categories:** Real estate
- **Security:** Limited permissions
- **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.

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

## US Dams Near Any Address: data from the National Inventory of Dams (Radius Search, Hazard, Condition, Inspections)

Find **every dam within a radius of a property, parcel, plant or portfolio location**, nearest first, using **National Inventory of Dams (NID)** data: hazard potential, condition rating, last inspection date, emergency action plan, owner type, regulator, height, storage, river, year completed and operational status. Or pull all dams in one or more states with hazard and condition filters. **No API key, no login.** Published by BigSky Data Tools.

> **NOT FOR SAFETY-CRITICAL USE: data may be delayed or incomplete; not for life-safety, navigation or emergency decisions; use official USACE sources.**
>
> **USACE NID caveat:** USACE: "The data is for general information purposes ONLY and SHOULD NOT be used in technical applications such as, but not limited to: studies, designs or critical decision support." (https://water.usace.army.mil/help) Records include state-supplied fields. Owner fields are owner *types* (e.g. Private, State), never owner names. Every row carries a `dataNotice` field with this caveat.

### Why use this dam data tool?

- 📍 **Radius search, nearest first**: every row has `distanceMiles` from your point.
- ⚠️ **Risk fields in one row**: `hazardPotential` (High / Significant / Low), `conditionAssessment` (Satisfactory, Fair, Poor, Unsatisfactory), `lastInspectionDate`, `eapLastRevDate`, `operationalStatus`.
- 🔎 Filters: states, hazard, condition, dam name, built in or before a year, minimum height.
- 🏗️ Physical specs: height, length, storage (acre-feet), surface area, drainage area, spillway, dam type.
- 🔗 Link back to the NID page for each dam (`sourceUrl`).
- 🚩 **Ready-made `riskFlags`**: `high-hazard`, `poor-or-unsatisfactory-condition`, `high-hazard-no-eap` (only when NID says an EAP was not prepared: `eapStatus` is `no`), `inspection-overdue` (last inspection older than its schedule plus one year), with `inspectionAgeYears`.

### How it compares

In our Apify Store search on 2026-10-31 we did not find another Actor offering all of the features marked **Yes** below together; some alternatives offer individual features, as the "Typical alternatives" column shows. The Store may have changed since.

| | This tool | Typical alternatives |
|---|---|---|
| Radius search from any point, nearest first | **Yes, with `distanceMiles`** | State-level filters |
| Inspection-overdue flag (schedule-aware) | **Yes** | Inspection-age flags (varies) |
| Physical specs (height, storage, spillway, drainage) | **Yes** | Varies |
| Link to each NID record | **Yes** | Varies |

### Who uses it

Property and flood insurers and underwriters, mortgage and CRE due-diligence teams, real-estate buyers and agents, engineering and dam-rehab firms selling to owners, municipal and hazard-mitigation planners (for planning and screening, not emergency response; see the safety notice above), ESG and infrastructure analysts, and journalists.

### Input example

```json
{ "latitude": "38.0293", "longitude": "-78.4767", "radiusMiles": 10 }
```

High-hazard dams in poor condition statewide: `{ "states": ["CA"], "hazardPotential": ["High"], "conditionAssessment": ["Poor", "Unsatisfactory"] }`

### Output example

```json
{ "nidId": "VA003026", "damName": "Martha Jefferson Retention Basin Dam", "state": "Virginia", "countyState": "Albemarle, Virginia",
  "riverOrStream": "trib.  Rivanna River", "latitude": 38.0235, "longitude": -78.4467, "distanceMiles": 1.68,
  "hazardPotential": "Significant", "conditionAssessment": "Satisfactory", "conditionAssessDate": "2020-06-26",
  "lastInspectionDate": "2020-06-26", "inspectionFrequencyYears": 3, "eapLastRevDate": "2014-04-01",
  "primaryOwnerType": "Private", "regulatoryAgency": "Virginia Department of Conservation and Recreation",
  "primaryPurpose": "Flood Risk Reduction", "damType": "Earth", "heightFt": 36, "storageAcreFt": 29.4,
  "operationalStatus": "Under Investigation, Planning, Permitting, or Design for Remediation", "dataUpdated": "2022-12-04",
  "source": "National Inventory of Dams (U.S. Army Corps of Engineers)",
  "sourceUrl": "https://nid.sec.usace.army.mil/#/dams/system/VA003026/summary" }
```

Export to JSON, CSV, Excel or XML, or use the Apify API, Make, Zapier or n8n.

### Pricing

**$7 per 1,000 results** ($0.007 per result) plus a $0.01 start fee per run.
Pay per result: you pay for each dam saved, plus a small start fee. A 10-mile radius usually returns a few dozen to a hundred dams. Use `maxResults` to cap spend. Free-plan users can try it within their monthly platform credit.
Apify's per-run maximum charge setting also limits results: for example, a $4.44 limit allows about 632 rows. Raise it in the run options for a full pull.

### FAQ

**Where does the data come from?** From the public National Inventory of Dams web service published by the U.S. Army Corps of Engineers, compiled from state and federal dam-safety agencies. Source data are works of the U.S. federal government (U.S. Army Corps of Engineers) and generally not subject to U.S. copyright (17 U.S.C. 105). This is not a license or warranty; third-party or foreign rights may apply. Some records are supplied by states and may not be federal works. You are responsible for how you use the data.
**Why are some fields empty?** Fields such as condition, inspection dates, year completed or EAP status are often not in the public NID, either because they were not reported or because they are not released publicly; NID does not say which. Empty means unknown, not "safe". Every row has `notReportedNote`, which lists each empty field with its reason, e.g. `lastInspectionDate: not in the public NID (not reported, or not released publicly); distanceMiles: not applicable: no search center given`. It is null only when no field is empty.
**What does `eapStatus` mean?** `yes`, `no` or `not required` as reported to NID, or `not reported` when the public NID has no value (most dams). "Not reported" does not mean the dam has no Emergency Action Plan, so the `high-hazard-no-eap` flag is only set when `eapStatus` is `no`. As of 2026-11-01, the public NID has 0 dams with a `No` EAP answer (only `Yes` or `Not Required`), so this flag currently never fires.
**Is a "High" hazard dam unsafe?** No. Hazard potential describes the consequences if a dam failed, not its condition. Use `conditionAssessment` for condition.
**Is this tool run by the data agency?** No. BigSky Data Tools is independent and not affiliated with or endorsed by the U.S. Army Corps of Engineers or any dam-safety agency. Do not use it for emergency decisions.

**Is the data guaranteed?** No. The tool and data are provided as is, without warranty of accuracy, completeness or timeliness, and values can differ from the source agency's official products.

### Changelog

- 2026-11-01: **Breaking for `riskFlags` consumers:** the `riskFlags` value `high-hazard-no-eap-on-record` was renamed to `high-hazard-no-eap` and is now set only when `eapStatus` is `no` (previously it fired for any high-hazard dam whose EAP was not "Yes", including not reported). Added `eapStatus` and `notReportedNote`.

# Actor input Schema

## `latitude` (type: `string`):

Optional. With longitude and radius, returns dams near this point, nearest first (e.g. 38.0293 for Charlottesville, VA).

## `longitude` (type: `string`):

Optional, e.g. -78.4767.

## `radiusMiles` (type: `integer`):

Search radius around the center point.

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

Optional two-letter state codes, e.g. VA, TX. Leave empty (and no radius) for the whole country, about 92,000 dams.

## `hazardPotential` (type: `array`):

Optional. High = loss of life likely if the dam failed. Leave empty for all.

## `conditionAssessment` (type: `array`):

Optional. Leave empty for all.

## `damName` (type: `string`):

Optional text match on dam name.

## `maxYearCompleted` (type: `integer`):

Optional. Find older dams, e.g. 1960.

## `minHeightFt` (type: `integer`):

Skip dams lower than this.

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

Maximum dams to save (each saved dam is one billable result).

## Actor input object example

```json
{
  "latitude": "38.0293",
  "longitude": "-78.4767",
  "radiusMiles": 10,
  "minHeightFt": 0,
  "maxResults": 5000
}
```

# Actor output Schema

## `dataset` (type: `string`):

Default dataset containing all output records

# 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 = {
    "latitude": "38.0293",
    "longitude": "-78.4767"
};

// Run the Actor and wait for it to finish
const run = await client.actor("bigsky-data-tools/us-dams-near-me-nid").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 = {
    "latitude": "38.0293",
    "longitude": "-78.4767",
}

# Run the Actor and wait for it to finish
run = client.actor("bigsky-data-tools/us-dams-near-me-nid").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 '{
  "latitude": "38.0293",
  "longitude": "-78.4767"
}' |
apify call bigsky-data-tools/us-dams-near-me-nid --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,bigsky-data-tools/us-dams-near-me-nid"
        }
    }
}
```

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/ze6Vv28DWHc0Dkx1j/builds/aX9JcM3mq9sKaeVuF/openapi.json
