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

> U.S. EPA Enforcement and Compliance History Online (ECHO) - Clean… API on Apizie: 16 endpoints (Clean Air Act Download Data Service, Clean Air Act Download Data Service, Clean Air Act Facility Search, Clean Air Act Facility Search, …) returned as clean JSON through one API key. 16 endpoints are live now. Call it over REST at https://apizie.tech/v1/open-data:epa-air/{endpoint} or from Claude, ChatGPT and Cursor through the Apizie MCP server. Free plan: 1,000 requests a month.

- Project key: `open-data:epa-air`
- Category: Open Data
- Status: live
- Source: https://echo.epa.gov/resources/general-info/contact-us
- Page: https://apizie.tech/api/open-data/epa-air
- OpenAPI: https://apizie.tech/api/open-data/epa-air/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

### Clean Air Act Download Data Service
`GET https://apizie.tech/v1/open-data:epa-air/get-air-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… |
| p_pretty_print | number | no | Optional flag to request GeoJSON formatted results to be pretty printed. Only provide a numeric value when the output needs to be human… |

### Clean Air Act Download Data Service
`POST https://apizie.tech/v1/open-data:epa-air/post-air-rest-services-get-download`

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

### Clean Air Act Facility Search
`GET https://apizie.tech/v1/open-data:epa-air/get-air-rest-services-get-facilities`

| 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_sa | string | no | Facility street address. Enter a complete or partial street address. |
| p_sa1 | string | no | Facility street address. Enter a complete or partial street address. Note that p_sa1 is culmulative with p_sa. |
| 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_lcon | string | no | Air Program Local Control Region Code Filter. Enter one or more local control region codes to filter results. Provide multiple codes as a… |
| p_frs | string | no | Facility Registry Service ID Filter. Enter a single 12-digit FRS identifier to filter results. |
| p_reg | string | no | EPA Region Filter. Provide a single value of 01 thru 10 to restrict results to a single EPA region. |
| p_sic | string | no | Standard Industrial Classification (SIC) Code Filter. Enter a single 4-digit SIC Code to filter results. If more complex filtering is… |
| p_ncs | string | no | North American Industry Classification System Filter. Enter two to six digits to filter results to facilities having matching NAICS codes.… |
| p_qnc | number | no | Number of quarters in non-compliance limiter. Enter an integer value between 1 and 4 to limit results. |
| p_pen | string | no | Last Penality Date Qualifier Filter. Enter one of the following: - NEVER = No Penalties - ANY = Any Penalty - LEXX = Less than or equal to… |
| p_opst | string | no | Operating status filter. Enter one or more operating status codes to limit results. Provide multiple codes as a comma-delimited list. |
| p_c1lat | number | no | In decimal degrees. Latitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the… |
| p_c1lon | number | no | In decimal degrees. Longitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the… |
| p_c2lat | number | no | In decimal degrees. Latitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the… |
| p_c2lon | number | no | In decimal degrees. Longitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the… |
| p_usmex | string | no | US-Mexico Border Flag. Enter Y/N to restrict searches to facilities located within 100KM of the border. |
| p_sic2 | string | no | Standard Industrial Classification (SIC) Code Filter Alternate 2. Enter a wild-card search against SIC codes. A final wild-card is always… |
| p_sic4 | string | no | Standard Industrial Classification (SIC) Code Filter Alternate 3. Enter the first 2, 3 or 4 SIC code digits to filter results to… |
| p_fa | string | no | Federal Agency. 1 character or 5-character values; may contain multiple comma-separated values. ALL will retrieve all facilities where the… |
| p_act | string | no | Active Permits/Facilities Flag. Provide Y or N to filter results to facilities with active permits. |
| p_maj | string | no | Major Facility Flag. Enter Y to restrict results to Major facilities only. |
| p_mact | string | no | CAA Maximum Achievable Control Technology (MACT) Subpart codes (alpha ID between 1 and 7 characters) applicable to the facility. |
| p_nsps | string | no | Air Programl New Source Performance Standards (NSPS) Subpart Code Search. One or more valid Air Program NSPS Program codes cand be passed. |
| p_nspsm | string | no | Air Programl New Source Performance Standards Minors (NSPSM) Subpart Code Search. One or more valid Air Program NSPSM Subpart codes can be… |
| p_prog | string | no | Air Program Code Filter. Enter one or more Air program codes to filter results. Provide multiple values as a comma-delimited list. |
| 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_qiv | string | no | Quarters in Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of noncompliance. - Z = Zero… |
| p_naa | string | no | Non-Attainment Area Flag. Enter a Y or N to filter for or against facilities flagged as non-attainment areas. |
| p_impw | string | no | Discharging into Impaired Waters Flag. Enter Y to limit results to facilities with discharge to waterbodies listed as impaired in the… |
| p_trep | string | no | Current Toxics Release Inventory (TRI) Reporter Limiter. Enter one of the following codes to limit results. - CURR = Current TRI reporter.… |
| p_tri_cat | string | no | Toxic Release Inventory Released To Air Chemical Identifier Category Filter. Enter the chemical identifier category code to limit results.… |
| p_tri_amt | string | no | Toxic Release Inventory Release Amount Filter. Enter a value in pounds to limit results to facilities releasing this amount or greateer of… |
| p_tri_any_amt | number | no | Toxic Release Inventory Release Of Any Kind Above Value Filter. Enter a value to limit results to facilities releasing this amount or more… |
| p_tri_pol | string | no | Toxic Release Inventory Chemical Identifier Filter. Enter one or more chemical identifier codes to limit results. Note when filtering by… |
| p_ghg_cat | string | no | Green House Gas (GHG) Gas Code Category. Must be used with either a formatted (p_ghg_amt) or custom (p_ghg_any_amt) release amount. |
| p_ghg_amt | string | no | Green House Gas (GHG) CO2 Equivalent Formatted Release Amount. First 2 characters must contain GT (greater than) followed by a number. |
| p_ghg_any_amt | number | no | Green House Gas (GHG) C02 Equivalent Custom Amount. The C02E value reported for the provided category, will be greater or equal to the… |
| p_ghg_yr | string | no | Green House Gas (GHG) Reporting Year. (2010 through 2015) |
| p_nei_pol | string | no | National Emissions Inventory (NEI) Pollutant Identifier. When a pollutant identifer is entered a corresponding formatted amount or custom… |
| p_nei_amt | string | no | National Emissions Inventory (NEI) Formatted Pollutant Amount. A formatted value where the 1st two characters must start with GT or LT… |
| p_nei_any_amt | number | no | National Emissions Inventory (NEI) Custom Pollutant Amount. Only a number can be entered. Identifies facilities with where the NEI… |
| p_nei_yr | string | no | National Emissions Inventory (NEI) year: 2014 or 2011 |
| p_nei_cat | string | no | National Emissions Inventory (NEI) Pollutant Category. When a pollutant category is entered, a corresponding formatted pollutant amount or… |
| p_pm | string | no | Percent Minority Population Limiter. Enter a value to restrict results to facilities with a given percentage of minority population within… |
| p_pd | string | no | Population Density Limiter (per sq mile). Enter a value to limit results to facilities located in area of a given population density. -… |
| p_ico | string | no | Indian Country Flag. Enter a "Y" or "N" to restrict searches to facilities inside or outside Indian Country. |
| p_huc | string | no | 2-, 4-, 6-, or 8-character watershed code. May contain multiple comma-separated values. |
| p_wbd | string | no | 2-, 4-, 6-, 8-, 10-, or 12-character watershed (WBD from the USGS Watershed Boundary Dataset). May contain multiple comma-separated… |
| p_pid | string | no | Nine-digit permit IDs. May contain up to 2000 comma-separated values. |
| p_med | string | no | Filter Results by Media. - M = RMP (Risk Management Plan) - R = RCRA (Hazardous Waste) - S = SDWA (Public Drinking Water Systems) - W =… |
| 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 | number | 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_stsl | string | no | Last Stack Test [within / not within] Specified Date Range Indicator. - W = within date range - N = not within date range |
| p_stsly | number | no | Number of years (1 to 5) since date of last stack test. A value of 1 means it has been inspected within the year. |
| p_stsla | string | no | Stack Last Test Code Filter. Enter a value to limit results: - A = All - E = EPA - S = State |
| p_stres | string | no | Air Stack Test Status Description Filter. Enter one or more test status descriptions to filter results. Enter multiple values as a… |
| p_sttyp | string | no | Air Conductor Type Code Filter. Enter one or more conductor type codes to filter results. Provide multiple values as a comma-delimited list. |
| 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_tribeid | number | no | Numeric code for tribe (or list of tribes). |
| p_tribename | string | no | Tribe Name Filter. Enter a single tribe name to filter results. |
| p_tribedist | number | no | Proximity to tribal land limiter. Enter an amount of mile between 0 and 25 to filter results. This parameter is only evaluated if… |
| p_owop | string | no | Owner/Operator code filter. Enter one or more codes to limit results. - CNG - COR - CTG - DIS - FDF - MWD - MXO - NON - POF - SDT - STF -… |
| p_agoo | string | no | Indicates whether to AND or OR the Owner/Operator parameter (p_owop) and the federal agency code (p_fa) parameters. |
| 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_stdt1 | string | no | Beginning of date range of most recent stack test. |
| p_stdt2 | string | no | End of date range of most recent stack test. |
| p_pityp | string | no | Inspection Type: - CAC = Corrective Action Inspection - CAV = Compliance Assistance Visit - CDI = Case Development Inspection - CEI =… |
| p_cifdi | string | no | Compliance issuess found during inspection. |
| 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_psncq | string | no | Quarters in Significant Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of significant… |
| p_pctrack | string | no | Compliance Tracking Limiter. Provide a keyword to indicate the extent to which data is being entered and effluent exceedances are being… |
| p_swpa | string | no | Source water protection area |
| p_des | string | no | Universe Designation Limiter. Enter one or more universe designation codes. Provide multiple values as a comma-delimited list. Use code… |
| p_fntype | string | no | Controls type of text search performed on facility name with parameter p_fn. - EXACT = Find facilities having the exact provided name(s).… |
| p_hpvmth | string | no | Months in high priority violation status out of the previous three years limiter. Provide a number of months in the past three years.… |
| p_recvio | string | no | Recent Violation Status Filter. Enter one or more recent violation codes to limit results. Provide multiple values as a comma-delimited… |
| p_pollvio | string | no | Air Pollutant Code For A Recent Violation Filter. Provide one or more pollutant codes to select facilities with one or more of the entered… |
| p_ar | string | no | Associated EPA Air Reports Program Filter. Enter multiple values as a comma-delimited list. Valid values are: - TRI = Toxic Release… |
| p_tri_yr | string | no | Toxic Release Inventory Reporting Year Filter. Enter one or more year values to filter results by the TRI reporting year. Provide multiple… |
| p_pidall | string | no | Controls whether search is restricted to existing system. Y means the search will match the p_pid parameter against all associated permits… |
| p_fac_ico | string | no | FRS tribal land code flag. Enter "Y" or "N" to include or exclude facilities based on FRS tribal land code. |
| p_icoo | string | no | Indian country search and/or flag. Enter "Y" to set indian country search conditions to return any results found using p_ico, p_fac_ico or… |
| p_fac_icos | string | no | FRS tribal land spatial flag. Enter "Y" or "N" to include or exclude facilities based on FRS tribal land spatial flag. |
| p_ejscreen | string | no | Enter "Y" to limit facilities to Census block groups where one of more Environmental Justice indexes above 80th percentile. |
| p_limit_addr | string | no | Limit Address Search Flag. Enter Y to restrict facility searches to native data source only. |
| p_lat | number | no | Latitude location in decimal degrees. |
| p_long | number | no | Longitude location in decimal degrees. |
| p_radius | number | no | Spatial Search Radius. Enter a radius up to 100 miles in which to spatially search for facilities. |
| p_decouple | string | no | Decouple Inspection Code Search Flag. Enter "Y" to search for inspection code types with p_pityp without respect to the date range search… |
| p_ejscreen_over80cnt | string | no | The number of Environmenmt Justice Indicators above the 80th percentile. Valid values are 1 through 11. |
| 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. |
| tablelist | string | no | Table List Flag. Enter a Y to display the first page of facility results. |
| maplist | string | no | Map List Flag. Provide a Y to return mappable coordinates representing the full geographic extent of the queryset (all facilities that met… |
| summarylist | string | no | Summary List Flag. Enter a Y to return a list of summary statistics based on the parameters submitted to the query service. |
| 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… |

### Clean Air Act Facility Search
`POST https://apizie.tech/v1/open-data:epa-air/post-air-rest-services-get-facilities`

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

### Clean Air Act Facility Enhanced Search
`GET https://apizie.tech/v1/open-data:epa-air/get-air-rest-services-get-facility-info`

| 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_sa | string | no | Facility street address. Enter a complete or partial street address. |
| p_sa1 | string | no | Facility street address. Enter a complete or partial street address. Note that p_sa1 is culmulative with p_sa. |
| 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_lcon | string | no | Air Program Local Control Region Code Filter. Enter one or more local control region codes to filter results. Provide multiple codes as a… |
| p_frs | string | no | Facility Registry Service ID Filter. Enter a single 12-digit FRS identifier to filter results. |
| p_reg | string | no | EPA Region Filter. Provide a single value of 01 thru 10 to restrict results to a single EPA region. |
| p_sic | string | no | Standard Industrial Classification (SIC) Code Filter. Enter a single 4-digit SIC Code to filter results. If more complex filtering is… |
| p_ncs | string | no | North American Industry Classification System Filter. Enter two to six digits to filter results to facilities having matching NAICS codes.… |
| p_qnc | number | no | Number of quarters in non-compliance limiter. Enter an integer value between 1 and 4 to limit results. |
| p_pen | string | no | Last Penality Date Qualifier Filter. Enter one of the following: - NEVER = No Penalties - ANY = Any Penalty - LEXX = Less than or equal to… |
| p_opst | string | no | Operating status filter. Enter one or more operating status codes to limit results. Provide multiple codes as a comma-delimited list. |
| xmin | number | no | Minimum longitude value in decimal degrees. |
| ymin | number | no | Minimum latitude value in decimal degrees. |
| xmax | number | no | Maximum longitude value in decimal degrees. |
| ymax | number | no | Maximum latitude value in decimal degrees. |
| p_usmex | string | no | US-Mexico Border Flag. Enter Y/N to restrict searches to facilities located within 100KM of the border. |
| p_sic2 | string | no | Standard Industrial Classification (SIC) Code Filter Alternate 2. Enter a wild-card search against SIC codes. A final wild-card is always… |
| p_sic4 | string | no | Standard Industrial Classification (SIC) Code Filter Alternate 3. Enter the first 2, 3 or 4 SIC code digits to filter results to… |
| p_fa | string | no | Federal Agency. 1 character or 5-character values; may contain multiple comma-separated values. ALL will retrieve all facilities where the… |
| p_act | string | no | Active Permits/Facilities Flag. Provide Y or N to filter results to facilities with active permits. |
| p_maj | string | no | Major Facility Flag. Enter Y to restrict results to Major facilities only. |
| p_mact | string | no | CAA Maximum Achievable Control Technology (MACT) Subpart codes (alpha ID between 1 and 7 characters) applicable to the facility. |
| p_nsps | string | no | Air Programl New Source Performance Standards (NSPS) Subpart Code Search. One or more valid Air Program NSPS Program codes cand be passed. |
| p_nspsm | string | no | Air Programl New Source Performance Standards Minors (NSPSM) Subpart Code Search. One or more valid Air Program NSPSM Subpart codes can be… |
| p_prog | string | no | Air Program Code Filter. Enter one or more Air program codes to filter results. Provide multiple values as a comma-delimited list. |
| 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_qiv | string | no | Quarters in Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of noncompliance. - Z = Zero… |
| p_naa | string | no | Non-Attainment Area Flag. Enter a Y or N to filter for or against facilities flagged as non-attainment areas. |
| p_impw | string | no | Discharging into Impaired Waters Flag. Enter Y to limit results to facilities with discharge to waterbodies listed as impaired in the… |
| p_trep | string | no | Current Toxics Release Inventory (TRI) Reporter Limiter. Enter one of the following codes to limit results. - CURR = Current TRI reporter.… |
| p_tri_cat | string | no | Toxic Release Inventory Released To Air Chemical Identifier Category Filter. Enter the chemical identifier category code to limit results.… |
| p_tri_amt | string | no | Toxic Release Inventory Release Amount Filter. Enter a value in pounds to limit results to facilities releasing this amount or greateer of… |
| p_tri_any_amt | number | no | Toxic Release Inventory Release Of Any Kind Above Value Filter. Enter a value to limit results to facilities releasing this amount or more… |
| p_tri_pol | string | no | Toxic Release Inventory Chemical Identifier Filter. Enter one or more chemical identifier codes to limit results. Note when filtering by… |
| p_ghg_cat | string | no | Green House Gas (GHG) Gas Code Category. Must be used with either a formatted (p_ghg_amt) or custom (p_ghg_any_amt) release amount. |
| p_ghg_amt | string | no | Green House Gas (GHG) CO2 Equivalent Formatted Release Amount. First 2 characters must contain GT (greater than) followed by a number. |
| p_ghg_any_amt | number | no | Green House Gas (GHG) C02 Equivalent Custom Amount. The C02E value reported for the provided category, will be greater or equal to the… |
| p_ghg_yr | string | no | Green House Gas (GHG) Reporting Year. (2010 through 2015) |
| p_nei_pol | string | no | National Emissions Inventory (NEI) Pollutant Identifier. When a pollutant identifer is entered a corresponding formatted amount or custom… |
| p_nei_amt | string | no | National Emissions Inventory (NEI) Formatted Pollutant Amount. A formatted value where the 1st two characters must start with GT or LT… |
| p_nei_any_amt | number | no | National Emissions Inventory (NEI) Custom Pollutant Amount. Only a number can be entered. Identifies facilities with where the NEI… |
| p_nei_yr | string | no | National Emissions Inventory (NEI) year: 2014 or 2011 |
| p_nei_cat | string | no | National Emissions Inventory (NEI) Pollutant Category. When a pollutant category is entered, a corresponding formatted pollutant amount or… |
| p_pm | string | no | Percent Minority Population Limiter. Enter a value to restrict results to facilities with a given percentage of minority population within… |
| p_pd | string | no | Population Density Limiter (per sq mile). Enter a value to limit results to facilities located in area of a given population density. -… |
| p_ico | string | no | Indian Country Flag. Enter a "Y" or "N" to restrict searches to facilities inside or outside Indian Country. |
| p_huc | string | no | 2-, 4-, 6-, or 8-character watershed code. May contain multiple comma-separated values. |
| p_wbd | string | no | 2-, 4-, 6-, 8-, 10-, or 12-character watershed (WBD from the USGS Watershed Boundary Dataset). May contain multiple comma-separated… |
| p_pid | string | no | Nine-digit permit IDs. May contain up to 2000 comma-separated values. |
| p_med | string | no | Filter Results by Media. - M = RMP (Risk Management Plan) - R = RCRA (Hazardous Waste) - S = SDWA (Public Drinking Water Systems) - W =… |
| 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 | number | 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_stsl | string | no | Last Stack Test [within / not within] Specified Date Range Indicator. - W = within date range - N = not within date range |
| p_stsly | number | no | Number of years (1 to 5) since date of last stack test. A value of 1 means it has been inspected within the year. |
| p_stsla | string | no | Stack Last Test Code Filter. Enter a value to limit results: - A = All - E = EPA - S = State |
| p_stres | string | no | Air Stack Test Status Description Filter. Enter one or more test status descriptions to filter results. Enter multiple values as a… |
| p_sttyp | string | no | Air Conductor Type Code Filter. Enter one or more conductor type codes to filter results. Provide multiple values as a comma-delimited list. |
| 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_tribeid | number | no | Numeric code for tribe (or list of tribes). |
| p_tribename | string | no | Tribe Name Filter. Enter a single tribe name to filter results. |
| p_tribedist | number | no | Proximity to tribal land limiter. Enter an amount of mile between 0 and 25 to filter results. This parameter is only evaluated if… |
| p_owop | string | no | Owner/Operator code filter. Enter one or more codes to limit results. - CNG - COR - CTG - DIS - FDF - MWD - MXO - NON - POF - SDT - STF -… |
| p_agoo | string | no | Indicates whether to AND or OR the Owner/Operator parameter (p_owop) and the federal agency code (p_fa) parameters. |
| 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_stdt1 | string | no | Beginning of date range of most recent stack test. |
| p_stdt2 | string | no | End of date range of most recent stack test. |
| p_pityp | string | no | Inspection Type: - CAC = Corrective Action Inspection - CAV = Compliance Assistance Visit - CDI = Case Development Inspection - CEI =… |
| p_cifdi | string | no | Compliance issuess found during inspection. |
| 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_psncq | string | no | Quarters in Significant Noncompliance Limiter. Enter a coded value to limit results to facilities with given quarter of significant… |
| p_pctrack | string | no | Compliance Tracking Limiter. Provide a keyword to indicate the extent to which data is being entered and effluent exceedances are being… |
| p_swpa | string | no | Source water protection area |
| p_des | string | no | Universe Designation Limiter. Enter one or more universe designation codes. Provide multiple values as a comma-delimited list. Use code… |
| p_fntype | string | no | Controls type of text search performed on facility name with parameter p_fn. - EXACT = Find facilities having the exact provided name(s).… |
| p_hpvmth | string | no | Months in high priority violation status out of the previous three years limiter. Provide a number of months in the past three years.… |
| p_recvio | string | no | Recent Violation Status Filter. Enter one or more recent violation codes to limit results. Provide multiple values as a comma-delimited… |
| p_pollvio | string | no | Air Pollutant Code For A Recent Violation Filter. Provide one or more pollutant codes to select facilities with one or more of the entered… |
| p_ar | string | no | Associated EPA Air Reports Program Filter. Enter multiple values as a comma-delimited list. Valid values are: - TRI = Toxic Release… |
| p_tri_yr | string | no | Toxic Release Inventory Reporting Year Filter. Enter one or more year values to filter results by the TRI reporting year. Provide multiple… |
| p_pidall | string | no | Controls whether search is restricted to existing system. Y means the search will match the p_pid parameter against all associated permits… |
| p_fac_ico | string | no | FRS tribal land code flag. Enter "Y" or "N" to include or exclude facilities based on FRS tribal land code. |
| p_icoo | string | no | Indian country search and/or flag. Enter "Y" to set indian country search conditions to return any results found using p_ico, p_fac_ico or… |
| p_fac_icos | string | no | FRS tribal land spatial flag. Enter "Y" or "N" to include or exclude facilities based on FRS tribal land spatial flag. |
| p_ejscreen | string | no | Enter "Y" to limit facilities to Census block groups where one of more Environmental Justice indexes above 80th percentile. |
| p_limit_addr | string | no | Limit Address Search Flag. Enter Y to restrict facility searches to native data source only. |
| p_lat | number | no | Latitude location in decimal degrees. |
| p_long | number | no | Longitude location in decimal degrees. |
| p_radius | number | no | Spatial Search Radius. Enter a radius up to 100 miles in which to spatially search for facilities. |
| p_decouple | string | no | Decouple Inspection Code Search Flag. Enter "Y" to search for inspection code types with p_pityp without respect to the date range search… |
| p_ejscreen_over80cnt | string | no | The number of Environmenmt Justice Indicators above the 80th percentile. Valid values are 1 through 11. |
| 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. |
| summarylist | string | no | Summary List Flag. Enter a Y to return a list of summary statistics based on the parameters submitted to the query service. |
| 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… |
| p_pretty_print | number | no | Optional flag to request GeoJSON formatted results to be pretty printed. Only provide a numeric value when the output needs to be human… |

### Clean Air Act Facility Enhanced Search
`POST https://apizie.tech/v1/open-data:epa-air/post-air-rest-services-get-facility-info`

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

### Clean Air Act GeoJSON Service
`GET https://apizie.tech/v1/open-data:epa-air/get-air-rest-services-get-geojson`

| Parameter | Type | Required | Description |
|---|---|---|---|
| output | string | no | Output Format Flag. Enter one of the following keywords: - GEOJSON = Facility results formatted as GeoJSON feature collection (default). -… |
| qid | string | yes | Query ID Selector. Enter the QueryID number from a previously run query. |
| 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… |
| p_pretty_print | number | no | Optional flag to request GeoJSON formatted results to be pretty printed. Only provide a numeric value when the output needs to be human… |

### Clean Air Act GeoJSON Service
`POST https://apizie.tech/v1/open-data:epa-air/post-air-rest-services-get-geojson`

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

### Clean Air Act Info Clusters Service
`GET https://apizie.tech/v1/open-data:epa-air/get-air-rest-services-get-info-clusters`

| 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). -… |
| p_qid | string | yes | Query ID Selector. Enter the QueryID number from a previously run query. |
| p_pretty_print | number | no | Optional flag to request GeoJSON formatted results to be pretty printed. Only provide a numeric value when the output needs to be human… |

### Clean Air Act Info Clusters Service
`POST https://apizie.tech/v1/open-data:epa-air/post-air-rest-services-get-info-clusters`

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

### Clean Air Act Map Service
`GET https://apizie.tech/v1/open-data:epa-air/get-air-rest-services-get-map`

| 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. |
| 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. |
| tablelist | string | no | Table List Flag. Enter a Y to display the first page of facility results. |
| c1_lat | number | no | Latitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be… |
| c1_long | number | no | Longitude of 1st corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must… |
| c2_lat | number | no | Latitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must be… |
| c2_long | number | no | Longitude of 2nd corner of box that bounds the resulting facilities. The latitude and longitude of both corners of the bounding box must… |
| p_id | string | yes | Identifier for the service. |

### Clean Air Act Map Service
`POST https://apizie.tech/v1/open-data:epa-air/post-air-rest-services-get-map`

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

### Clean Air Act Search by Query ID
`GET https://apizie.tech/v1/open-data:epa-air/get-air-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… |

### Clean Air Act Search by Query ID
`POST https://apizie.tech/v1/open-data:epa-air/post-air-rest-services-get-qid`

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

### Clean Air Act Metadata Service
`GET https://apizie.tech/v1/open-data:epa-air/get-air-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. |

### Clean Air Act Metadata Service
`POST https://apizie.tech/v1/open-data:epa-air/post-air-rest-services-metadata`

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

## Example
```
curl "https://apizie.tech/v1/open-data:epa-air/get-air-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) - Clean… API?
Create a free Apizie key, then send GET https://apizie.tech/v1/open-data:epa-air/get-air-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) - Clean… 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) - Clean… API?
Yes. Add the Apizie MCP server (https://apizie.tech/mcp) to Claude, ChatGPT, Cursor or VS Code, then ask in plain language. The agent calls run_scraper with project key open-data:epa-air.

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