U.S. EPA Enforcement and Compliance History Online (ECHO) - All Data
epa · Government
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
Sample Requests
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.
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));Validates query search parameters and returns query identifier. Use the responseset parameter to set the page size
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));Returns either an array of Facilities or an array of Clusters that meet the specified search criteria.
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
- 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?