unlob Docs
Browse documentation

Coverage transparency

Present, removed and why, or never seen — three different answers to an empty result.

Why this exists

The index is admission-controlled: it holds what was judged worth keeping rather than everything that exists. That makes an empty result ambiguous in a way it would not be on an exhaustive index. Three quite different situations look identical from the outside:

  • The page is in the index and your query missed it.
  • The page was in the index and was dropped.
  • The page was never there.

why_not tells you which.

curl -sG -H "x-api-key: $UNLOB_API_KEY" https://api.unlob.com/why_not \
  --data-urlencode 'url=https://docs.rs/tokio'

The three answers

Present — it is there. Your query or your filters missed it; the hit comes back so you can see what it looks like.

{ "status": "present", "hit": { "id": "…", "url": "…", "snippet": "…" } }

Removed — it was there and went, with the reason and, where one exists, the passage that replaced it.

{
  "status": "removed",
  "reason": "superseded",
  "superseded_by": "…:0",
  "removed_at": 1735689600
}

Unknown — never admitted, or never seen.

{ "status": "unknown" }

The removal reasons

reasonWhat it means for you
redundantSomething else in the index already covered this. Search for the topic; you will find the survivor.
supersededA newer or better version replaced it. superseded_by names it.
staleIt aged out.
access-starvedIt stopped being reachable — the source went away, or stopped serving it.
lost-replacementThe thing that superseded it was itself removed.
tombstoned-sourceThe source is excluded.

The first two are the common ones, and neither means the information is gone. redundant and superseded both point at something still in the index that covers the same ground.

Using it

When a search comes back empty, ask about a URL you expected to be there. present means loosen your filters. unknown means the index genuinely does not hold this, and you should say so rather than inferring the web is silent.

Before asserting absence. “There is no public documentation of X” is a strong claim. unknown on the pages you would expect makes it defensible; an empty search result on its own does not.

When a result you used before disappears. removed with superseded_by hands you the replacement directly, which is usually what you wanted anyway.

Also check partial on the search that came back empty. If it was true, part of the corpus was unreachable and the emptiness is a transport problem, not a coverage one — see Reading a result.

What it does not tell you

why_not reports what happened to a URL. It does not report the criteria by which admission decides — that is not a caller-observable property, and it is not documented anywhere on this site. What you get is the outcome and the reason class, which is what you need to act.

Next