# U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe… API

> U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe… API on Apizie: 8 endpoints (Safe Drinking Water Act (SDWA) Download Data Service, Safe Drinking Water Act (SDWA) Download Data Service, Safe Drinking Water Act (SDWA) Paginated Results Service, Safe Drinking Water Act (SDWA) Paginated Results Service, …) returned as clean JSON through one API key. 8 endpoints are live now. Call it over REST at https://zieapi.vercel.app/v1/open-data:epa-sdw/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `open-data:epa-sdw`
- Category: Open Data
- Status: live
- Source: https://echo.epa.gov/resources/general-info/contact-us
- Page: https://zieapi.vercel.app/api/open-data/epa-sdw
- OpenAPI: https://zieapi.vercel.app/api/open-data/epa-sdw/openapi.json

Enforcement and Compliance History Online (ECHO) is a tool developed and maintained by EPA's Office of Enforcement and Compliance Assurance for public use. ECHO provides integrated compliance and enforcement…

## Endpoints

### Safe Drinking Water Act (SDWA) Download Data Service
`GET https://zieapi.vercel.app/v1/open-data:epa-sdw/get-sdw-rest-services-get-download`

| Parameter | Type | Required | Description |
|---|---|---|---|
| output | string | no | Output Format Flag. Enter one of the following keywords: - CSV = Facility results formatted as comma delimited file download (default). |
| qid | string | yes | Query ID Selector. Enter the QueryID number from a previously run query. |
| qcolumns | string | no | Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object… |

### Safe Drinking Water Act (SDWA) Download Data Service
`POST https://zieapi.vercel.app/v1/open-data:epa-sdw/post-sdw-rest-services-get-download`

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | Form fields as a JSON object |

### Safe Drinking Water Act (SDWA) Paginated Results Service
`GET https://zieapi.vercel.app/v1/open-data:epa-sdw/get-sdw-rest-services-get-qid`

| Parameter | Type | Required | Description |
|---|---|---|---|
| output | string | no | Output Format Flag. Enter one of the following keywords: - JSON = Data model formatted as Javascript Object Notation (default). - JSONP =… |
| qid | string | yes | Query ID Selector. Enter the QueryID number from a previously run query. |
| pageno | number | no | Indicates the number of the page to display. It is used only when the results are paginated. |
| callback | string | no | JSONP Callback. For use with JSONP and GEOJSONP output only. Enter a name of the function in which to wrap the JSON response. |
| newsort | number | no | Output Sort Column. Enter the number of the column on which the data will be sorted. If unpopulated results will sort on the first column. |
| descending | string | no | Output Sort Column Descending Flag. Enter Y to column identified in the newsort parameter descending. Enter N to use ascending sort order.… |
| qcolumns | string | no | Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object… |

### Safe Drinking Water Act (SDWA) Paginated Results Service
`POST https://zieapi.vercel.app/v1/open-data:epa-sdw/post-sdw-rest-services-get-qid`

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | Form fields as a JSON object |

### Safe Drinking Water Act (SDWA) Systems Search Service
`GET https://zieapi.vercel.app/v1/open-data:epa-sdw/get-sdw-rest-services-get-systems`

| Parameter | Type | Required | Description |
|---|---|---|---|
| output | string | no | Output Format Flag. Enter one of the following keywords: - JSON = Data model formatted as Javascript Object Notation (default). - JSONP =… |
| p_fn | string | no | Facility Name Filter. Enter one or more case-insensitive facility names to filter results. Provide multiple values as a comma-delimited… |
| p_ct | string | no | Facility City Filter. Enter a single case-insensitive city name to filter results. |
| p_co | string | no | Facility County Filter. Provide a single county name in combination with a state value provided via p_st. |
| p_fips | string | no | FIPS Code Filter. Enter a single 5-character Federal Information Processing Standards (FIPS) state + county value to restrict results.… |
| p_st | string | no | Facility State and State-Equivalent Filter. Provide one or more USPS postal abbreviations for states and state-equivalents to filter… |
| p_zip | string | no | 5-Digit ZIP Code Filter. Provide one or more 5-digit postal zip codes to filter results. May contain multiple comma-separated values. |
| p_reg | string | no | EPA Region Filter. Provide a single value of 01 thru 10 to restrict results to a single EPA region. |
| p_trb | string | no | Tribe name |
| p_act | string | no | Active Permits/Facilities Flag. Provide Y or N to filter results to facilities with active permits. |
| p_qiv | string | no | Quarters in Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of noncompliance. - Z = Zero… |
| p_ico | string | no | Indian Country Flag. Enter a "Y" or "N" to restrict searches to facilities inside or outside Indian Country. |
| p_pid | string | no | Nine-digit permit IDs. May contain up to 2000 comma-separated values. |
| p_owop | string | no | Owner/Operator code filter. Enter one of the following codes to filter results: - F = Federal Government - S = State Government - L =… |
| p_systyp | string | no | Type of public water system: - CWS=Community water system - NCWS=Non-community water system - NTCWS=Non-transient non-community water… |
| p_swtyp | string | no | Source Water Type: - SW = Surface water - GW= Ground water - GU = Ground water under direct influence of (UDI) surface water - SWP =… |
| p_popsv | string | no | Estimated average daily population served by a system: - LE500 = 500 or less - IN501_3K = 501-3,300 - IN3K_10K = 3,301-10,000 - IN10K_100K… |
| p_cntysv | string | no |  |
| p_cs | string | no | Current violations: - M = Monitoring and Reporting Violations - H = Health-based Violations - O = Other Violations - P = Public Notice… |
| p_mr | string | no | Monitoring and Reporting Violations (failure to conduct regular monitoring of drinking water quality or submit monitoring results in a… |
| p_health | string | no | Violations of health-based drinking water standards (maximum contaminant levels, maximum residual disinfectant levels, or treatment… |
| p_other | string | no | Other violations, such as failing to issue annual consumer confidence reports or maintain required records. |
| p_pn | string | no | Public Notice Violations (failure to immediately alert consumers of serious problem with drinking water). |
| p_sv | string | no | Serious Violator (unresolved serious, multiple, and/or continuing violations). A value of Y will return only SDWIS systems that are… |
| p_qs | string | no | Quick Search. Allows entry for city, state, and/or zip code. |
| p_sfs | string | no | Single Facility Search Filter. Provide a facility name or program system identifier to limit results. For the all data search, the FRS… |
| p_pswpol | string | no | For CWA, pollutant names for surface water discharges. for Drinking Water, SDWIS Violation contaminant codes for unaddressed violations… |
| p_pswvio | string | no | Used in conjuction with parameters p_pswpol and p_pswparam, indicates whether search should only include pollutants with violations. |
| p_pbale | string | no | Lead Action Level Exceedance. A "Y" value will select water systems with at least 1 Lead Action Level Exceedance. |
| p_cuale | string | no | Copper Action Level Exceedance. A "Y" value will select water systems with at least 1 Copper Action Level Exceedance. |
| p_rc350v | string | no | Rule code 350 violation. A "Y" value will select water systems with at least one rule code 350 violation. |
| p_pbv | string | no | Lead Violations. A "Y" value will select water systems with at least 1 Lead Violation. |
| p_cuv | string | no | Copper Violation. A "Y" value will select water systems with at least 1 Copper Violation. |
| p_lcrv | string | no | Lead or Copper rule violations. A "Y" value will select water systems with at least 1 Lead or Copper Rule Violation. |
| p_fea | string | no | Formal Enforcement Actions [within / not within] specified date range indicator. The date range is determined by parameters p_fead1 and… |
| p_feay | number | no | Years (1 to 5) Range. This value is used to create a date range for Formal Enforcement Actions (FEA). Used along with p_fea (which… |
| p_feaa | string | no | Agency associated with Formal Enforcement Actions: - E = EPA - S = State - A = All |
| p_iea | string | no | Informal Enforcement Actions [within / not within] specified date range. The date range is determined by parameters p_iead1 and p_iead2 or… |
| p_ieay | number | no | Years (1 to 5) Range. This value is used to create a date range for Informal Enforcement Actions (IEA). Used along with p_iea (which… |
| p_ieaa | string | no | Agency associated with Informal Enforcement Actions. If left blank, both agencies are included. - E = EPA - S = State |
| p_qis | string | no | Significant Quarters in Noncompliance Limiter. Enter one of the following codes to limit results to facilities having given quarters of… |
| p_pfead1 | string | no | Formal Enforcement Action Date Range Start. Enter a date in MM/DD/YYYY format to set the start of the range for filtering by recent Formal… |
| p_pfead2 | string | no | Formal Enforcement Action Date Range End. Enter a date in MM/DD/YYYY format to set the end of the date range for filtering by recent… |
| p_pfeat | string | no | Formal Enforcement Action (FEA) Code Filter. Enter one or more three-letter FEA codes to restrict results to facilities with these… |
| p_ss5yr | string | no | Sanitary Surveys (in past 5 years) flag. Values of visit_reason_code are either "SNSV" or "SNSP" in the past 5 years indicate a Sanitary… |
| p_sdc | string | no | Significant Deficiency Count (in past 5 years) flag. Enter "Y" to select facilities with Sanitary Surveys within the past 5 years. Enter… |
| p_sdc_ils | string | no |  |
| p_ysl | string | no | Last Facility Inspection [within / not within] Specified Date Range Indicator. The date range is determined by parameters p_idt1 and… |
| p_ysly | string | no | Number of years (1 to 5) since last facility inspection. A value of 1 means that it has been inspected within the year. |
| p_ysla | string | no | Facility Last Inspection Code Filter. If left blank, both agencies are included. Enter a value to limit results: - E = EPA - S = State |
| p_idt1 | string | no | Beginning of date range of most recent facility inspection. |
| p_idt2 | string | no | End of date range of most recent facility inspection. |
| p_cms_flag | string | no |  |
| queryset | number | no | Query Limiter. Enter a value to limit the number of records returned for each query. Value cannot exceed 70,000. |
| responseset | number | no | Response Set Limiter. Enter a value to limit the number of records per page. Value cannot exceed 1,000. |
| callback | string | no | JSONP Callback. For use with JSONP and GEOJSONP output only. Enter a name of the function in which to wrap the JSON response. |
| qcolumns | string | no | Used to customize service output. A list of comma-separated column IDs of output objects that will be returned in the service query object… |

### Safe Drinking Water Act (SDWA) Systems Search Service
`POST https://zieapi.vercel.app/v1/open-data:epa-sdw/post-sdw-rest-services-get-systems`

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | Form fields as a JSON object |

### Safe Drinking Water Act (SDWA) Metadata Service
`GET https://zieapi.vercel.app/v1/open-data:epa-sdw/get-sdw-rest-services-metadata`

| Parameter | Type | Required | Description |
|---|---|---|---|
| output | string | no | Output Format Flag. Enter one of the following keywords: - JSON = Data model formatted as Javascript Object Notation (default). - JSONP =… |
| callback | string | no | JSONP Callback. For use with JSONP and GEOJSONP output only. Enter a name of the function in which to wrap the JSON response. |

### Safe Drinking Water Act (SDWA) Metadata Service
`POST https://zieapi.vercel.app/v1/open-data:epa-sdw/post-sdw-rest-services-metadata`

| Parameter | Type | Required | Description |
|---|---|---|---|
| body | object | no | Form fields as a JSON object |

## Example
```
curl "https://zieapi.vercel.app/v1/open-data:epa-sdw/get-sdw-rest-services-get-download" \
  -H "x-api-key: $APIZIE_KEY"
```

## FAQ

### How do I call the U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe… API?
Create a free Apizie key, then send GET https://zieapi.vercel.app/v1/open-data:epa-sdw/get-sdw-rest-services-get-download with the header x-api-key. Every endpoint returns { project, data, timestamp }.

### Is the U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe… API free on Apizie?
Yes. The Free plan includes 1,000 requests a month at 100 requests a minute, no credit card.

### Can AI agents use the U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe… API?
Yes. Add the Apizie MCP server (https://zieapi.vercel.app/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key open-data:epa-sdw.

### What is the status of the U.S. EPA Enforcement and Compliance History Online (ECHO) - Safe… API?
Live: works with just an Apizie key
