# Changelog of OSHA & EPA Violation Monitor: Fines by Company (`offerastudio/osha-epa-violation-monitor`) Actor

- **URL**: https://apify.com/offerastudio/osha-epa-violation-monitor/changelog.md
- **Full Actor documentation**: https://apify.com/offerastudio/osha-epa-violation-monitor.md

## Changelog

### 1.0.6 (2026-10-02)

- OSHA: first runs with a real DOL key. DOL answers HTTP 403 to URLs longer than about 2,000 characters, which the inspection lookups (150 ids each) exceeded, so OSHA looked like a rejected key. Lookups now send 50 ids at a time (up to 120 lookups, still 6,000 inspections). DOL's `204 No Content` (nothing matched) is now read as no records instead of an error.

### 1.0 (2026-10-02)

- First version.
- EPA: enforcement cases from the EPA ECHO case web services (`case_rest_services.get_cases` and `get_qid`), by state, NAICS or SIC code, period and minimum federal penalty, newest first; the registered facility (name, address, NAICS) is added through `get_facilities_from_case` and `get_facility_info`. No key needed.
- OSHA: citations and inspections from the Department of Labor open data API v4 (`/get/OSHA/violation` and `/get/OSHA/inspection`), grouped per inspection with the penalties added up and the most severe violation type. Needs a free DOL API key (input field `dolApiKey` or the Actor environment variable `DOL_API_KEY`); without it the Actor returns the EPA cases and one free `osha-key-missing` row.
- Input: sources, company names (fuzzy), states, NAICS and SIC codes, period (days back or dates), minimum penalty, maximum cases, sort order.
- One normalised row for both sources, with a link to the official record.
- Polite requests: one at a time, 1.2 s (EPA) and 1.5 s (DOL) apart, retries on 429 and 5xx; the API key never appears in logs or rows.
- Pay per event: `case-returned` at $0.003. Info and error rows are free.
