Usage statistics — what our actors collect

At the end of each run, an Actor that includes usage statistics creates a small, content-free summary. It is used only to monitor reliability and improve the Actor. A copy of the exact record for your run is saved as USAGE_STATS in your own Apify key-value store, so you can always see what was created.

Opt out: set disableUsageStats to true in the Actor input. Nothing is sent then; your USAGE_STATS record only says that statistics were disabled. The same flag turns off every additional field listed below, including the user ID and the repeat-run code.

1. Basic run summary

FieldWhat it isWhy we collect it
Schema version, Actor name, build numberWhich Actor and which build produced the record.To tell which version of an Actor a reliability problem belongs to.
UTC start and finish hourThe hour of the day (UTC) the run started and finished, not a precise timestamp.To see time-of-day patterns in failures without recording exact times.
Run duration, number of results, time to first resultEach recorded as a coarse range, not an exact value.To spot runs that became slow or return too little.
Empty flag, end status, error typeWhether the result was empty, how the run ended, and one error type from a fixed list.To measure how often runs succeed and what kind of problem occurs.
Memory setting and charged event countsThe memory the run used as a setting, and how many events of each kind were charged.To check that memory defaults and charging behave as designed.
Names of the input fields you setOnly the names of the fields, never their values.To learn which input options are used and which are never touched.
Selected option of fixed-choice input fieldsFor inputs that offer a fixed list of choices (for example a sort order), which option was selected.To learn which of the offered options matter.

2. Additional fields

FieldWhat it isWhy we collect it
Apify user IDThe ID of the Apify account that ran the Actor. It is removed after 13 months.For aggregate reliability, repeat-use and cross-Actor analysis.
Paying-account flagWhether Apify marks the account as paying.To separate free-plan and paid-plan behavior in aggregate reports.
Size range of list inputsHow large the lists in your input are, as a range, never the items.To understand typical workload sizes.
Selected countryOnly when the input offers a fixed list of countries: the country selected.To see which markets an Actor is used for.
Actor categoryOne category from a fixed Actor taxonomy.For cross-Actor analysis.

These fields are used only for aggregate analysis. Reports suppress any cell with fewer than five distinct users. We do not export, sell, share, or attempt to re-identify this data.

3. Run-outcome signals

To learn whether a run did what it was asked to do, the record also holds a few more coarse ranges and yes/no flags. None of them contains content.

FieldWhat it isWhy we collect it
Requested result limit and share deliveredThe result limit you asked for (a range, when the input has one) and what share of it was delivered.To see whether runs deliver what was requested.
Results per input itemResults delivered per input item you listed, as a range.To see typical yield per item.
Output quality rangesHow fully the result fields were filled, the share of rows that look like errors, the share of duplicate rows, and how many different fields appeared. These are counted in memory while results are saved; no result content is kept.To detect quality regressions after a target site changes.
How the run was startedConsole, API, schedule, webhook or another Actor.To understand how the Actor is used.
How the run endedStopped by you, timed out, reached the requested limit, stopped by the charge limit, and how many times the platform moved the run.To tell normal endings from failures.
Item progress and failure reasonIf the Actor reports it: how many items to process worked or failed (ranges) and one failure reason from a fixed list.To find the common causes of partial failures.
Input-field codeA short code made from the names of the input fields you set, never their values.To group runs by input shape.

4. Repeat-run code

When your Apify user ID is recorded, the record also holds an 8-character one-way code made from your input (proxy settings left out) and the Actor's name. It only lets us see that the same account ran the same input again soon after an unsatisfying run; we never see the input itself. It is stored only in the database, never published, and reports use it in aggregate with the same five-user minimum. It is the one exception to the statement below that no hashes are collected. disableUsageStats: true turns it off.

What we do not collect

Input text, search terms, URLs, domains, usernames, email addresses, names, proxy credentials, tokens, scraped records, output items, raw error messages, stack traces, or hashes of any of those values (apart from the repeat-run code above).

Retention and use

Records are kept for no longer than 13 months, used only as aggregated operational statistics, and never sold or shared.