UK HSE Convictions + Notices - Enforcement Delta API
Under maintenancePricing
from $3.00 / 1,000 record (full detail)s
UK HSE Convictions + Notices - Enforcement Delta API
Under maintenanceTrack UK HSE enforcement action: prosecutions and fines from the register of convictions, plus Improvement and Prohibition notices. Filter by company name, region, industry, fine amount, notice type and date. Delta mode flags new and updated compliance risk. Pay per record, no proxy needed.
Pricing
from $3.00 / 1,000 record (full detail)s
Rating
0.0
(0)
Developer
Stefano Seggio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
UK HSE Convictions + Notices — Enforcement Delta API
The UK's workplace-safety enforcement register updates constantly. Reading it by hand doesn't scale.
If you track UK health-and-safety compliance risk — for due diligence, supplier vetting, or your own regulatory exposure — your only option is manually paging through HSE's conviction and notice registers yourself. This Actor solves that: it delta-tracks both the prosecutions/fines register and the Improvement/Prohibition notices register, and tells you the moment something new or updated appears.
Why this outperforms a standard scraper
- Delta tracking, not re-scraping. Every conviction and notice is fingerprinted on every run. Unchanged records are never re-delivered — and never billed.
- Pay only for what's new. A full-detail record — the case or notice page plus its breach/legislation detail and, when enabled, the defendant or recipient profile — costs $0.003. A listing-only summary record costs $0.001. An unchanged record costs nothing.
- Honest failure reporting. When HSE's own servers are unreachable at the network level, this Actor reports that distinctly — as an external outage, not a code defect — instead of quietly returning a "run failed" error that leaves you guessing whether the pipeline is broken or the government's website is just down. That distinction is verified in this Actor's own production logs.
See it before you trust it
{"record_id": "HSE-CONV-4849124","register": "convictions","event_type": "NEW_LISTING","defendant_name": "Example Construction Ltd","region": "London","industry": "Construction","fine_amount_gbp": 85000,"conviction_date": "2026-09-08"}
Notice fine_amount_gbp and industry — filterable, structured fields, not a wall of prose you'd have to parse yourself.
Zero-risk trial
Unchanged records cost $0.00. Run it once against real data before you commit to anything:
curl -X POST "https://api.apify.com/v2/acts/jV35qppM82fjyjsle/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \-H "Content-Type: application/json" \-d '{"datasets":["convictions","notices"],"onlyNew":true,"maxItemsPerDataset":50}'
import requestsresponse = requests.post("https://api.apify.com/v2/acts/jV35qppM82fjyjsle/run-sync-get-dataset-items",params={"token": "<YOUR_API_TOKEN>"},json={"datasets": ["convictions", "notices"], "onlyNew": True, "maxItemsPerDataset": 50},)records = response.json()print(f"{len(records)} records returned")
const response = await fetch("https://api.apify.com/v2/acts/jV35qppM82fjyjsle/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>",{method: "POST",headers: { "Content-Type": "application/json" },body: JSON.stringify({datasets: ["convictions", "notices"],onlyNew: true,maxItemsPerDataset: 50,}),});const records = await response.json();console.log(`${records.length} records returned`);
Pricing
| Event | What it means | Price |
|---|---|---|
| Record (full detail) | The case/notice page plus its breach/legislation detail and, when enabled, the defendant/recipient profile. | $0.003 |
| Record (listing summary) | A listing-only record — register row fields, when detail fetch is off or a page couldn't be read. | $0.001 |
Actor-start fee: $0.00005/GB-memory (one-time per run, not per record).
What you get on every record
- Register source: convictions or notices
- Company/defendant name, region, and industry
- Fine amount (convictions) or notice type (notices)
- Filterable by company name, region, industry, fine amount, notice type, and date
- Delta classification so unchanged records are never re-billed
Input parameters
| Field | Type | Description | Default |
|---|---|---|---|
datasets | array | Which registers to monitor: convictions, notices, or both. | ["convictions","notices"] |
maxItemsPerDataset | integer | Caps how many records per register are processed in one run. | 50 |
onlyNew | boolean | When true, only new records are returned. | true |
Source & reliability
Source is HSE's own public convictions and notices registers, requested with a standard browser User-Agent and no proxy. This Actor is the operator's reference implementation for handling real upstream instability: when the register itself becomes unreachable at the network level, the run reports [UPSTREAM_OUTAGE] with the specific host and error code — verified live against a real multi-day outage — rather than surfacing a generic failure indistinguishable from an actual bug.
Current status (2026-09-22)
This Actor's target, resources.hse.gov.uk, has been unreachable at the network level (EHOSTUNREACH) since at least 2026-09-14 — independently confirmed from outside Apify's own infrastructure on 2026-09-22, so this is a real outage of the UK government's own server, not an Apify proxy or bot-detection issue. This Actor's error handling already classifies these failures honestly as [UPSTREAM_OUTAGE] rather than a generic run failure (see the sample in test/live.test.ts), which is why the Store's 30-day success-rate figure looks poor despite the Actor's own code being unaffected. There is no code fix for a genuinely unreachable origin server; this section will be removed once resources.hse.gov.uk is confirmed reachable again on a fresh run.