Clean Water Act compliance for facilities in any US state or county, from EPA ECHO
Clean Water Act compliance for facilities in any US state or county, from EPA ECHO. Returns each facility's permit, current violation status, quarters in non-compliance, inspections, formal enforcement actions and penalties, plus the state-level totals EPA computes across the whole query. Filter to violators only.
20000 (raw units)
price
1
calls / 30d
1
unique payers
2026-08-24
updated
Provider
x402-filings.datalayer.workers.dev · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x917e635b83F0dd7e8172c55EC4EEbb28B734cA85",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "20000",
"maxTimeoutSeconds": 60
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"method": "GET",
"queryParams": {
"county": "New Castle",
"limit": 20,
"state": "DE",
"violatorsOnly": false
},
"type": "http"
},
"output": {
"example": {
"count": 20,
"facilities": [
{
"address": "120 HAY ROAD, WILMINGTON, DE",
"currentViolation": null,
"inspectionsLast5Years": 3,
"name": "120 HAY ROAD LLC",
"permitId": "DE0050857",
"statute": "CWA"
}
],
"query": {
"limit": 20,
"state": "DE",
"violatorsOnly": false
},
"stateSummary": {
"facilitiesMatched": 1893,
"formalEnforcementActions": 31,
"inspections": 288,
"totalPenalties": "$1,204,551",
"withViolationsLast4Quarters": 204
}
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"county": {
"description": "County name to narrow the search.",
"examples": [
"New Castle"
],
"type": "string"
},
"limit": {
"description": "Max facilities, 1-50. Default 20.",
"examples": [
20
],
"type": "integer"
},
"state": {
"description": "Two-letter US state code. Required.",
"examples": [
"DE"
],
"type": "string"
},
"violatorsOnly": {
"description": "Only facilities with recent violations.",
"examples": [
false
],
"type": "boolean"
}
},
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
}
}Use it
curl
curl "https://x402-filings.datalayer.workers.dev/v1/safety/epa-violations" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://x402-filings.datalayer.workers.dev/v1/safety/epa-violations");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://x402-filings.datalayer.workers.dev/v1/safety/epa-violations")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/6087.json, and this resource appears in /discovery/resources and /discovery/search.