monitoringfailuresapify-storedebuggingportfolio-management

Which Actor Failed? The Question the Apify Console Can't Answer

The Apify Console shows you had 25 failed runs yesterday. But which actors? Which users? We spent weeks trying to answer this question. Here's how we finally cracked it.

ApifyForge Team

Which Actor Failed? The Question the Apify Console Can't Answer

You open the Apify Console. The daily runs chart shows 191 runs yesterday. 166 succeeded. 25 failed.

Which 25?

You click around. There is no breakdown by actor. There is no list of failed runs. There is no way to filter. The number 25 stares at you from a bar chart and that is all you get.

If you manage 5 actors, this is annoying. If you manage 300, it is a serious problem.

The Obvious Solutions That Don't Work

We spent weeks trying every approach the Apify API offers.

The runs endpoint (/v2/actor-runs) returns only your own runs. When a paying user runs your actor via Pay-Per-Event, that run does not appear in your runs list. It shows up in the Console chart, but the API pretends it does not exist. For us, this meant seeing 6 runs via the API when the Console showed 191.

The per-actor runs endpoint (/v2/acts/{id}/runs) has the same limitation. Only your runs. Not your users' runs.

The 30-day stats are the only data point that includes all users. Every actor has a publicActorRunStats30Days field with totals for SUCCEEDED, FAILED, ABORTED, and TIMED-OUT across every user who ran it. But it is a 30-day aggregate. No daily breakdown. No individual run details.

So the data exists — aggregated, not itemized. The Console can show you the daily total because it uses internal APIs that are not exposed to developers. The public API gives you everything except the one thing you actually need: which actors failed today.

How We Solved It

The answer turned out to be simple, once we stopped looking for an endpoint that does not exist.

If you cannot get daily failure counts directly, you take the 30-day aggregate stats today, take them again tomorrow, and subtract. The delta tells you exactly which actors gained new failures between the two snapshots.

Actor A had 12 failures yesterday. Today it has 14. That is 2 new failures. Actor B went from 0 to 0. Clean. Actor C jumped from 3 to 8. Something broke.

It is not elegant. It requires running the check regularly. But it works, and it catches every failure across every user — PPE runs, auto-test runs, all of it.

What This Looks Like in Practice

We built this into an Apify actor called Actor Failure Tracker. Run it daily and it produces a report like this:

  • New failures since last check: 3
  • Actors affected: 3
  • podcast-directory-scraper: +1 failed
  • fbi-wanted-search: +1 failed
  • gdacs-disaster-alerts: +1 failed

That is the answer to "which 25 failed?" that the Console could not give us. The first run establishes a baseline. Every run after that shows the delta. Set up a webhook and you get a Slack or Discord message whenever something breaks.

Why This Matters for Store Revenue

Failed runs are not just a technical problem. They are a revenue problem.

Every failed PPE run is a user who paid for nothing. Do that enough times and they stop using your actor. Your success rate drops. Apify's auto-test starts failing. The maintenance flag appears. Your Store ranking tanks. Revenue follows.

The difference between catching a failure on day one and catching it on day seven — when the maintenance flag has already been applied — is the difference between a 5-minute fix and a week of lost revenue.

We manage over 300 actors on the Apify Store. Before building this tracker, failures were invisible until they became maintenance flags. Now we catch them the same day they appear. Our maintenance flag rate has dropped to near zero.

Getting Started

The Actor Failure Tracker is available on the Apify Store. No configuration needed for the basic case — just run it. For automated monitoring, set up a scheduled run to execute it daily and add a webhook URL for alerts.

If you use ApifyForge, the Failures dashboard shows the same data with a visual interface — new failure counts, affected actors, and 30-day success rates, all in one view.

The actor costs $0.10 per report via Pay-Per-Event. For a daily check across 300+ actors, that is $3 per month to know exactly what is breaking in your portfolio before your users tell you.

Related actors mentioned in this article