Skip to content

Indexer Coverage

Scryer records which indexers have been completely searched for each wanted item. Once every indexer routed to an item is covered, Scryer stops searching for it and waits for RSS to bring anything new. This model drives the background search.

An indexer’s results for an old release do not change. Searching it again returns what it returned last time. The only new information is a fresh post, and fresh posts arrive through RSS. So Scryer searches each item on each indexer once, then lets RSS carry it.

Coverage is kept per item and per indexer. An item is anything Scryer can grab on its own: a movie, an episode, a season pack, a series pack, or a collection.

An indexer earns coverage only when its answer is complete, with every page fetched and the response validated. An empty answer counts. A response that was rate limited, errored, cut off at a page limit, or deferred for quota earns nothing, and that indexer is tried again on a later cycle.

An indexer that cannot search that kind of item at all, such as an anime-only indexer on a movie, is recorded as covered so it is not asked every cycle.

Each record is stamped with a fingerprint of what a correct search meant when it ran. When the fingerprint changes, the record is stale and that indexer is searched again.

  • Profile changes that affect acceptance: allowed qualities, cutoff, whether upgrades are allowed, and required audio languages. Ranking-only edits, such as the scoring persona or score overrides, reopen nothing because they only re-order results Scryer already has.
  • A rematch that changes the title’s external ids.
  • Indexer changes: URL, API key, categories, other settings, proxy, reported capabilities, or a plugin update that changes how it searches.
  • A new indexer has no records, so every wanted item is uncovered for it and gets backfilled.

Whether an item is wanted at all is decided first, from the files on disk. Lowering a cutoff reopens nothing, because files that meet or exceed the new cutoff are no longer wanted.

Search now always searches, covered or not. A failed automatic grab blocklists the release and grabs the next-best result from the last search without querying indexers again.

Recent items go first: episodes within 14 days of airing, movies within 30 days of release, and titles added in the last 3 days. The long tail drains behind them. Every request goes through the per-indexer scheduler, which respects rate limits and API quotas, and RSS polls outrank backfill when quota runs low. A new indexer on a large library fills in over hours or days, not in one burst.

The Wanted views show each item’s coverage in the Convergence column.

StateMeaning
Searching 3/5Covered on 3 of the 5 routed indexers.
Watching RSSEvery indexer searched. New releases arrive through RSS.
Queued · recentWaiting its turn in the recent lane.
Queued · long tailWaiting its turn in the paced lane.
Waiting on indexer quotaEvery remaining indexer is cooling down or out of quota. Resumes on its own.

The only search Sonarr and Radarr schedule is RSS sync. Missing and cutoff-unmet items are searched when you add a title with search on add, when a download fails, or when you click Search All. The only memory is one last-search time per episode or movie, used to order mass searches.

Sonarr / RadarrScryer
Back catalogSearched when you askSearched once per indexer, automatically
What is rememberedLast search time per episode or movieA complete-search record per item, per indexer, per policy
New indexerJoins RSS onlyBackfills every wanted item, paced
Cutoff raisedRSS only, until you run a Cutoff Unmet searchItems now below cutoff are searched once
Indexer fails mid-searchIts results are missed until the next searchOnly that indexer is retried
Failed downloadNew search of every indexerNext-best saved result, no new query

The trade-off is trust in RSS. If an indexer’s feed is shallow or filtered and a post never appears in it, Scryer will not find that post until you search. Re-converge after (days) in Settings → Acquisition re-searches covered items on a timer for that case. It is off by default.