Public Threat Actor & Ransomware Activity Monitor
Pricing
Pay per usage
Public Threat Actor & Ransomware Activity Monitor
Monitor public reporting on 20 APT and ransomware groups. Get structured actor profiles, recent claims, targets, ATT&CK techniques, freshness, confidence, source coverage, and provenance without raw leak data.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Eirik Hanasand
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
an hour ago
Last modified
Categories
Share
Track public reporting and metadata about threat actors, ransomware groups, malware names, and campaigns.
The Actor monitors a 20-group default watchlist and returns machine-readable rows for:
- recent public activity,
- clustered incident claims with first/last reporting times,
- publisher counts and corroborating source IDs,
- optional victim, affected-sector, country, and impact extraction,
- likely targets,
- observed TTPs,
- source provenance and optional coverage metadata,
- confidence and corroboration grade,
- freshness and actionability flags,
- scheduler polling, duplicate-run reuse, retry/backoff, and source-coverage gap state,
- review reasons for stale, single-source, partial, contradicted, metadata-only, or actionable rows,
- analysis facets for spreadsheet/API filtering by row type, claim type, evidence grade, freshness, source family, and safety boundary,
- first/last-seen timestamps.
It does not return stolen data, credential values, private messages, payloads, raw leak contents, or protected/private forum material.
Pricing
The Actor is configured for Apify pay-per-event pricing, effective July 4, 2026. Published build 0.6.3 bills the built-in start event and default dataset item event automatically:
apify-actor-startapify-default-dataset-item
Rows are priced at $3.00 / 1,000; Actor starts are $0.00005; platform usage is included for customers; Apify margin is 20%. This keeps customer cost tied to output volume rather than wall-clock runtime. The default dataset remains one row per normalized finding, and every row carries paidRowDecision, buyerValueScore, and billingGuidance so buyers can separate sellable findings from caveated leads, held rows, and coverage-gap remediation. The OUTPUT key-value-store record includes compact monetization and paid-row quality summaries.
Latest public proof: run dQzvWhNM2OHrBWVfo, dataset aP1dqnK7uEezn5jJv, 15 safe rows for APT29/APT42/LockBit, 3.1s runtime, about $0.00075 platform usage, and about $0.045 gross row revenue after pricing starts.
Input
{"queries": ["APT29","APT28","APT42","Lazarus Group","Volt Typhoon","Salt Typhoon","Turla","Sandworm","Kimsuky","MuddyWater","Charming Kitten","Scattered Spider","LockBit","Clop","Akira","Black Basta","Play","RansomHub","ALPHV","Hunters International"],"maxRowsPerQuery": 25,"includeActivity": true,"includeTargets": true,"includeTtps": true,"includeSources": true,"includeDatasets": false,"includeCoverageGaps": true}
Output Row
{"query": "APT29","rowType": "activity","actor": "APT29","title": "APT29 targets cloud accounts","summary": "A dated public report describing an APT29 campaign. Reported by 2 publishers: Security Vendor A, Security Vendor B.","claimType": "campaign","affectedSectors": ["Technology and cloud services"],"impact": "Reported credential or account compromise","publisherCount": 2,"firstReportedAt": "2026-06-19T14:00:00.000Z","lastReportedAt": "2026-06-20T08:30:00.000Z","corroboratingSourceIds": ["source:a", "source:b"],"contradictingSourceIds": [],"sourceType": "clear_web","confidence": 0.64,"collectionMode": "live_search","sourceCount": 4,"sourceFamilyCount": 2,"activityCount": 3,"freshnessStatus": "current","schedulerDecision": "reuse_active_run","pollingHint": "source_gap_review","nextPollSeconds": 3,"retryAfterSeconds": 3,"duplicateRunReuse": true,"sourceCoverageState": "thin","sourceCoverageGaps": ["missing_public_channel_evidence"],"relationshipSummary": "APT42 has a campaign row with single_source public support.","relationshipPivots": ["claim:campaign", "source_family:clear_web"],"whyActionable": ["Single-source row: useful as a lead, not a confirmed fact.", "Run is still polling; keep the row attached to the active run."],"corroborationState": "single_source","nextSearchPivots": ["APT42 public channel", "APT42 clear_web"],"evidenceGrade": "corroborated","isActionable": true,"reviewReasons": ["freshness:current", "evidence:corroborated", "actionable:monitor_or_triage"],"analysisFacets": ["claim:campaign", "evidence:corroborated", "freshness:current", "row:activity", "safety:metadata_only"],"hasDarknetMetadata": false,"hasPublicChannelCoverage": false,"firstSeen": "2026-06-20T02:29:22.559Z","lastSeen": "2026-06-20T02:29:22.559Z","rawContentIncluded": false,"safety": {"metadataOnly": true,"credentialsIncluded": false,"stolenFilesIncluded": false,"privateContentIncluded": false,"actorInteraction": false},"provenanceHash": "..."}
Public Proof Contract
GET /v1/contracts exposes apifyStoreReadiness, which mirrors the Actor default input, published build 0.6.3, public proof run/dataset, pricing hooks, conversion metric handoff, and safe sample output DTOs for APT29, Volt Typhoon, Scattered Spider, and LockBit.
Each public proof DTO includes:
runId,buildVersion, anddatasetId,- query, row count, freshness, and source families,
- the
safe_metadata_only.v1safety contract, - a no-leak proof showing raw content, credentials, private content, and actor interaction are absent.
Run these before publication or after changing the listing contract:
bun run checkbun run check:api-regressionbun run check:apify-threat-actor-monitorbun run smoke:apify-threat-actor-monitorbun run check:apify-publicationTI_SEARCH_READINESS_QUERY=APT29 bun run check:scraper-native-searchTI_SEARCH_READINESS_QUERY='Volt Typhoon' bun run check:scraper-native-searchTI_SEARCH_READINESS_QUERY='Scattered Spider' bun run check:scraper-native-searchTI_SEARCH_READINESS_QUERY=LockBit bun run check:scraper-native-search
Safety Boundary
The Actor emits public metadata and summaries only. These fields are excluded:
- no credential values,
- no leaked database rows,
- no malware payloads,
- no private/invite-only content,
- no authentication or CAPTCHA bypass,
- no threat actor interaction,
- no raw darkweb URLs in public output.
Using the results
Each run writes one normalized dataset. Related reports are conservatively clustered into one activity row when their topic strongly overlaps within a three-day window. Filter isActionable=true for current findings with adequate confidence and at least one supporting source. Use relationshipSummary, relationshipPivots, whyActionable, corroborationState, and nextSearchPivots to see the actor-to-victim/sector/country/TTP/source-family pivots that make a row worth investigating. Use reviewReasons, analysisFacets, evidenceGrade, publisherCount, and the source ID arrays to distinguish actionable rows from stale, partial, single-source, contradicted, or metadata-only claims. Use schedulerDecision, pollingHint, nextPollSeconds, retryAfterSeconds, duplicateRunReuse, and sourceCoverageGaps to decide whether downstream monitoring should poll again, wait for backoff, or treat the row as a source-coverage follow-up. Retain provenanceHash when merging repeated runs.
For paid monitoring workflows, start with paidRowDecision=sellable, then inspect included_with_caveat rows as leads. Treat coverage_gap_only rows as source-expansion work and hold rows as not ready for promotion. The run-level paidRowQuality object gives the same counts without scanning the whole dataset.
The default watchlist contains 20 long-running state-linked and financially motivated groups. Custom queries can monitor up to 25 actor, malware, ransomware, or campaign names in one run. Schedule the Actor to maintain a rolling feed; downstream systems can consume dataset items through the Apify API. Dataset coverage rows are disabled by default so ordinary runs contain intelligence rows rather than product-roadmap rows. Coverage-gap rows remain enabled by default because they explain why an answer may still be partial.
Claims remain claims until corroborated. Confidence and evidence fields expose that distinction instead of presenting every public mention as confirmed activity.