Actors Monitoring avatar

Actors Monitoring

Under maintenance

Pricing

Pay per usage

Go to Apify Store
Actors Monitoring

Actors Monitoring

Under maintenance

Pricing

Pay per usage

Rating

0.0

(0)

Developer

Hamza Alwan

Hamza Alwan

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

9 hours ago

Last modified

Categories

Share

Actor Monitoring — Usage Reports & Run Comparison

Track cost, reliability, and output volume across every Apify Actor and Task in your account — without building dashboards or writing glue code. Point it at your account, pick a mode, and it collects the runs, crunches the numbers, and delivers a polished email digest plus an Excel workbook and a self-contained HTML dashboard saved to storage.

It runs in three modes:

  • Monthly usage report — an Excel workbook, a self-contained HTML dashboard, and an email digest covering runs, cost, success rate, and product volume across your account over the last N calendar months, with month-over-month trends.
  • Weekly usage report — the same workbook, dashboard, and digest over the last N calendar weeks (Monday–Sunday), with week-over-week trends. Schedule it weekly in Apify.
  • Run comparison — checks the latest run of each monitored Actor/Task against a baseline (previous run, pinned run, or historical average) and emails an alert when items, runtime, cost, or specific dataset fields change.

All modes share the same run collection, filtering, and email delivery, so one configuration covers ongoing usage reporting and regression alerting.

Quick start

Monthly report — three fields, everything else has a working default:

{
"actorMode": "monthly",
"emailRecipients": ["you@example.com"],
"actorNameInclude": ["my-scraper"]
}

Weekly report — same fields, weekly mode; reports on the last 4 calendar weeks by default:

{
"actorMode": "weekly",
"emailRecipients": ["you@example.com"],
"actorNameInclude": ["my-scraper"]
}

Run comparison — same three fields, different mode. Defaults to comparing the last two SUCCEEDED runs of each matching Actor/Task:

{
"actorMode": "compare",
"emailRecipients": ["you@example.com"],
"actorNameInclude": ["my-scraper"]
}

Leave emailRecipients empty to skip email — every artifact is still written to the key-value store and dataset.

Input reference

Fields are grouped into form sections in this order; a monthly or weekly user never needs to scroll past section 4, a compare user never needs section 4 at all.

1. Get started

FieldTypeDefaultDescription
actorModestring (monthly | weekly | compare)monthlyWhich report to build.
emailRecipientsarray of strings[]Who receives the email. Empty = no email, artifacts still saved.
actorNameIncludearray of strings[] (all actors)Only monitor Actors whose name contains one of these substrings.

2. Actor & task scope

FieldTypeDefaultDescription
useDirectActorRunsbooleanfalseCollect runs directly per Actor instead of via saved Tasks.
actorNameExcludearray of strings[]Skip Actors matching these substrings.
actorNamePatternstring (regex)unsetReplaces the include/exclude substring lists when set.
taskNameIncludearray of strings[] (all tasks)Only monitor Tasks matching these substrings. Ignored when useDirectActorRuns is on.
taskNameExcludearray of strings[]Skip Tasks matching these substrings. Ignored when useDirectActorRuns is on.
taskNamePatternstring (regex)unsetReplaces the Task include/exclude lists when set. Ignored when useDirectActorRuns is on.
actorIdsarray of stringsunsetExplicit Actor IDs; skips name-based discovery.
filterRunsByStatusarray (SUCCEEDED/FAILED/ABORTED/RUNNING/TIMED-OUT)all statuses in monthly/weekly, SUCCEEDED only in compareOnly collect runs with these statuses.
runInputFiltersarray of objectsunsetInclude/exclude runs by their input values, e.g. {"field": "country", "operator": "equals", "value": "US", "action": "include"}. Operators: equals, notEquals, exists, notExists, in, notIn, contains. Max 20 rules. Explicitly compared run IDs are never filtered out.
runInputFilterModestring (all | any)allHow multiple include rules combine; exclude rules always drop a run on match.

3. Email & delivery

FieldTypeDefaultDescription
outputModestring (email | dataset | both)emailWhere results go. dataset skips email even with recipients set; storage artifacts are always saved.
emailSubjectstringmode-appropriate defaultTemplate with {mode}, {date}, {actorCount}, {status} placeholders.
emailSectionsobjectall trueToggle sections: showCostBreakdown, showRunLinks (both modes); showSchemaChanges, showTrendAnalysis, showAnomalyDetection, showBuildChanges, showFieldDiscovery (compare only).
emailFooterTextstringunsetCustom line appended to the email footer.
dryRunbooleanfalseBuild everything but send no email — the rendered HTML is saved to the key-value store as dry-run-email-preview.html.

4. Monthly / weekly report

Applies to actorMode: monthly or weekly only — ignored in compare mode. Use monthsToAnalyze/includeCurrentMonth in monthly mode and weeksToAnalyze/includeCurrentWeek in weekly mode; the rest apply to both.

FieldTypeDefaultDescription
monthsToAnalyzeinteger (1–24)3(Monthly) Calendar months of runs to report on. Ignored when a custom date range is set.
includeCurrentMonthbooleantrue(Monthly) Whether the (partial) current month counts as one of the analyzed months.
weeksToAnalyzeinteger (1–52)4(Weekly) Calendar weeks (Monday–Sunday) of runs to report on. Ignored when a custom date range is set.
includeCurrentWeekbooleantrue(Weekly) Whether the (partial) current week counts as one of the analyzed weeks.
dateRangeStartstring (YYYY-MM-DD)unsetCustom period start; overrides monthsToAnalyze/weeksToAnalyze when both dates are set.
dateRangeEndstring (YYYY-MM-DD)todayCustom period end, inclusive.
topNActorsinteger (1–20)5Rows in each dashboard ranking (top cost, top failing, health).
customDimensionsarray of objectsgroup by calendar month (monthly) or ISO week (weekly)Group the report by run fields instead of by reporting period. Up to 5 dimensions; see docs/field-comparison.md for recipes.
enableAggregationbooleantrueAdds the Aggregated Insights view: item volume per product dimension with period-over-period growth and yield alerts.
saveHtmlDashboardbooleantrueSaves the standalone HTML dashboard to the key-value store and links it from the email.
healthScoreWeightsobject{successRate: 0.47, zeroItemInverse: 0.29, costEfficiency: 0.24}Weights of the 0–100 actor health score; must sum to 1.0.

5. Compare runs

Applies to actorMode: compare only — ignored in monthly and weekly modes.

FieldTypeDefaultDescription
compareModestring (last2 | lastVsBaseline | lastVsAverage)last2How the baseline is chosen. lastVsBaseline needs baselineRunId; lastVsAverage averages baselineRunCount runs. Ignored when explicit run IDs are set.
baselineRunIdstringunsetPinned known-good run. Required for lastVsBaseline.
baselineRunCountinteger (2–20)5Historical runs averaged for lastVsAverage.
compareRunId1stringunsetExplicit baseline run ID. Takes full precedence over compareMode/baselineRunId when set together with compareRunId2.
compareRunId2stringunsetExplicit "current" run ID for a two-run comparison.
maxDatasetItemsinteger (100–10000)1000Dataset items fetched per run for field-level comparison.
enableCompareExcelbooleanfalseSaves a comparison workbook (compare-report.xlsx) to the key-value store.
combineEmailsbooleantrueSend one consolidated email for all compared entities instead of one per entity. Monthly and weekly modes always send a single email.

6. Compare — field rules

Applies to actorMode: compare only.

FieldTypeDefaultDescription
fieldsAndCompareStrategyobjectdiscovery modeWhich dataset fields to compare and how, e.g. {"results.price": "average", "items": {"strategy": "count", "lowerIsBetter": false}}. Use [] to reach into arrays of objects (reviews[].rating). 25 strategies available — see docs/field-comparison.md. Omitting this field, or passing {}, runs field discovery instead of comparison.
excludeFieldsarray of strings[]Field paths to skip — from comparison when strategies are configured, from the discovery report otherwise.

Applies to actorMode: compare only; both features need at least 3 runs of history.

FieldTypeDefaultDescription
enableTrendAnalysisbooleanfalseLinear-regression trend analysis (items/runtime/cost) over recent runs.
trendRunCountinteger (3–50)10Recent runs feeding trend analysis.
enableAnomalyDetectionbooleanfalseZ-score anomaly flagging. Works independently of trend analysis.
anomalyStdDevMultipliernumber (1–5)2Standard-deviation multiplier — lower is more sensitive.

8. Alerts & notifications

FieldTypeDefaultDescription
alertsobject{changePercent: 5, yieldDropPercent: 20}One place for every "how big a change matters" setting: changePercent (compare-mode email gate), itemsCount/runtimeSecs/costUsd (percent-change severity bands for compare), avgRuntimeSecs/avgCostUsd (absolute monthly Threshold Breaches in seconds/USD), custom (per-field bands; also failureRate/zeroItemRate for monthly), yieldDropPercent (aggregation yield alert).
notifyOnSignificantChangebooleantrueCompare mode: only email when at least one metric changed by alerts.changePercent or more.
alwaysSendSummarybooleanfalseCompare mode: send an "all clear" summary email even when nothing significant changed.

9. Billing

FieldTypeDefaultDescription
pricePerItemnumberunset (billing hidden)Your client-facing USD price per dataset item. Adds Billed and Margin columns (billed = items × price, margin = billed − Apify cost) to both modes.

10. Limits & advanced

FieldTypeDefaultDescription
maxRunsinteger (1–50000)100Cap on runs fetched per monitored Actor/Task.
concurrencyLimitinteger (1–20)5Actors/Tasks collected in parallel.
circuitBreakerThresholdinteger (1–50)3Abort the run once at least this many actors/tasks fail to collect and at least half of the processed items have failed. If the first few processed items all fail (e.g. an invalid token), the run aborts immediately.
tokenstring (secret)account running the ActorAPI token of the account to monitor.
debugbooleanfalseVerbose logs for troubleshooting.

Output reference

ArtifactWhat it isWhere it lands
Excel workbook (monthly/weekly)Multi-sheet report: Contents, Executive Dashboard, Entity Metrics, Category Summary, All Runs, Aggregated Insights, Threshold Breaches, Cost BreakdownKey-value store, key {base}-sheet.xlsx
Comparison workbook (compare)Summary + field-detail + inventory sheets for the compared entitiesKey-value store, stable key compare-report.xlsx (when enableCompareExcel is on)
HTML dashboard (monthly/weekly)Standalone, self-contained HTML page — KPI tiles, trend charts, rankings, health board, no external requestsKey-value store, key {base}-dashboard.html (when saveHtmlDashboard is on)
Categorized run exportSlim JSON of every collected run (id, names, dates, status, items, runtime, cost, build)Key-value store, key {base}.json
Report manifestLinks every report artifact together with public URLsKey-value store, key {base}-manifest.json
Compare manifestRun counts, comparison/skip counts, and the compare Excel key (compare mode)Key-value store, key compare-manifest.v2
last-report-summaryStructured JSON snapshot of the latest run, for the Output tab and downstream automationKey-value store, key last-report-summary
Diff lineagePer-cadence snapshot the next same-cadence run diffs against for the period-over-period comparisonKey-value store, key report-diff-lineage-{week|month|date-range}
Field discovery reportPer-entity auto-discovered field types and suggested strategies, when no fieldsAndCompareStrategy is configuredKey-value store, key field-discovery-report.v2.{entity}
Dataset recordscomparison.v4 rows (compare mode, one per field/run comparison) or monthly-report.v4 rows (monthly/weekly mode, one per report) plus processing-failures.v2 on per-item errorsDefault dataset — Console has Overview, Comparisons, and Usage Reports views
EmailHTML digest sharing the same computed metrics as the Excel/HTML dashboard (monthly/weekly KPI parity). Trend summary labels total-runtime PoP separately from the avg-runtime table column; compare-mode request % is Crawlee-only when request stats are mixedSent via apify/send-mail when outputMode includes email and recipients are set

Metric definitions (monthly / weekly / date-range)

MetricDefinition
Success rateSUCCEEDED / terminal runs where terminal = SUCCEEDED | FAILED | ABORTED | TIMED-OUT. In-flight statuses (RUNNING, READY, ABORTING, TIMING-OUT) are excluded from the denominator.
Zero-item success share (zeroItemSuccessRate)Share of succeeded runs that produced zero items — not “success rate among zero-item runs.”
Period-over-period headlinesCalendar MoM/WoW for week/month (last two buckets). Custom date-range windows use a mid-window half-split aligned with Aggregated Insights.
Email {status} / subject alert emojiDriven by reliability signals (failures, zero-item successes, or no terminal successes) — not by cost watchlist tips alone.
weekNumber transformISO week label with year prefix, e.g. 2026-W30.

Invalid emailRecipients entries produce validation warnings and are skipped at send time; they do not abort the Actor.

The Console's Run tab (Output section) also surfaces one-click links via .actor/output_schema.json: the last-report-summary record (whose artifacts field carries this run's actual Excel/dashboard/manifest URLs — report artifact keys vary with the reporting period, so they can't be linked directly), the dataset items, and — in compare mode — the compare manifest and comparison workbook.

Data & privacy

This Actor reads data from the runs it monitors and embeds values from it into its outputs. There is no redaction layer — treat every artifact and email as potentially containing third-party PII:

  • Compare mode embeds actual dataset field values (the ones you compare) into the comparison workbook, dataset records, and alert emails. If a monitored dataset holds personal data (emails, names, addresses, scraped user content), those values appear verbatim in the outputs.
  • runInputFilters match against monitored runs' input values, which can themselves contain personal or sensitive data (search terms, targeted URLs, credentials embedded in inputs).

Because outputs can carry this data, restrict accordingly: limit emailRecipients to people cleared to see the monitored data, and control who can access this Actor's key-value store and default dataset. Prefer non-sensitive fields for comparison where possible.

FAQ

Does this send Slack/webhook notifications? No. Use Apify Console's built-in run webhooks on this Actor/Task for that.

Why did my field comparison show no results? Check fieldsAndCompareStrategy isn't an empty object {} — that's treated the same as omitting it, which runs field discovery (suggestions only) instead of comparison. See docs/field-comparison.md.

Can I compare two arbitrary runs? Yes — set compareRunId1 and compareRunId2; they take full precedence over compareMode and baselineRunId.

Where do I find real, working example configs? See examples/ and examples/README.md.

Local development

npm install
npm test

Example configs live in examples/. Field-comparison recipes are in docs/field-comparison.md.