Find an API

Search public APIs with auth details & Postman guides

← All APIs

U.S. EPA Enforcement and Compliance History Online (ECHO) - All Data

epa · Government

Government No Auth Free & Open open_data

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 information for over 1 million regulated facilities nationwide. ECHO Rest Services provide multiple service endpoints, each with specific capabilities, to search and retrieve data on facilities regulated as Clean Air Act (CAA) stationary sources, Clean Water Act (CWA) dischargers, Resour

Authentication

No authentication requiredFree to use with no key needed.

Sample Requests

GET Combined ECHO Download Data Service

Based on the QID obtained from a get_facilities or get_facility_info query, return a comma separated value (CSV) file of the facilities found.

https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_download?qid=example&output=json&qcolumns=example&p_pretty_print=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_download?qid=example&output=json&qcolumns=example&p_pretty_print=1"
import requests
params = {
    "qid": "example",
    "output": "json",
    "qcolumns": "example",
    "p_pretty_print": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_download",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_download');
url.searchParams.set('qid', 'example');
url.searchParams.set('output', 'json');
url.searchParams.set('qcolumns', 'example');
url.searchParams.set('p_pretty_print', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_download")
	q := baseURL.Query()
	q.Set("qid", "example")
	q.Set("output", "json")
	q.Set("qcolumns", "example")
	q.Set("p_pretty_print", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_download")
uri.query = URI.encode_www_form({
  "qid" => "example",
  "output" => "json",
  "qcolumns" => "example",
  "p_pretty_print" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_download?" . http_build_query([
    "qid" => "example",
    "output" => "json",
    "qcolumns" => "example",
    "p_pretty_print" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Combined ECHO Facility Search Service

Validates query search parameters and returns query identifier. Use the responseset parameter to set the page size

https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facilities?p_co=example&p_cs=2&p_ct=example&p_fa=example&p_ff=Y&p_fn=example&p_pd=NONE&p_pm=NONE&p_qs=example&p_sa=example&p_st=example&p_act=Y&p_fea=W&p_frs=example&p_huc=example&p_ico=Y&p_iea=W&p_lat=1&p_maj=Y&p_med=A&p_naa=example&p_ncs=example&p_ocr=example&p_oct=Z&p_pen=example&p_pid=example&p_qiv=0&p_reg=01&p_sa1=example&p_sfs=example&p_sic=example&p_wbd=example&p_ysl=W&p_zip=example&output=JSONP&p_agoo=AND&p_feaa=A&p_feac=example&p_feay=1&p_fips=example&p_icoo=example&p_ieaa=E&p_ieay=1&p_impw=Y&p_long=1&p_mact=example&p_neiu=example&p_sic2=example&p_sic4=example&p_trep=CURR&p_ysla=E&p_ysly=1&maplist=Y&p_c1lat=1&p_c1lon=1&p_c2lat=1&p_c2lon=1&p_usmex=Y&callback=example&p_fntype=ALL&p_radius=1&qcolumns=example&queryset=1&p_fea_5yr=example&p_iea_5yr=example&p_tribeid=1&tablelist=Y&p_ejscreen=example&p_fac_icos=example&p_istatute=example&p_tribedist=1&p_tribename=example&responseset=1&summarylist=Y&p_limit_addr=Y&p_ejscreen_over80cnt=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facilities?p_co=example&p_cs=2&p_ct=example&p_fa=example&p_ff=Y&p_fn=example&p_pd=NONE&p_pm=NONE&p_qs=example&p_sa=example&p_st=example&p_act=Y&p_fea=W&p_frs=example&p_huc=example&p_ico=Y&p_iea=W&p_lat=1&p_maj=Y&p_med=A&p_naa=example&p_ncs=example&p_ocr=example&p_oct=Z&p_pen=example&p_pid=example&p_qiv=0&p_reg=01&p_sa1=example&p_sfs=example&p_sic=example&p_wbd=example&p_ysl=W&p_zip=example&output=JSONP&p_agoo=AND&p_feaa=A&p_feac=example&p_feay=1&p_fips=example&p_icoo=example&p_ieaa=E&p_ieay=1&p_impw=Y&p_long=1&p_mact=example&p_neiu=example&p_sic2=example&p_sic4=example&p_trep=CURR&p_ysla=E&p_ysly=1&maplist=Y&p_c1lat=1&p_c1lon=1&p_c2lat=1&p_c2lon=1&p_usmex=Y&callback=example&p_fntype=ALL&p_radius=1&qcolumns=example&queryset=1&p_fea_5yr=example&p_iea_5yr=example&p_tribeid=1&tablelist=Y&p_ejscreen=example&p_fac_icos=example&p_istatute=example&p_tribedist=1&p_tribename=example&responseset=1&summarylist=Y&p_limit_addr=Y&p_ejscreen_over80cnt=1"
import requests
params = {
    "p_co": "example",
    "p_cs": "2",
    "p_ct": "example",
    "p_fa": "example",
    "p_ff": "Y",
    "p_fn": "example",
    "p_pd": "NONE",
    "p_pm": "NONE",
    "p_qs": "example",
    "p_sa": "example",
    "p_st": "example",
    "p_act": "Y",
    "p_fea": "W",
    "p_frs": "example",
    "p_huc": "example",
    "p_ico": "Y",
    "p_iea": "W",
    "p_lat": "1",
    "p_maj": "Y",
    "p_med": "A",
    "p_naa": "example",
    "p_ncs": "example",
    "p_ocr": "example",
    "p_oct": "Z",
    "p_pen": "example",
    "p_pid": "example",
    "p_qiv": "0",
    "p_reg": "01",
    "p_sa1": "example",
    "p_sfs": "example",
    "p_sic": "example",
    "p_wbd": "example",
    "p_ysl": "W",
    "p_zip": "example",
    "output": "JSONP",
    "p_agoo": "AND",
    "p_feaa": "A",
    "p_feac": "example",
    "p_feay": "1",
    "p_fips": "example",
    "p_icoo": "example",
    "p_ieaa": "E",
    "p_ieay": "1",
    "p_impw": "Y",
    "p_long": "1",
    "p_mact": "example",
    "p_neiu": "example",
    "p_sic2": "example",
    "p_sic4": "example",
    "p_trep": "CURR",
    "p_ysla": "E",
    "p_ysly": "1",
    "maplist": "Y",
    "p_c1lat": "1",
    "p_c1lon": "1",
    "p_c2lat": "1",
    "p_c2lon": "1",
    "p_usmex": "Y",
    "callback": "example",
    "p_fntype": "ALL",
    "p_radius": "1",
    "qcolumns": "example",
    "queryset": "1",
    "p_fea_5yr": "example",
    "p_iea_5yr": "example",
    "p_tribeid": "1",
    "tablelist": "Y",
    "p_ejscreen": "example",
    "p_fac_icos": "example",
    "p_istatute": "example",
    "p_tribedist": "1",
    "p_tribename": "example",
    "responseset": "1",
    "summarylist": "Y",
    "p_limit_addr": "Y",
    "p_ejscreen_over80cnt": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facilities",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facilities');
url.searchParams.set('p_co', 'example');
url.searchParams.set('p_cs', '2');
url.searchParams.set('p_ct', 'example');
url.searchParams.set('p_fa', 'example');
url.searchParams.set('p_ff', 'Y');
url.searchParams.set('p_fn', 'example');
url.searchParams.set('p_pd', 'NONE');
url.searchParams.set('p_pm', 'NONE');
url.searchParams.set('p_qs', 'example');
url.searchParams.set('p_sa', 'example');
url.searchParams.set('p_st', 'example');
url.searchParams.set('p_act', 'Y');
url.searchParams.set('p_fea', 'W');
url.searchParams.set('p_frs', 'example');
url.searchParams.set('p_huc', 'example');
url.searchParams.set('p_ico', 'Y');
url.searchParams.set('p_iea', 'W');
url.searchParams.set('p_lat', '1');
url.searchParams.set('p_maj', 'Y');
url.searchParams.set('p_med', 'A');
url.searchParams.set('p_naa', 'example');
url.searchParams.set('p_ncs', 'example');
url.searchParams.set('p_ocr', 'example');
url.searchParams.set('p_oct', 'Z');
url.searchParams.set('p_pen', 'example');
url.searchParams.set('p_pid', 'example');
url.searchParams.set('p_qiv', '0');
url.searchParams.set('p_reg', '01');
url.searchParams.set('p_sa1', 'example');
url.searchParams.set('p_sfs', 'example');
url.searchParams.set('p_sic', 'example');
url.searchParams.set('p_wbd', 'example');
url.searchParams.set('p_ysl', 'W');
url.searchParams.set('p_zip', 'example');
url.searchParams.set('output', 'JSONP');
url.searchParams.set('p_agoo', 'AND');
url.searchParams.set('p_feaa', 'A');
url.searchParams.set('p_feac', 'example');
url.searchParams.set('p_feay', '1');
url.searchParams.set('p_fips', 'example');
url.searchParams.set('p_icoo', 'example');
url.searchParams.set('p_ieaa', 'E');
url.searchParams.set('p_ieay', '1');
url.searchParams.set('p_impw', 'Y');
url.searchParams.set('p_long', '1');
url.searchParams.set('p_mact', 'example');
url.searchParams.set('p_neiu', 'example');
url.searchParams.set('p_sic2', 'example');
url.searchParams.set('p_sic4', 'example');
url.searchParams.set('p_trep', 'CURR');
url.searchParams.set('p_ysla', 'E');
url.searchParams.set('p_ysly', '1');
url.searchParams.set('maplist', 'Y');
url.searchParams.set('p_c1lat', '1');
url.searchParams.set('p_c1lon', '1');
url.searchParams.set('p_c2lat', '1');
url.searchParams.set('p_c2lon', '1');
url.searchParams.set('p_usmex', 'Y');
url.searchParams.set('callback', 'example');
url.searchParams.set('p_fntype', 'ALL');
url.searchParams.set('p_radius', '1');
url.searchParams.set('qcolumns', 'example');
url.searchParams.set('queryset', '1');
url.searchParams.set('p_fea_5yr', 'example');
url.searchParams.set('p_iea_5yr', 'example');
url.searchParams.set('p_tribeid', '1');
url.searchParams.set('tablelist', 'Y');
url.searchParams.set('p_ejscreen', 'example');
url.searchParams.set('p_fac_icos', 'example');
url.searchParams.set('p_istatute', 'example');
url.searchParams.set('p_tribedist', '1');
url.searchParams.set('p_tribename', 'example');
url.searchParams.set('responseset', '1');
url.searchParams.set('summarylist', 'Y');
url.searchParams.set('p_limit_addr', 'Y');
url.searchParams.set('p_ejscreen_over80cnt', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facilities")
	q := baseURL.Query()
	q.Set("p_co", "example")
	q.Set("p_cs", "2")
	q.Set("p_ct", "example")
	q.Set("p_fa", "example")
	q.Set("p_ff", "Y")
	q.Set("p_fn", "example")
	q.Set("p_pd", "NONE")
	q.Set("p_pm", "NONE")
	q.Set("p_qs", "example")
	q.Set("p_sa", "example")
	q.Set("p_st", "example")
	q.Set("p_act", "Y")
	q.Set("p_fea", "W")
	q.Set("p_frs", "example")
	q.Set("p_huc", "example")
	q.Set("p_ico", "Y")
	q.Set("p_iea", "W")
	q.Set("p_lat", "1")
	q.Set("p_maj", "Y")
	q.Set("p_med", "A")
	q.Set("p_naa", "example")
	q.Set("p_ncs", "example")
	q.Set("p_ocr", "example")
	q.Set("p_oct", "Z")
	q.Set("p_pen", "example")
	q.Set("p_pid", "example")
	q.Set("p_qiv", "0")
	q.Set("p_reg", "01")
	q.Set("p_sa1", "example")
	q.Set("p_sfs", "example")
	q.Set("p_sic", "example")
	q.Set("p_wbd", "example")
	q.Set("p_ysl", "W")
	q.Set("p_zip", "example")
	q.Set("output", "JSONP")
	q.Set("p_agoo", "AND")
	q.Set("p_feaa", "A")
	q.Set("p_feac", "example")
	q.Set("p_feay", "1")
	q.Set("p_fips", "example")
	q.Set("p_icoo", "example")
	q.Set("p_ieaa", "E")
	q.Set("p_ieay", "1")
	q.Set("p_impw", "Y")
	q.Set("p_long", "1")
	q.Set("p_mact", "example")
	q.Set("p_neiu", "example")
	q.Set("p_sic2", "example")
	q.Set("p_sic4", "example")
	q.Set("p_trep", "CURR")
	q.Set("p_ysla", "E")
	q.Set("p_ysly", "1")
	q.Set("maplist", "Y")
	q.Set("p_c1lat", "1")
	q.Set("p_c1lon", "1")
	q.Set("p_c2lat", "1")
	q.Set("p_c2lon", "1")
	q.Set("p_usmex", "Y")
	q.Set("callback", "example")
	q.Set("p_fntype", "ALL")
	q.Set("p_radius", "1")
	q.Set("qcolumns", "example")
	q.Set("queryset", "1")
	q.Set("p_fea_5yr", "example")
	q.Set("p_iea_5yr", "example")
	q.Set("p_tribeid", "1")
	q.Set("tablelist", "Y")
	q.Set("p_ejscreen", "example")
	q.Set("p_fac_icos", "example")
	q.Set("p_istatute", "example")
	q.Set("p_tribedist", "1")
	q.Set("p_tribename", "example")
	q.Set("responseset", "1")
	q.Set("summarylist", "Y")
	q.Set("p_limit_addr", "Y")
	q.Set("p_ejscreen_over80cnt", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facilities")
uri.query = URI.encode_www_form({
  "p_co" => "example",
  "p_cs" => "2",
  "p_ct" => "example",
  "p_fa" => "example",
  "p_ff" => "Y",
  "p_fn" => "example",
  "p_pd" => "NONE",
  "p_pm" => "NONE",
  "p_qs" => "example",
  "p_sa" => "example",
  "p_st" => "example",
  "p_act" => "Y",
  "p_fea" => "W",
  "p_frs" => "example",
  "p_huc" => "example",
  "p_ico" => "Y",
  "p_iea" => "W",
  "p_lat" => "1",
  "p_maj" => "Y",
  "p_med" => "A",
  "p_naa" => "example",
  "p_ncs" => "example",
  "p_ocr" => "example",
  "p_oct" => "Z",
  "p_pen" => "example",
  "p_pid" => "example",
  "p_qiv" => "0",
  "p_reg" => "01",
  "p_sa1" => "example",
  "p_sfs" => "example",
  "p_sic" => "example",
  "p_wbd" => "example",
  "p_ysl" => "W",
  "p_zip" => "example",
  "output" => "JSONP",
  "p_agoo" => "AND",
  "p_feaa" => "A",
  "p_feac" => "example",
  "p_feay" => "1",
  "p_fips" => "example",
  "p_icoo" => "example",
  "p_ieaa" => "E",
  "p_ieay" => "1",
  "p_impw" => "Y",
  "p_long" => "1",
  "p_mact" => "example",
  "p_neiu" => "example",
  "p_sic2" => "example",
  "p_sic4" => "example",
  "p_trep" => "CURR",
  "p_ysla" => "E",
  "p_ysly" => "1",
  "maplist" => "Y",
  "p_c1lat" => "1",
  "p_c1lon" => "1",
  "p_c2lat" => "1",
  "p_c2lon" => "1",
  "p_usmex" => "Y",
  "callback" => "example",
  "p_fntype" => "ALL",
  "p_radius" => "1",
  "qcolumns" => "example",
  "queryset" => "1",
  "p_fea_5yr" => "example",
  "p_iea_5yr" => "example",
  "p_tribeid" => "1",
  "tablelist" => "Y",
  "p_ejscreen" => "example",
  "p_fac_icos" => "example",
  "p_istatute" => "example",
  "p_tribedist" => "1",
  "p_tribename" => "example",
  "responseset" => "1",
  "summarylist" => "Y",
  "p_limit_addr" => "Y",
  "p_ejscreen_over80cnt" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facilities?" . http_build_query([
    "p_co" => "example",
    "p_cs" => "2",
    "p_ct" => "example",
    "p_fa" => "example",
    "p_ff" => "Y",
    "p_fn" => "example",
    "p_pd" => "NONE",
    "p_pm" => "NONE",
    "p_qs" => "example",
    "p_sa" => "example",
    "p_st" => "example",
    "p_act" => "Y",
    "p_fea" => "W",
    "p_frs" => "example",
    "p_huc" => "example",
    "p_ico" => "Y",
    "p_iea" => "W",
    "p_lat" => "1",
    "p_maj" => "Y",
    "p_med" => "A",
    "p_naa" => "example",
    "p_ncs" => "example",
    "p_ocr" => "example",
    "p_oct" => "Z",
    "p_pen" => "example",
    "p_pid" => "example",
    "p_qiv" => "0",
    "p_reg" => "01",
    "p_sa1" => "example",
    "p_sfs" => "example",
    "p_sic" => "example",
    "p_wbd" => "example",
    "p_ysl" => "W",
    "p_zip" => "example",
    "output" => "JSONP",
    "p_agoo" => "AND",
    "p_feaa" => "A",
    "p_feac" => "example",
    "p_feay" => "1",
    "p_fips" => "example",
    "p_icoo" => "example",
    "p_ieaa" => "E",
    "p_ieay" => "1",
    "p_impw" => "Y",
    "p_long" => "1",
    "p_mact" => "example",
    "p_neiu" => "example",
    "p_sic2" => "example",
    "p_sic4" => "example",
    "p_trep" => "CURR",
    "p_ysla" => "E",
    "p_ysly" => "1",
    "maplist" => "Y",
    "p_c1lat" => "1",
    "p_c1lon" => "1",
    "p_c2lat" => "1",
    "p_c2lon" => "1",
    "p_usmex" => "Y",
    "callback" => "example",
    "p_fntype" => "ALL",
    "p_radius" => "1",
    "qcolumns" => "example",
    "queryset" => "1",
    "p_fea_5yr" => "example",
    "p_iea_5yr" => "example",
    "p_tribeid" => "1",
    "tablelist" => "Y",
    "p_ejscreen" => "example",
    "p_fac_icos" => "example",
    "p_istatute" => "example",
    "p_tribedist" => "1",
    "p_tribename" => "example",
    "responseset" => "1",
    "summarylist" => "Y",
    "p_limit_addr" => "Y",
    "p_ejscreen_over80cnt" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));
GET Combined ECHO Facility Enhanced Search Service

Returns either an array of Facilities or an array of Clusters that meet the specified search criteria.

https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facility_info?p_co=example&p_cs=2&p_ct=example&p_fa=example&p_ff=Y&p_fn=example&p_pd=NONE&p_pm=NONE&p_qs=example&p_sa=example&p_st=example&xmax=1&xmin=1&ymax=1&ymin=1&p_act=Y&p_fea=W&p_frs=example&p_huc=example&p_ico=Y&p_iea=W&p_lat=1&p_maj=Y&p_med=A&p_naa=example&p_ncs=example&p_ocr=example&p_oct=Z&p_pen=example&p_pid=example&p_qiv=0&p_reg=01&p_sa1=example&p_sfs=example&p_sic=example&p_wbd=example&p_ysl=W&p_zip=example&output=json&p_agoo=AND&p_feaa=A&p_feac=example&p_feay=1&p_fips=example&p_icoo=example&p_ieaa=E&p_ieay=1&p_impw=Y&p_long=1&p_mact=example&p_neiu=example&p_sic2=example&p_sic4=example&p_trep=CURR&p_ysla=E&p_ysly=1&p_usmex=Y&callback=example&p_fntype=ALL&p_radius=1&qcolumns=example&p_iea_5yr=example&p_tribeid=1&p_ejscreen=example&p_fac_icos=example&p_feac_5yr=example&p_istatute=example&p_tribedist=1&p_tribename=example&responseset=1&p_limit_addr=Y&p_pretty_print=1&p_ejscreen_over80cnt=1

Hover any highlighted part to learn what it does

curl -X GET "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facility_info?p_co=example&p_cs=2&p_ct=example&p_fa=example&p_ff=Y&p_fn=example&p_pd=NONE&p_pm=NONE&p_qs=example&p_sa=example&p_st=example&xmax=1&xmin=1&ymax=1&ymin=1&p_act=Y&p_fea=W&p_frs=example&p_huc=example&p_ico=Y&p_iea=W&p_lat=1&p_maj=Y&p_med=A&p_naa=example&p_ncs=example&p_ocr=example&p_oct=Z&p_pen=example&p_pid=example&p_qiv=0&p_reg=01&p_sa1=example&p_sfs=example&p_sic=example&p_wbd=example&p_ysl=W&p_zip=example&output=json&p_agoo=AND&p_feaa=A&p_feac=example&p_feay=1&p_fips=example&p_icoo=example&p_ieaa=E&p_ieay=1&p_impw=Y&p_long=1&p_mact=example&p_neiu=example&p_sic2=example&p_sic4=example&p_trep=CURR&p_ysla=E&p_ysly=1&p_usmex=Y&callback=example&p_fntype=ALL&p_radius=1&qcolumns=example&p_iea_5yr=example&p_tribeid=1&p_ejscreen=example&p_fac_icos=example&p_feac_5yr=example&p_istatute=example&p_tribedist=1&p_tribename=example&responseset=1&p_limit_addr=Y&p_pretty_print=1&p_ejscreen_over80cnt=1"
import requests
params = {
    "p_co": "example",
    "p_cs": "2",
    "p_ct": "example",
    "p_fa": "example",
    "p_ff": "Y",
    "p_fn": "example",
    "p_pd": "NONE",
    "p_pm": "NONE",
    "p_qs": "example",
    "p_sa": "example",
    "p_st": "example",
    "xmax": "1",
    "xmin": "1",
    "ymax": "1",
    "ymin": "1",
    "p_act": "Y",
    "p_fea": "W",
    "p_frs": "example",
    "p_huc": "example",
    "p_ico": "Y",
    "p_iea": "W",
    "p_lat": "1",
    "p_maj": "Y",
    "p_med": "A",
    "p_naa": "example",
    "p_ncs": "example",
    "p_ocr": "example",
    "p_oct": "Z",
    "p_pen": "example",
    "p_pid": "example",
    "p_qiv": "0",
    "p_reg": "01",
    "p_sa1": "example",
    "p_sfs": "example",
    "p_sic": "example",
    "p_wbd": "example",
    "p_ysl": "W",
    "p_zip": "example",
    "output": "json",
    "p_agoo": "AND",
    "p_feaa": "A",
    "p_feac": "example",
    "p_feay": "1",
    "p_fips": "example",
    "p_icoo": "example",
    "p_ieaa": "E",
    "p_ieay": "1",
    "p_impw": "Y",
    "p_long": "1",
    "p_mact": "example",
    "p_neiu": "example",
    "p_sic2": "example",
    "p_sic4": "example",
    "p_trep": "CURR",
    "p_ysla": "E",
    "p_ysly": "1",
    "p_usmex": "Y",
    "callback": "example",
    "p_fntype": "ALL",
    "p_radius": "1",
    "qcolumns": "example",
    "p_iea_5yr": "example",
    "p_tribeid": "1",
    "p_ejscreen": "example",
    "p_fac_icos": "example",
    "p_feac_5yr": "example",
    "p_istatute": "example",
    "p_tribedist": "1",
    "p_tribename": "example",
    "responseset": "1",
    "p_limit_addr": "Y",
    "p_pretty_print": "1",
    "p_ejscreen_over80cnt": "1"
}
response = requests.get(
    "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facility_info",
    params=params,
)
print(response.json())
const url = new URL('https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facility_info');
url.searchParams.set('p_co', 'example');
url.searchParams.set('p_cs', '2');
url.searchParams.set('p_ct', 'example');
url.searchParams.set('p_fa', 'example');
url.searchParams.set('p_ff', 'Y');
url.searchParams.set('p_fn', 'example');
url.searchParams.set('p_pd', 'NONE');
url.searchParams.set('p_pm', 'NONE');
url.searchParams.set('p_qs', 'example');
url.searchParams.set('p_sa', 'example');
url.searchParams.set('p_st', 'example');
url.searchParams.set('xmax', '1');
url.searchParams.set('xmin', '1');
url.searchParams.set('ymax', '1');
url.searchParams.set('ymin', '1');
url.searchParams.set('p_act', 'Y');
url.searchParams.set('p_fea', 'W');
url.searchParams.set('p_frs', 'example');
url.searchParams.set('p_huc', 'example');
url.searchParams.set('p_ico', 'Y');
url.searchParams.set('p_iea', 'W');
url.searchParams.set('p_lat', '1');
url.searchParams.set('p_maj', 'Y');
url.searchParams.set('p_med', 'A');
url.searchParams.set('p_naa', 'example');
url.searchParams.set('p_ncs', 'example');
url.searchParams.set('p_ocr', 'example');
url.searchParams.set('p_oct', 'Z');
url.searchParams.set('p_pen', 'example');
url.searchParams.set('p_pid', 'example');
url.searchParams.set('p_qiv', '0');
url.searchParams.set('p_reg', '01');
url.searchParams.set('p_sa1', 'example');
url.searchParams.set('p_sfs', 'example');
url.searchParams.set('p_sic', 'example');
url.searchParams.set('p_wbd', 'example');
url.searchParams.set('p_ysl', 'W');
url.searchParams.set('p_zip', 'example');
url.searchParams.set('output', 'json');
url.searchParams.set('p_agoo', 'AND');
url.searchParams.set('p_feaa', 'A');
url.searchParams.set('p_feac', 'example');
url.searchParams.set('p_feay', '1');
url.searchParams.set('p_fips', 'example');
url.searchParams.set('p_icoo', 'example');
url.searchParams.set('p_ieaa', 'E');
url.searchParams.set('p_ieay', '1');
url.searchParams.set('p_impw', 'Y');
url.searchParams.set('p_long', '1');
url.searchParams.set('p_mact', 'example');
url.searchParams.set('p_neiu', 'example');
url.searchParams.set('p_sic2', 'example');
url.searchParams.set('p_sic4', 'example');
url.searchParams.set('p_trep', 'CURR');
url.searchParams.set('p_ysla', 'E');
url.searchParams.set('p_ysly', '1');
url.searchParams.set('p_usmex', 'Y');
url.searchParams.set('callback', 'example');
url.searchParams.set('p_fntype', 'ALL');
url.searchParams.set('p_radius', '1');
url.searchParams.set('qcolumns', 'example');
url.searchParams.set('p_iea_5yr', 'example');
url.searchParams.set('p_tribeid', '1');
url.searchParams.set('p_ejscreen', 'example');
url.searchParams.set('p_fac_icos', 'example');
url.searchParams.set('p_feac_5yr', 'example');
url.searchParams.set('p_istatute', 'example');
url.searchParams.set('p_tribedist', '1');
url.searchParams.set('p_tribename', 'example');
url.searchParams.set('responseset', '1');
url.searchParams.set('p_limit_addr', 'Y');
url.searchParams.set('p_pretty_print', '1');
url.searchParams.set('p_ejscreen_over80cnt', '1');

const response = await fetch(url); 
const data = await response.json();
console.log(data);
package main

import (
	"fmt"
	"io"
	"net/http"
	"net/url"
)

func main() {
	baseURL, _ := url.Parse("https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facility_info")
	q := baseURL.Query()
	q.Set("p_co", "example")
	q.Set("p_cs", "2")
	q.Set("p_ct", "example")
	q.Set("p_fa", "example")
	q.Set("p_ff", "Y")
	q.Set("p_fn", "example")
	q.Set("p_pd", "NONE")
	q.Set("p_pm", "NONE")
	q.Set("p_qs", "example")
	q.Set("p_sa", "example")
	q.Set("p_st", "example")
	q.Set("xmax", "1")
	q.Set("xmin", "1")
	q.Set("ymax", "1")
	q.Set("ymin", "1")
	q.Set("p_act", "Y")
	q.Set("p_fea", "W")
	q.Set("p_frs", "example")
	q.Set("p_huc", "example")
	q.Set("p_ico", "Y")
	q.Set("p_iea", "W")
	q.Set("p_lat", "1")
	q.Set("p_maj", "Y")
	q.Set("p_med", "A")
	q.Set("p_naa", "example")
	q.Set("p_ncs", "example")
	q.Set("p_ocr", "example")
	q.Set("p_oct", "Z")
	q.Set("p_pen", "example")
	q.Set("p_pid", "example")
	q.Set("p_qiv", "0")
	q.Set("p_reg", "01")
	q.Set("p_sa1", "example")
	q.Set("p_sfs", "example")
	q.Set("p_sic", "example")
	q.Set("p_wbd", "example")
	q.Set("p_ysl", "W")
	q.Set("p_zip", "example")
	q.Set("output", "json")
	q.Set("p_agoo", "AND")
	q.Set("p_feaa", "A")
	q.Set("p_feac", "example")
	q.Set("p_feay", "1")
	q.Set("p_fips", "example")
	q.Set("p_icoo", "example")
	q.Set("p_ieaa", "E")
	q.Set("p_ieay", "1")
	q.Set("p_impw", "Y")
	q.Set("p_long", "1")
	q.Set("p_mact", "example")
	q.Set("p_neiu", "example")
	q.Set("p_sic2", "example")
	q.Set("p_sic4", "example")
	q.Set("p_trep", "CURR")
	q.Set("p_ysla", "E")
	q.Set("p_ysly", "1")
	q.Set("p_usmex", "Y")
	q.Set("callback", "example")
	q.Set("p_fntype", "ALL")
	q.Set("p_radius", "1")
	q.Set("qcolumns", "example")
	q.Set("p_iea_5yr", "example")
	q.Set("p_tribeid", "1")
	q.Set("p_ejscreen", "example")
	q.Set("p_fac_icos", "example")
	q.Set("p_feac_5yr", "example")
	q.Set("p_istatute", "example")
	q.Set("p_tribedist", "1")
	q.Set("p_tribename", "example")
	q.Set("responseset", "1")
	q.Set("p_limit_addr", "Y")
	q.Set("p_pretty_print", "1")
	q.Set("p_ejscreen_over80cnt", "1")
	baseURL.RawQuery = q.Encode()
	targetURL := baseURL.String()
	req, _ := http.NewRequest("GET", targetURL, nil)

	client := &http.Client{}
	resp, _ := client.Do(req)
	defer resp.Body.Close()
	body, _ := io.ReadAll(resp.Body)
	fmt.Println(string(body))
}
require "net/http"
require "json"

uri = URI("https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facility_info")
uri.query = URI.encode_www_form({
  "p_co" => "example",
  "p_cs" => "2",
  "p_ct" => "example",
  "p_fa" => "example",
  "p_ff" => "Y",
  "p_fn" => "example",
  "p_pd" => "NONE",
  "p_pm" => "NONE",
  "p_qs" => "example",
  "p_sa" => "example",
  "p_st" => "example",
  "xmax" => "1",
  "xmin" => "1",
  "ymax" => "1",
  "ymin" => "1",
  "p_act" => "Y",
  "p_fea" => "W",
  "p_frs" => "example",
  "p_huc" => "example",
  "p_ico" => "Y",
  "p_iea" => "W",
  "p_lat" => "1",
  "p_maj" => "Y",
  "p_med" => "A",
  "p_naa" => "example",
  "p_ncs" => "example",
  "p_ocr" => "example",
  "p_oct" => "Z",
  "p_pen" => "example",
  "p_pid" => "example",
  "p_qiv" => "0",
  "p_reg" => "01",
  "p_sa1" => "example",
  "p_sfs" => "example",
  "p_sic" => "example",
  "p_wbd" => "example",
  "p_ysl" => "W",
  "p_zip" => "example",
  "output" => "json",
  "p_agoo" => "AND",
  "p_feaa" => "A",
  "p_feac" => "example",
  "p_feay" => "1",
  "p_fips" => "example",
  "p_icoo" => "example",
  "p_ieaa" => "E",
  "p_ieay" => "1",
  "p_impw" => "Y",
  "p_long" => "1",
  "p_mact" => "example",
  "p_neiu" => "example",
  "p_sic2" => "example",
  "p_sic4" => "example",
  "p_trep" => "CURR",
  "p_ysla" => "E",
  "p_ysly" => "1",
  "p_usmex" => "Y",
  "callback" => "example",
  "p_fntype" => "ALL",
  "p_radius" => "1",
  "qcolumns" => "example",
  "p_iea_5yr" => "example",
  "p_tribeid" => "1",
  "p_ejscreen" => "example",
  "p_fac_icos" => "example",
  "p_feac_5yr" => "example",
  "p_istatute" => "example",
  "p_tribedist" => "1",
  "p_tribename" => "example",
  "responseset" => "1",
  "p_limit_addr" => "Y",
  "p_pretty_print" => "1",
  "p_ejscreen_over80cnt" => "1"
})

http = Net::HTTP.new(uri.host, uri.port)
http.use_ssl = uri.scheme == "https"

req = Net::HTTP::Get.new(uri)

res = http.request(req)
puts JSON.parse(res.body)
<?php
$url = "https://api.apis.guru/v2/specs/epa.gov/echo/2019.10.15/echo_rest_services.get_facility_info?" . http_build_query([
    "p_co" => "example",
    "p_cs" => "2",
    "p_ct" => "example",
    "p_fa" => "example",
    "p_ff" => "Y",
    "p_fn" => "example",
    "p_pd" => "NONE",
    "p_pm" => "NONE",
    "p_qs" => "example",
    "p_sa" => "example",
    "p_st" => "example",
    "xmax" => "1",
    "xmin" => "1",
    "ymax" => "1",
    "ymin" => "1",
    "p_act" => "Y",
    "p_fea" => "W",
    "p_frs" => "example",
    "p_huc" => "example",
    "p_ico" => "Y",
    "p_iea" => "W",
    "p_lat" => "1",
    "p_maj" => "Y",
    "p_med" => "A",
    "p_naa" => "example",
    "p_ncs" => "example",
    "p_ocr" => "example",
    "p_oct" => "Z",
    "p_pen" => "example",
    "p_pid" => "example",
    "p_qiv" => "0",
    "p_reg" => "01",
    "p_sa1" => "example",
    "p_sfs" => "example",
    "p_sic" => "example",
    "p_wbd" => "example",
    "p_ysl" => "W",
    "p_zip" => "example",
    "output" => "json",
    "p_agoo" => "AND",
    "p_feaa" => "A",
    "p_feac" => "example",
    "p_feay" => "1",
    "p_fips" => "example",
    "p_icoo" => "example",
    "p_ieaa" => "E",
    "p_ieay" => "1",
    "p_impw" => "Y",
    "p_long" => "1",
    "p_mact" => "example",
    "p_neiu" => "example",
    "p_sic2" => "example",
    "p_sic4" => "example",
    "p_trep" => "CURR",
    "p_ysla" => "E",
    "p_ysly" => "1",
    "p_usmex" => "Y",
    "callback" => "example",
    "p_fntype" => "ALL",
    "p_radius" => "1",
    "qcolumns" => "example",
    "p_iea_5yr" => "example",
    "p_tribeid" => "1",
    "p_ejscreen" => "example",
    "p_fac_icos" => "example",
    "p_feac_5yr" => "example",
    "p_istatute" => "example",
    "p_tribedist" => "1",
    "p_tribename" => "example",
    "responseset" => "1",
    "p_limit_addr" => "Y",
    "p_pretty_print" => "1",
    "p_ejscreen_over80cnt" => "1"
]);
$opts = ["http" => [
    "method" => "GET",
]];
$ctx = stream_context_create($opts);
$res = file_get_contents($url, false, $ctx);
print_r(json_decode($res, true));

Postman Setup Guide

Get Postman ↗
  1. See official documentation for authentication and setup.

What can you build with U.S. EPA Enforcement and Compliance History Online (ECHO) - All Data?

U.S. EPA Enforcement and Compliance History Online (ECHO) - All Data is a Government API. Developers commonly use government APIs for:

  • surfacing public datasets in citizen-facing apps
  • building transparency and civic engagement tools
  • accessing legislation, court records, and official data
  • powering research and journalism tools
  • creating compliance and regulatory monitoring dashboards

No authentication required. This API is open — no signup or key needed. Ideal for quick prototypes and public-facing features. U.S. EPA Enforcement and Compliance History Online (ECHO) - All Data is free to use, making it a low-risk choice to experiment with.

New to APIs? Read our beginner's guide · Learn about API keys · What is REST?

Open documentation ↗