EPA ECHO
EPA ECHO facility, compliance, and enforcement-case digests
This Actor fetches public EPA ECHO facility/compliance/enforcement pages from targets[] and emits source-linked digest rows for EHS and diligence research. Public ECHO only.
Not legal or environmental advice. Not FDA warning letters. Not a complete multi-media inspection. Unofficial research on public records.
from $8.00 / 1,000 EPA enforcement digest row ($0.008 per delivered apify-default-dataset-item). No Actor Start. Unchanged runs that write zero default-dataset rows typically charge $0.00 on current PPE.
Open EPA ECHO Enforcement Scraper on Apify
EPA ECHO Enforcement Scraper, not a neighboring Actor
Use this page for this Actor’s job. Use FDA Warning Letters Scraper for FDA warning-letter digests; Use Status Page Incident Digest Monitor for Vendor incidents; Use NHTSA Recall Scraper for NHTSA recalls/complaints.
| This Actor | FDA Warning Letters Scraper | Status Page Incident Digest Monitor | NHTSA Recall Scraper | |
|---|---|---|---|---|
| Intent | EPA ECHO Enforcement Scraper | FDA warning-letter digests | Vendor incidents | NHTSA recalls/complaints |
| Primary input | see schema | feeds / watchTerms | status page feeds | vehicle feeds |
| What it reads | Public sources listed on the Store page | FDA public warning-letter feeds | status.io-style pages | NHTSA public APIs |
| Primary output | Dataset rows billed per live PPE | warning-letter digest rows | incident digest rows | recall digest rows |
| Not this job | Not legal or environmental advice. Not FDA warning letters. Not a complete multi-media inspection. Unofficial research on public records. | Not ClinicalTrials.gov or HHS OCR | Not EPA ECHO facilities | Not CPSC consumer-product recalls |
Store ID: taroyamada/epa-enforcement-digest. Respect source terms, robots.txt, and rate limits.
Use cases
- Facility/registry watches
- Enforcement-case text diffs
- Scheduled snapshotKey EHS boards
How is EPA ECHO Enforcement Scraper different from FDA Warning Letters Scraper and Status Page Incident Digest Monitor?
EPA ECHO Enforcement Scraper (taroyamada/epa-enforcement-digest): This Actor fetches public EPA ECHO facility/compliance/enforcement pages from targets[] and emits source-linked digest rows for EHS and diligence research. Public ECHO only. Not legal or environmental advice. Not FDA warning letters. Not a complete multi-media inspection. Unofficial research on public records. FDA Warning Letters Scraper is for FDA warning-letter digests (input feeds / watchTerms; FDA public warning-letter feeds; warning-letter digest rows). Not ClinicalTrials.gov or HHS OCR. Status Page Incident Digest Monitor is for Vendor incidents (input status page feeds; status.io-style pages; incident digest rows). Not EPA ECHO facilities. NHTSA Recall Scraper is for NHTSA recalls/complaints (input vehicle feeds; NHTSA public APIs; recall digest rows). Not CPSC consumer-product recalls.
What input is required?
Live required fields: targets. Published exampleRunInput is shown below. Summary-first monitoring for EPA ECHO enforcement and compliance risk
| Field | Type | Default | Notes |
|---|---|---|---|
targets |
object[] required | empty |
required Targets (one digest row each). List of watched facilities, company footprints, or case feeds. Shared target-level selectors (frsId, facilityName, state, city, region) are inherited by the individual ECHO surfaces unless overridden. Each item supports id, name, criticality, owner, tags, frsId, facilityName, state, city, region, facilitySearch, complianceScreener, caseSearch. |
requestTimeoutSeconds |
integer | 30 |
Request timeout (seconds). Maximum time to wait for one EPA ECHO web-service request. min=5 max=120 |
userAgent |
string | empty |
Custom User-Agent. Optional custom User-Agent string for public EPA ECHO requests. |
delivery |
string enum | dataset |
Delivery mode. dataset writes selected target rows to the dataset. webhook posts the digest JSON. email is reserved for a future path. enum: dataset, webhook, email |
datasetMode |
string enum | changes_only |
Dataset mode. Controls which target rows are persisted: action-needed only, changed/initial/partial/error rows, or every row. enum: action_needed, changes_only, all |
webhookUrl |
string | empty |
Webhook URL. POST destination when delivery=webhook. |
notifyOnNoChange |
boolean | false |
Notify even if nothing changed. When true, webhook delivery still fires even when no selected target changed. |
snapshotKey |
string | epa-enforcement-digest-snapshots |
Snapshot key. Stable key used to load and save prior ECHO surface snapshots between recurring runs. |
diffMode |
string enum | line_summary |
Diff mode. line_summary keeps compact added/removed snapshot lines. hash_only only marks changed or unchanged. enum: line_summary, hash_only |
summaryMaxLines |
integer | 12 |
Max diff summary lines. Maximum added and removed snapshot lines kept per surface. min=5 max=50 |
maxEvidenceItems |
integer | 5 |
Global evidence limit. Upper bound for top facilities/cases retained per surface unless overridden by a surface-level evidenceLimit. min=1 max=25 |
concurrency |
integer | 2 |
Concurrency. How many watch targets may be processed in parallel. min=1 max=10 |
batchDelayMs |
integer | 500 |
Inter-batch delay (ms). Delay between target batches to soften load on EPA ECHO. min=0 max=10000 |
dryRun |
boolean | false |
Dry run. If true, the actor skips snapshot writes and remote delivery while still producing local output. |
nowIso |
string | empty |
Override current time (ISO). Optional ISO timestamp override for deterministic fixture tests or proof snapshots. |
Published Store example run input (omitted fields take schema defaults):
{
"targets": [
{
"id": "basf-texas",
"name": "BASF Texas EPA Watch",
"criticality": "high",
"owner": "EHS / Compliance",
"tags": "chemical,texas,epa",
"facilityName": "BASF",
"state": "TX",
"facilitySearch": {
"nameMatchMode": "CONTAINS"
},
"complianceScreener": {
"years": 5,
"activeOnly": true,
"nameMatchMode": "CONTAINS",
"evidenceLimit": 5
}
},
{
"id": "delaware-afr-feed",
"name": "Delaware Administrative Formal Cases",
"criticality": "high",
"owner": "Legal / Compliance",
"tags": "case-feed,delaware,enforcement",
"caseSearch": {
"state": "DE",
"caseCategory": "AFR",
"fromDate": "01/01/2024",
"toDate": "12/31/2024",
"evidenceLimit": 5
}
}
],
"delivery": "dataset",
"datasetMode": "changes_only",
"snapshotKey": "epa-enforcement-store-example",
"diffMode": "line_summary",
"summaryMaxLines": 12,
"maxEvidenceItems": 5,
"concurrency": 2,
"batchDelayMs": 500,
"dryRun": false
}
Run EPA ECHO Enforcement Scraper on Apify
How do dataset, webhook, and dry-run delivery work?
delivery defaults to dataset on the live schema. Dataset output is the billable surface when rows are written. webhookUrl is used when delivery is webhook (and typically not during dryRun). dryRun true validates or samples without the usual dataset/webhook side effects described on the Store schema. datasetMode can limit emits to changes_only / changed_only / action_needed versus all. Unchanged runs that write zero default-dataset rows typically charge $0.00 on current PPE.
What does a result contain?
Published README Output Example / Sample Output JSON. Treat README samples as illustrations, not a live coverage guarantee. There is no published output JSON schema on the Store page.
How is EPA ECHO Enforcement Scraper priced?
Billing is pay per event. The live Store card is from $8.00 / 1,000 EPA enforcement digest row ($0.008 per delivered apify-default-dataset-item). No Actor Start. Unchanged runs that write zero default-dataset rows typically charge $0.00 on current PPE. Current PPE:
| Event | Price | Emitted when |
|---|---|---|
apify-default-dataset-item (EPA enforcement digest row) |
$0.008 | Charged only when an EPA enforcement digest row is delivered. |
The published README Cost block is stale versus the live Store pricing tab. README Cost still quotes actor-start $0.01. README Cost quotes dataset-item $0.003; live primary is $0.008 (EPA enforcement digest row). Live: EPA enforcement digest row $0.008. This page quotes live PPE only.
from $8.00 / 1,000 EPA enforcement digest row ($0.008 per delivered apify-default-dataset-item). No Actor Start. Unchanged runs that write zero default-dataset rows typically charge $0.00 on current PPE.
See EPA ECHO Enforcement Scraper pricing on Apify
Limits to keep in mind
- targets required
- Public ECHO HTML/APIs
- maxEvidenceItems cap
- Not professional advice
- Respect source terms, robots.txt, and rate limits.
Open EPA ECHO Enforcement Scraper on Apify
Related pages
- FDA Warning Letters Scraper — FDA letters, not EPA ECHO.
- NHTSA Recall Scraper — Vehicles, not ECHO facilities.
- Status Page Incident Digest Monitor — SaaS incidents, not EPA.
- EPA ECHO Facility Watch — enforcement and compliance alerts.
- FTC Enforcement Case Delta & Report — FTC cases, not ECHO.
- Tools