Enterprise Regulatory Intelligence & Delta Engine Feeds
Automated, fingerprint-verified tracking of SEC, OFAC, ACRA, KIPRIS, and global regulatory registries with $0.00 cost on unchanged execution runs.
{
"actor": "singapore-acra-registry-monitor",
"record_key": "<UEN>",
"classification": "SNAPSHOT_NO_DIFF",
"fingerprint_matched_last_run": true,
"delivered_to_dataset": false,
"billed": "$0.00 — unchanged record, never re-delivered"
}{
"actor": "singapore-acra-registry-monitor",
"record_key": "<UEN>",
"classification": "STATUS_CHANGE",
"fingerprint_matched_last_run": false,
"delivered_to_dataset": true,
"billed": "$0.03 — per NEW_LISTING or STATUS_CHANGE record"
}Dynamic Fleet Catalog & Interactive Sector Matrix
28 actors, 12 sectors, one filter
Every actor below is a separately deployed, independently priced Apify pipeline with its own data source and its own change-detection events. This is the full fleet as it exists on the Apify Store today — not a roadmap. Filter by sector or search by title and jurisdiction; the grid below updates instantly against the real fleet data, no loading state.
B2B Data Enrichment
1 actorB2B Lead Enrichment Engine
Global
OpenStreetMap Overpass API + customer seed list (no Google Maps)
Optional Hunter.io / People Data Labs key unlocks the enriched_lead tier — basic_lead needs no key.
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Sanctions & Trade Compliance
1 actorMaritime Sanctions Watchdog
Global (OFAC / UN)
OFAC SDN vessel list x UN Security Council Consolidated List (by IMO number)
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Development Finance Procurement
1 actorWorld Bank Procurement & Debarment Monitor
Global (World Bank only — ADB / IDB excluded, see docs)
World Bank Procurement Notices API + "Other Sanctions" debarred-firms table
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Patent & IP Enforcement
2 actorsPatent & IP Enforcement Monitor
US (USPTO, BYOK required) + optional EU (EPO, BYOK)
USPTO PTAB proceedings (IPR/PGR/CBM/Derivation) + optional EPO opposition data
Requires a free USPTO Open Data Portal (ODP) API key for USPTO PTAB coverage — confirmed as a hard runtime requirement in the actor's own source, not optional as earlier documented. An additional, separately optional EPO opposition-data key unlocks EU coverage on top of that.
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
KIPRIS Patent & Trademark Monitor
South Korea (KIPRIS Plus)
KIPRIS Plus Open API — Korean patent & utility-model filings by applicant or application number
Requires your own KIPRIS Plus service key — a paid annual license billed directly by KIPRIS, never pooled or resold.
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Pharma Safety & Clinical Trials
2 actorsDrug Safety & Recall Monitor
US (FDA) + EU (EMA)
FDA openFDA drug enforcement API + EMA DHPC safety-alert feed
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Clinical Trial Data Extractor
Global (ClinicalTrials.gov) + US (FDA Orange Book)
ClinicalTrials.gov API v2 + FDA Orange Book patent/exclusivity data
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Government Registers & Procurement
13 actorsAustralian Government Grants Monitor
Australia
GrantConnect (grants.gov.au) — 360,000+ record register, no official API
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Cordoba Government Tenders Monitor
Province of Cordoba, Argentina
Province of Cordoba's official public-procurement portal
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Chile Official Gazette Monitor
Chile (national)
Diario Oficial de Chile — laws, decrees, resolutions
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Entre Rios Government Tenders Monitor
Province of Entre Rios, Argentina
Unidad Central de Contrataciones — Province of Entre Rios
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Florida State Procurement Monitor
Florida, United States
MyFloridaMarketPlace (MFMP VBS) — ITB/RFP/ITN/RFI/RSQ solicitations
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Mendoza Government Tenders Monitor
Province of Mendoza, Argentina
COMPR.AR-based portal — Province of Mendoza
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Buenos Aires Province Tenders Monitor
Buenos Aires Province, Argentina (PBA — not CABA, not national)
PBAC — official procurement portal of Buenos Aires Province
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Salta Government Tenders Monitor
Province of Salta, Argentina
Province of Salta's official public-procurement portal
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Santa Fe Government Tenders Monitor
Province of Santa Fe, Argentina
Province of Santa Fe portal — ministries and hospitals
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Tucuman Government Tenders Monitor
Province of Tucuman, Argentina
Province of Tucuman's official public-procurement portal
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
UK HSE Enforcement Monitor
United Kingdom
UK Health & Safety Executive — convictions and enforcement notices
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Lombardy Grants & Tenders Monitor
Lombardy, Italy
dati.lombardia.it Socrata SODA API — Anagrafica dei bandi regionali (~1,912 bandi)
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
EU TED Procurement Monitor
European Union (all 27 member states, via TED)
TED (Tenders Electronic Daily) official public Search API — EU public procurement notices, contract awards, and CPV-coded tenders
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
SEO & Data Pipelines
1 actorPage Metadata Extractor (CleanMeta)
Global
Any target URL — title, description, canonical, Open Graph, H1, word count
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Corporate Registries
3 actorsSingapore ACRA Registry Monitor
Singapore
data.gov.sg ACRA Collection 2 — full-field Singapore corporate register (~2.1M entities, UEN-indexed)
Optional customer-supplied ACRA Business Profile API key unlocks real-time watchlist refresh on top of the default Collection 2 dataset.
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
UK Modern Slavery Statement Registry Monitor
United Kingdom
UK Modern Slavery Statement Registry (gov.uk) bulk CSV export — 34,000+ organisations, 23,500+ statements, Section 54 compliance-disclosure tracking
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
UAE Corporate Registry Monitor
United Arab Emirates (Dubai Mainland, ADGM, DIFC)
Dubai Pulse (DED mainland trade-license register) + ADGM (Abu Dhabi Global Market) + DIFC public registers — bilingual Arabic/English entity-name normalization
Optional customer-supplied Dubai Pulse API key unlocks Dubai mainland (DED) trade-license coverage on top of the default ADGM + DIFC registers, which run with no key at all.
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Securities & Financial Enforcement
1 actorSEC Enforcement & Litigation Feed
United States (SEC)
SEC.gov litigation-release & administrative-proceeding RSS feeds + EDGAR CIK resolution
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
AI Crawler & Content Governance
1 actorAI Crawler Permission Monitor
Global
robots.txt AI-crawler directives + Cloudflare Content-Signal header + llms.txt / llms-full.txt, any domain
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Digital Archives & Publishing
1 actorAozora Bunko Public-Domain Feed
Japan (Aozora Bunko catalog)
Aozora Bunko's official catalog export — 19,502-row confirmed-public-domain Japanese literature index
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
Financial Markets & Sovereign Debt
1 actorSovereign Debt Auction Monitor (Brazil)
Brazil (Tesouro Nacional)
Tesouro Transparente open-data portal — Brazil National Treasury domestic bond auction results (LTN, LFT, NTN-B, NTN-F), marginal-rate and coverage-ratio tracking
Configurable — runs on your own Apify Scheduler (cron); no fixed operator cadence
How It Works
Three steps between a source change and a $0 bill
26 of the 28 actors in this fleet run this exact pipeline on every scheduled run: normalize, fingerprint, suppress.
Ingestion & Canonicalization
Every actor normalizes whatever the upstream source hands back — HTML tables, PDFs, XML feeds, JSON APIs — into the same stable field set before anything is compared. A source can restructure its page or reorder its API response and the canonical shape the rest of the pipeline sees does not move.
SHA-256 Fingerprint Hashing & Memory State Compare
The monitored fields on every record are hashed with SHA-256 and checked against a persisted, named key-value store that survives across scheduled runs — not the run-scoped state Apify discards the moment a job ends. Each record is classified against what that same actor saw last time: new, changed, or unchanged.
Zero-Cost Suppression
A record whose fingerprint matches the last run is never re-delivered to the dataset and never billed. Point an actor at a source where nothing changed and the invoice for that run is a real $0.00 — suppression happens before delivery, not as a refund after the fact.
This is the scannable version. The full fingerprinting code, the cross-run state store, and real billing-verification runs against this fleet's own live actors are documented in Infrastructure Telemetry & Delta-Engine Documentation below.
Pay-Per-Event Economic Engine
Every actor in this fleet bills strictly per delivered event — no subscriptions, no seat licenses, no minimum spend. In delta mode, a record that hasn't changed since the last run is never re-delivered and never billed. On Maritime Sanctions Watchdog, only NEW / STATUS_CHANGE / DELISTED events generate a charge — an unchanged vessel record costs nothing on the next run.
Pay for delivered records only. Stop running an actor and the charges stop — nothing recurs in the background.
One price per event type, unlimited concurrent users on your Apify account. Adding teammates costs nothing extra.
A one-off 12-record pull is billed at the same per-record rate as a 50,000-record run. There's no plan tier to graduate into.
An unchanged record in delta mode is never re-delivered to the dataset and never billed — you pay only for what actually changed.
Real example — granular event-type pricing
UK HSE Enforcement Monitor prices two event types separately, so buyers only pay for the depth of data they actually consume:
How the maritime-sanctions actor compares
Figures below are publicly listed Apify Store pricing for named competitor actors, gathered during this project's own market research, plus one off-platform subscription reference point.
| Product | Source | Price | vs. this actor | Scope |
|---|---|---|---|---|
| Maritime Sanctions Watchdog | This project — Apify Store | $0.0005 / record | baseline | OFAC SDN vessel list x UN Security Council Consolidated List (by IMO number) |
| veska/sanctions-pep-screener | Apify Store | $0.035 / record | 70x higher | Persons and companies screened against many sanctions and PEP source lists. |
| lentic_clockss/global-sanctions-screening | Apify Store | $0.003 / record | 6x higher | Persons and companies against multiple lists. Buyer must separately obtain and pay for their own OpenSanctions API key. |
| scrapers_lat/trade-screening-list-scraper | Apify Store | $0.00923 / record | ~18x higher | Broader 7-list trade and sanctions screen. |
| ComplyAdvantage | Off-platform — subscription SaaS | From $99.99 / month | no per-event equivalent | Subscription compliance product. Starting tier covers 100 monitored entities — not sold per record. |
These competitors screen a broader scope — persons and companies against many source lists — while this project's actor performs vessel-specific IMO screening against the OFAC SDN vessel list and the UN Security Council Consolidated List. The precise claim is cheapest vessel-specific sanctions screening found on Apify Store, not the cheapest sanctions screening of any kind.
See live Store pricing →Apify Platform Cost vs. Upstream API Cost
The per-event prices in this fleet's own pricing tables — the ones shown throughout this page and on every actor's Store listing — are 100% of what Delta Registry charges. There is no second, hidden layer folded into that number.
Separately, any actor with a BYOK status of required or optional also depends on a third-party API — KIPRIS Plus, Hunter.io, People Data Labs, or the optional EPO opposition-data feed — that the customer must hold their own account and key for. That third party bills the customer directly, on its own pricing, at whatever rate it sets. This fleet never marks that cost up, never pools customer keys across runs, and never touches or routes that billing relationship in any way.
The per-event price shown in this fleet's pricing tables above. Billed by Apify on this project's behalf, per delivered event, exactly as listed on each actor's Store page.
Billed directly by the third-party provider — KIPRIS Plus, Hunter.io, People Data Labs, or EPO — to the customer's own account with that provider. Not collected, marked up, or forwarded by this fleet at any point.
BYOK Disclosure
5 of the 28 actors in this fleet depend on a customer-supplied third-party API key for some or all of their coverage. This list is filtered live from this fleet's own actor data, not hand-maintained, so it cannot drift out of sync as actors are added or their BYOK status changes.
B2B Lead Enrichment Engine
OptionalOptional Hunter.io / People Data Labs key unlocks the enriched_lead tier — basic_lead needs no key.
View on Apify Store →Patent & IP Enforcement Monitor
RequiredRequires a free USPTO Open Data Portal (ODP) API key for USPTO PTAB coverage — confirmed as a hard runtime requirement in the actor's own source, not optional as earlier documented. An additional, separately optional EPO opposition-data key unlocks EU coverage on top of that.
View on Apify Store →KIPRIS Patent & Trademark Monitor
RequiredRequires your own KIPRIS Plus service key — a paid annual license billed directly by KIPRIS, never pooled or resold.
View on Apify Store →Singapore ACRA Registry Monitor
OptionalOptional customer-supplied ACRA Business Profile API key unlocks real-time watchlist refresh on top of the default Collection 2 dataset.
View on Apify Store →UAE Corporate Registry Monitor
OptionalOptional customer-supplied Dubai Pulse API key unlocks Dubai mainland (DED) trade-license coverage on top of the default ADGM + DIFC registers, which run with no key at all.
View on Apify Store →Privacy guarantee: every BYOK key belongs exclusively to the customer's own account with that third party. This fleet never stores, pools, or reuses a customer's key across other customers' runs.
Enterprise Integration Terminal
Every one of the 28 actors across 12 domains is called the same way — through the standard Apify API. There is no separate “enterprise” tier, no SSO, and no dedicated account manager: this is a solo developer’s real, public API. Pick an actor and a language in the workbench below to see the exact call, or scroll to the fleet reference for any of the other 25 slugs.
Interactive Integration Code Workbench
3 actors × 3 client languagesPick an actor and a client language — the snippet updates to that actor's real slug and is copy-pasteable as-is. All three patterns hit the same public Apify API shown throughout this section.
curl -X POST \
"https://api.apify.com/v2/acts/stefano_seggio~sec-enforcement-litigation-delta-feed/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{}'
# Runs "SEC Enforcement & Litigation Feed" synchronously and streams the resulting dataset items straight back —
# no polling required. Replace the request body with this actor's own input fields, documented
# on its Store page: https://apify.com/stefano_seggio/sec-enforcement-litigation-delta-feedstefano_seggio/sec-enforcement-litigation-delta-feed · United States (SEC) · View on Apify Store →
AI Agent Tool Schemas
Install LangChain Tool · full manifest →Every one of the 28 actors is also generated, per actor, into 10 ready-to-use AI-agent tool definitions — derived directly from that actor's real input schema, not hand-written. Each actor has its own folder at /schemas/{slug}/. Below: the three workbench actors above as a starting point.
/schemas/sec-enforcement-litigation-delta-feed//schemas/actor-19-maritime-sanctions-monitor//schemas/singapore-acra-registry-monitor/{
"userId": "<yourApifyUserId>",
"createdAt": "2026-09-09T14:32:07.123Z",
"eventType": "ACTOR.RUN.SUCCEEDED",
"eventData": {
"actorId": "<actorId>",
"actorRunId": "<actorRunId>"
},
"resource": {
"id": "<actorRunId>",
"actId": "<actorId>",
"status": "SUCCEEDED",
"startedAt": "2026-09-09T14:28:01.000Z",
"finishedAt": "2026-09-09T14:32:07.000Z",
"defaultDatasetId": "<datasetId>",
"defaultKeyValueStoreId": "<keyValueStoreId>"
}
}
// Illustrative payload shape for the "Run succeeded" webhook event — see Apify's webhook
// docs for the authoritative schema. Configure it per-actor in the Apify Console under
// Actor → Integrations → Webhooks, pointed at a Zapier / Make catch-hook URL or a CRM
// endpoint. That's the real mechanism behind any "CRM integration" — no custom connector.Support runs through the Apify Store issue tracker on each actor’s page — typically a response within ~48 hours, with no formal SLA. That is the real support channel for every actor listed here.
Fleet reference — swap in any of the 28 slugs
grouped by domain- B2B Lead Enrichment Engine
stefano_seggio/actor-18-b2b-lead-magnet$0.002 per lead (+1 more pricing event)
- Maritime Sanctions Watchdog
stefano_seggio/actor-19-maritime-sanctions-monitor$0.0005 per record
- World Bank Procurement & Debarment Monitor
stefano_seggio/actor-20-mdb-procurement-monitor$0.001 per notice record (+1 more pricing event)
- Patent & IP Enforcement Monitor
stefano_seggio/actor-21-patent-ip-enforcement-monitor$0.002 per record (+1 more pricing event) - KIPRIS Patent & Trademark Monitor
stefano_seggio/kipris-patent-trademark-status-monitor$0.02 per new filing or status change (+1 more pricing event)
- Drug Safety & Recall Monitor
stefano_seggio/actor-22-drug-safety-recalls-monitor$0.001 per delivered record - Clinical Trial Data Extractor
stefano_seggio/actor-24-clinical-trials-delta-engine$0.002 per record (+1 more pricing event)
- Australian Government Grants Monitor
stefano_seggio/australia-grantconnect-monitor - Cordoba Government Tenders Monitor
stefano_seggio/cordoba-compras-monitor - Chile Official Gazette Monitor
stefano_seggio/diario-oficial-cl-monitor$0.003 per record - Entre Rios Government Tenders Monitor
stefano_seggio/entrerios-compras-monitor - Florida State Procurement Monitor
stefano_seggio/florida-tenders-monitor$0.003 per full-detail record (+1 more pricing event) - Mendoza Government Tenders Monitor
stefano_seggio/mendoza-compras-monitor - Buenos Aires Province Tenders Monitor
stefano_seggio/pba-tenders-monitor - Salta Government Tenders Monitor
stefano_seggio/salta-compras-monitor$0.003 per full-detail record (+1 more pricing event) - Santa Fe Government Tenders Monitor
stefano_seggio/santafe-compras-monitor$0.003 per full-detail record (+1 more pricing event) - Tucuman Government Tenders Monitor
stefano_seggio/tucuman-compras-monitor$0.003 per result - UK HSE Enforcement Monitor
stefano_seggio/uk-hse-enforcement-monitor$0.003 per detail-enriched record (+1 more pricing event) - Lombardy Grants & Tenders Monitor
stefano_seggio/regione-lombardia-grants-registry-monitor$0.02 per NEW_LISTING or STATUS_CHANGE record (+1 more pricing event) - EU TED Procurement Monitor
stefano_seggio/eu-ted-procurement-delta-monitor$0.02 per new notice (+1 more pricing event)
- Page Metadata Extractor (CleanMeta)
stefano_seggio/page-metadata-extractor$0.0005 per result (never per wasted run)
- Singapore ACRA Registry Monitor
stefano_seggio/singapore-acra-registry-monitor$0.03 per NEW_LISTING or STATUS_CHANGE record (+1 more pricing event) - UK Modern Slavery Statement Registry Monitor
stefano_seggio/uk-modern-slavery-statement-registry-monitor$0.02 per new statement (+1 more pricing event) - UAE Corporate Registry Monitor
stefano_seggio/uae-corporate-registry-monitor$0.02 per new entity (+2 more pricing events)
- SEC Enforcement & Litigation Feed
stefano_seggio/sec-enforcement-litigation-delta-feed$0.05 per new enforcement release (+1 more pricing event)
- AI Crawler Permission Monitor
stefano_seggio/ai-crawler-content-signal-permission-monitor$0.015 per ALLOWED/DISALLOWED directive flip (+1 more pricing event)
- Aozora Bunko Public-Domain Feed
stefano_seggio/aozora-bunko-public-domain-text-feed$0.05 per new full-text delivery (+1 more pricing event)
- Sovereign Debt Auction Monitor (Brazil)
stefano_seggio/emerging-market-sovereign-debt-auction-monitor$0.02 per new auction (+1 more pricing event)
Infrastructure Telemetry & Delta-Engine Documentation
26 of the 28 actors in this fleet run the delta engine documented below — persisted state, content fingerprinting, and per-record classification against the previous run. The remaining 2 (B2B Lead Enrichment Engine and Page Metadata Extractor (CleanMeta)) are single-pass extractors: there is no previous run to diff against, so there is nothing to fingerprint.
State Fingerprinting
Not every tracked field needs the same treatment. Where the monitored fields are flat scalars — a vessel's sanctions programs, a trial's status string — a direct hash over those fields is already deterministic, since the field set and its order are fixed by the code, not by whatever order the source happened to return them in. Where a monitored field is a genuinely nested object — FDA Orange Book's per-product patent and exclusivity data, for example — a plain hash isn't safe on its own: sorting only the top-level keys leaves a nested object's own key order unsorted.
That gap is not hypothetical. An earlier version of this fleet used exactly that top-level-only JSON.stringify(obj, Object.keys(obj).sort()) on a nested field, and two semantically identical records could still hash differently depending on what order the source API returned a nested object's keys in — producing false STATUS_CHANGE classifications, and a STATUS_CHANGE is a billable event. The fix, used specifically where a tracked field is genuinely nested, is the fully recursive canonicalizer below — it sorts object keys at every nesting level, not just the top one. Flat-field actors hash directly instead; there is no nesting for a recursive step to protect against there.
function canonicalize(value) {
if (Array.isArray(value)) return value.map(canonicalize)
if (value !== null && typeof value === 'object') {
return Object.keys(value)
.sort()
.reduce((acc, key) => {
acc[key] = canonicalize(value[key])
return acc
}, {})
}
return value
}
// The bug this replaced: JSON.stringify(obj, Object.keys(obj).sort())
// only sorts the replacer's TOP-LEVEL key list. Nested objects keep
// whatever key order the source happened to send them in, so two
// semantically identical records could hash differently — and a
// STATUS_CHANGE is a billable event. canonicalize() recurses into
// every array and object first, so key order can never affect the
// fingerprint.
const fingerprint = createHash('sha256') // sha1 on a few older actors
.update(JSON.stringify(canonicalize(monitoredFields)))
.digest('hex')Cross-Run State Persistence
A fingerprint is only useful if it survives past the run that computed it. Apify's run-scoped Actor.getValue() is discarded when the run ends, so the delta engine instead opens a named key-value store — one that persists across every scheduled run of that actor, not just the current one — and reads and writes the last-seen fingerprint for each record key there.
// Run-scoped — discarded when the run ends, useless for diffing
// across scheduled runs:
// await Actor.getValue('LAST_SEEN')
// Named, cross-run store — persists between scheduled runs:
const stateStore = await Actor.openKeyValueStore('delta-state-v1')
const lastSeen = await stateStore.getValue(recordKey)
const classification = !lastSeen
? 'NEW'
: lastSeen.fingerprint === fingerprint
? 'SNAPSHOT_NO_DIFF' // unchanged — never re-delivered, never billed
: 'STATUS_CHANGE' // or an actor-specific event: UPDATED, AMENDED...
await stateStore.setValue(recordKey, { fingerprint, seenAt: Date.now() })Classification
Every record's current fingerprint is compared against the last-seen fingerprint in the named store and classified into one of four outcomes. Three of them are real event names drawn live from this fleet's own deltaEvents lists — grouped below, with a count of how many of the 28 actors emit each one. The fourth, the no-diff case, is deliberately not a delta event at all.
first time this record has ever been seen
fingerprint differs from the last run
actor-specific removal or conclusion event
fingerprint matches the last run — never re-delivered, never billed
Does not appear in any actor's deltaEvents list above — it isn't a delta event, it's the absence of one.
Present in ACTORS but not yet mapped to a class above — flagged here instead of silently dropped.
Failure Isolation
A global unhandled-exception handler on process catches both uncaughtException and unhandledRejection before the process exits, and records the stack trace along with memory and run-duration telemetry at the moment of failure — so a crash leaves a diagnosable trail instead of a silent run failure in the Apify Console.
Individual request retries use full-jitter exponential backoff — a random delay bounded by a doubling base and a cap — rather than a fixed retry interval, so a batch of failures doesn't all retry against the source site at the same instant. A request that exhausts its retry budget is written to a dead-letter queue — a named key-value store recording the failure — instead of being silently dropped from the dataset.
process.on('uncaughtException', (err) => captureAndExit(err))
process.on('unhandledRejection', (reason) => captureAndExit(reason))
async function captureAndExit(err) {
await deadLetterStore.setValue('failure-' + Date.now(), {
stack: err instanceof Error ? err.stack : String(err),
memoryMb: Math.round(process.memoryUsage().rss / 1024 / 1024),
durationMs: Date.now() - runStartedAt,
})
process.exit(1)
}
// Full-jitter exponential backoff between retries:
function backoffMs(attempt, base, cap) {
return Math.random() * Math.min(cap, base * Math.pow(2, attempt))
}
// A request that exhausts its retry budget is written here instead
// of being silently dropped from the dataset:
await deadLetterStore.setValue('exhausted-' + recordKey, {
recordKey: recordKey,
attempts: MAX_RETRIES,
lastError: lastError && lastError.message,
})Billing Verification — Real Run Results
The classification logic above only matters if it changes what actually gets billed. These are the two most recent verification passes run against this fleet's own live actors — real runs, real data, not simulated figures.
Maritime Sanctions Watchdog
Global (OFAC / UN)
| Run | Classification result | Billing impact |
|---|---|---|
| Cold run — empty state store | 5 of 5 real OFAC-listed vessels classified NEW | Charged for all 5 records ($0.0025 total at $0.0005/record) |
| Exact repeat run — same input, same state store | All 5 vessels classified SNAPSHOT_NO_DIFF (fingerprint matched the prior run) | $0 charged — 0 chargeable events pushed to the dataset |
| onlyNew re-run, further into the source list | The original 5 were correctly skipped; only genuinely new vessels found further down the list were classified NEW | Billed only for the newly-surfaced vessels — not for the 5 already-seen records |
World Bank Procurement & Debarment Monitor
Global (World Bank only — ADB / IDB excluded, see docs)
| Run | Classification result | Billing impact |
|---|---|---|
| Cold run — empty state store | 3 of 3 real procurement records classified NEW | Charged for all 3 records |
| Exact repeat run — same input, same state store | The same 3 records classified SNAPSHOT_NO_DIFF (fingerprint matched the prior run) | $0 charged — 0 chargeable events pushed to the dataset |
| onlyNew=true re-run | 0 of 3 records delivered — all 3 correctly excluded as already-seen | $0 charged |
Global (World Bank only — ADB / IDB excluded, see docs) — a disclosed scope limit, not a hidden one; see the actor's Store page for the reasoning.
Frequently Asked Questions
Straight answers on how the delta engine, billing, and support actually work across this fleet — sourced from the same 28-actor data contract as the rest of this page.