A silent failure is when something breaks and nothing tells you. No exception, no non-200 status, no alert — just a value that looks fine and is wrong.
In data collection it is the most expensive class of bug there is, because every downstream system treats the number as real.
What it looks like in practice
Four shapes, all measured on real platforms:
- The neighbouring field. An object contains
followers_countandfollowings_count, one letter apart. Read the wrong one and on some large accounts it returns zero — so the bug surfaces as "this account has no followers", not as an error. - The rounded twin. A page carries both a display value and an exact one in its embedded state. Reading the display value gives you 83K where the JSON says 83754.
- The 200 that is not a profile. One large platform returns HTTP 200 with 80 KB of "account not found" page instead of a 404. Parse it without an anchor and you will happily extract fields from an error page.
- The page without the data. A request made with the wrong client fingerprint returns a 268 KB page, status 200, with the counter object simply absent. Nothing failed. There is just no number.
Why a zero is worse than an error
An error stops the pipeline. A zero flows through it. Worse, a zero is a claim: it says the account has none of that thing. null says we do not have it. Those are different statements and collapsing them is how a dashboard ends up telling someone their audience vanished.
| Value | Means |
|---|---|
1234 |
We measured it |
null |
We could not get it, and we say so |
0 |
We measured it and it is zero |
The three patterns that catch it
- Anchor on a field that must exist. If the anchor is absent, the document is not what you think it is — fail loudly instead of parsing on.
- Read by exact name, never by suffix. Matching
*Countin an object with three counters picks whichever comes first. - Measure freshness, not uptime. A collector can return 200 for days while collecting nothing. What matters is when data last actually arrived, which is what our status page publishes and never caches.
Every one of our routes lists what it does not return and why — see the archive sources for the same treatment applied to collection.