When to Use
- Monthly billing reconciliation: At month-end, paginate through all runs in the account to aggregate compute usage across all actors. Use run IDs to fetch per-run costs via
actor-run/get and produce an itemized billing report.
- Global failure detection: Filter by
status: "FAILED" to get a cross-actor view of all recent failures. An ops dashboard can surface systemic issues (e.g. a proxy provider outage causing failures across multiple actors simultaneously).
- Usage governance: Track which actors are being run, how frequently, and at what cost — without knowing the full list of actor IDs in advance. Useful for enforcing Apify budget limits across teams sharing one account.
- Stuck run detection: Filter by
status: "RUNNING" and identify runs with a startedAt timestamp older than your maximum expected run duration — possible indicators of frozen actors that need manual abort.
- Audit trail generation: For compliance or data governance purposes, retrieve and store a complete run ledger (all actors, all statuses) on a daily or weekly schedule to maintain a durable history beyond Apify's own retention period.
Scope difference: actor-run/getUserRunsList returns runs across all actors in the account — it does not accept an actorId filter. To scope results to a single actor, use actor-run/getActorRuns instead. The run summary objects here include actorId so you can group or filter the results downstream.
Configuration
Connection
| Field | Required | Description |
credentialId | Required | BizFirstAI credential ID holding the Apify API token. The token determines which account's runs are returned. |
baseUrl | Optional | Apify API base URL. Defaults to https://api.apify.com. |
Operation
| Field (config key) | Required | Description |
resource | Required | Must be "actor-run". |
operation | Required | Must be "get-user-runs-list". |
status | Optional | Filter by run status. Accepted values: READY, RUNNING, SUCCEEDED, FAILED, TIMED-OUT, ABORTING, ABORTED. Omit to return all statuses. |
offset | Optional | Number of runs to skip for pagination. Default 0. Must be non-negative. |
limit | Optional | Maximum runs to return per page. Default 50. Valid range: 1–10000. |
desc | Optional | Sort order by start time. "true" (default) = newest first. "false" = oldest first. |
Sample Configuration
{
"resource": "actor-run",
"operation": "get-user-runs-list",
"credentialId": "apify-admin-token",
"status": "FAILED",
"offset": "0",
"limit": "50",
"desc": "true"
}
Validation Errors
| Error | Cause |
API token is required | credentialId / apiToken is missing or empty. |
Invalid settings for actor-run/get-user-runs-list | Internal type mismatch. Verify resource is "actor-run" and operation is "get-user-runs-list". |
APIFY_ERROR (error port) | API token authentication failed or a network error occurred. |
Output
Success Port
| Field | Type | Description |
runs | array | Array of run summary objects across all actors. Each contains runId, actorId, status, startedAt, and finishedAt. |
count | number | Number of runs in this response page. |
offset | number | Offset used for this request. |
limit | number | Limit used for this request. |
Run summary object fields:
| Field | Type | Description |
runId | string | Unique run identifier. |
actorId | string | The actor that produced this run — key field for grouping cross-actor results. |
status | string | Run status at time of query. |
startedAt | string | ISO 8601 start timestamp. |
finishedAt | string | ISO 8601 finish timestamp. Empty if still in progress. |
Error Port
Routes here when authentication fails or a network error occurs. Output contains errorCode ("APIFY_ERROR") and message.
Sample Output
{
"runs": [
{
"runId": "run_x1y2z3",
"actorId": "apify~web-scraper",
"status": "FAILED",
"startedAt": "2026-05-26T11:30:00.000Z",
"finishedAt": "2026-05-26T11:30:45.000Z"
},
{
"runId": "run_a4b5c6",
"actorId": "my-org~price-monitor",
"status": "FAILED",
"startedAt": "2026-05-26T11:00:00.000Z",
"finishedAt": "2026-05-26T11:01:12.000Z"
}
],
"count": 2,
"offset": 0,
"limit": 50
}
Expression Reference
| Expression | Returns |
{{ $output.apify.runs }} | Full array of cross-actor run summaries. |
{{ $output.apify.count }} | Number of runs in this page. |
{{ $output.apify.runs[0].actorId }} | Actor ID of the most recent run. |
{{ $output.apify.runs[0].runId }} | Run ID of the most recent run. |
{{ $output.apify.runs[0].status }} | Status of the most recent run. |
Node Policies & GuardRails
| Policy | Recommendation | Severity |
| Admin token usage | Use a dedicated read-only API token for monitoring and audit workflows. Avoid using the same token that triggers production actor runs — separating concerns limits blast radius if a token is compromised. | Critical |
| Pagination for full audits | High-volume accounts may have thousands of runs. Always implement pagination for complete audit workflows. A single call with limit: 50 returns only the 50 most recent runs. | High |
| Rate limiting | Do not call this endpoint in tight loops. The Apify API enforces rate limits per token. For large-scale audits, add a Delay of 1–2 seconds between paginated requests. | High |
| Status filter specificity | Always filter by status in automated monitoring workflows to reduce response size and processing load. Fetching all statuses is only appropriate for full audit exports. | Medium |
| Run detail fetching cost | This operation returns summary data only (no cost, no dataset IDs). Fetching details for every run via actor-run/get in a loop is expensive in API calls — only fetch detail for runs that require it. | Medium |
Examples
Global Failure Alert — Cross-Actor Health Check
{
"resource": "actor-run",
"operation": "get-user-runs-list",
"credentialId": "apify-admin-token",
"status": "FAILED",
"offset": "0",
"limit": "20",
"desc": "true"
}
Runs every 30 minutes. An IfCondition checks {{ $output.apify.count }} > 0. If failures are detected, a CollectionOperation node extracts the distinct actorId values and a Slack node posts a summary: "2 failed runs detected across actors: apify~web-scraper, my-org~price-monitor."
Monthly Usage Report — Full Account Pagination
// Loop node (max 100 iterations, variable: pageOffset starts at 0)
{
"resource": "actor-run",
"operation": "get-user-runs-list",
"credentialId": "apify-admin-token",
"status": "SUCCEEDED",
"offset": "{{ $variables.pageOffset }}",
"limit": "100",
"desc": "false"
}
// After each iteration: pageOffset += 100
// Accumulate all runs into a variable array
// Break when count < 100
Retrieves all successful runs for the month in chronological order. The accumulated run IDs are passed to a batch actor-run/get loop that fetches cost data (usageTotalUsd) for each run, then groups by actorId to produce a per-actor cost breakdown report.
Stuck Run Detection — Running Longer Than 2 Hours
{
"resource": "actor-run",
"operation": "get-user-runs-list",
"credentialId": "apify-admin-token",
"status": "RUNNING",
"offset": "0",
"limit": "50",
"desc": "true"
}
// Downstream: Function node filters runs where:
// (now - startedAt) > 7200 seconds (2 hours)
// Alert on any stuck runs
A Function node downstream calculates run duration for each item in the runs array and filters those running for more than 2 hours. An alerting node sends an operations notification with the stuck run IDs for manual investigation or abort.