Caching

Results are cached, and we tell you when. Every fact carries the timestamp it was actually established, so a cached answer is never presented as a fresh one.

You can always tell

Two fields do this. servedFromCache on the response says whether any result was reused, and checkedAt on each individual result is the real moment that platform was checked, not the moment you asked. In the example below one platform was checked yesterday and the other minutes ago, and you can see which is which.

Response excerpt
{
  "servedFromCache": true,
  "results": [
    { "platform": "github", "registered": true,  "checkedAt": "2026-08-25T09:14:02.118Z" },
    { "platform": "reddit", "registered": false, "checkedAt": "2026-08-26T11:40:55.902Z" }
  ]
}

How long each answer is trusted

Different facts go stale at different speeds, so they get different lifetimes. A confirmed registration is trusted longer than a “not found”, because someone can sign up tomorrow but rarely deletes an account.

ResultReused forWhy
registered: true48 hoursPeople rarely delete accounts
registered: false12 hoursA negative can flip any day
breaches14 daysHistorical, does not change
phoneDetails7 daysCarrier and validity move slowly
webMentions24 hoursSearch results shift, but not by the minute

Repeating the same query

An identical query within five minutes returns the previous response as-is. Beyond that, each platform is re-checked only if its own answer has gone stale by the table above, so a repeat query is usually part fresh and part reused, which is exactly what the per-result checkedAt lets you see.

Cached lookups still count

A cached result counts against your quota the same as a fresh one. Caching exists to make responses fast and to avoid hammering the platforms we check, not as a billing loophole. And pricing it any other way would give us a reason to serve you staler data.