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 ActorFDA Warning Letters ScraperStatus Page Incident Digest MonitorNHTSA Recall Scraper
Intent EPA ECHO Enforcement ScraperFDA warning-letter digestsVendor incidentsNHTSA recalls/complaints
Primary input see schemafeeds / watchTermsstatus page feedsvehicle feeds
What it reads Public sources listed on the Store pageFDA public warning-letter feedsstatus.io-style pagesNHTSA public APIs
Primary output Dataset rows billed per live PPEwarning-letter digest rowsincident digest rowsrecall 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 OCRNot EPA ECHO facilitiesNot CPSC consumer-product recalls

Store ID: taroyamada/epa-enforcement-digest. Respect source terms, robots.txt, and rate limits.

Use cases

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

Open EPA ECHO Enforcement Scraper on Apify

Related pages