Search Providers

Configure Newznab and Torznab indexers in Settings or config.ini, including the entry format, Usenet retention, and provider search priority.

Search providers tell Comicarr where to look for releases. Comicarr supports Newznab (Usenet indexers) and Torznab (torrent indexers via Prowlarr, Jackett, or a native Torznab API).

Provider typeWhere you configure it
NewznabSettings → Search → Usenet indexers (add, edit, remove, enable), or config.ini
TorznabSettings → Search → Torrent indexers (since v0.33.0), or config.ini

Torznab editor since v0.33.0

Since v0.33.0 the Settings → Search tab has a Torznab editor mirroring the Newznab one, so hand-editing extra_torznabs is no longer required. The Torznab form has no RSS uid field, since that prefix is a Newznab-only quirk (see below). The config.ini format documented on this page remains valid for hand-editing and is what the editor writes.

Provider entry format

Both EXTRA_NEWZNABS and EXTRA_TORZNABS hold a list of provider records, flattened into one line of comma-space separated fields. Each record is 6 fields, or 7 when Comicarr has assigned it a provider id.

PositionFieldNotes
1NameDisplay name. Must be unique across both the Newznab and Torznab lists.
2HostFull URL to the API endpoint. Must be http:// or https://.
3Verify TLS1 or 0 (true/false, yes/no, on/off also accepted).
4API keyWrite it in plaintext; Comicarr encrypts it in place on the next config write (see below).
5CategoriesSeparator is #, never a comma. See Category IDs.
6Enabled1 or 0. A provider with 0 here is never searched.
7Provider idInteger, assigned by Comicarr. Omit it when adding an entry by hand.

Field count must be consistent

Comicarr splits the line into fixed-width records, so every record in a given key must have the same number of fields. Mixing a 6-field entry with a 7-field one produces Provider configuration has an invalid field count and the whole key is rejected. The simplest safe move when hand-editing is to drop the id from every entry and let Comicarr reassign them.

Fields cannot contain , (comma-space), because that is the delimiter. This is why categories use #.

Torznab providers

Add, edit, enable, and remove Torznab indexers under Settings → Search → Torrent indexers (since v0.33.0), or hand-edit extra_torznabs using the record format above. Either way, a Torznab provider is only searched when all four of these are true. Missing any one of them is the usual reason a correctly-typed provider appears to do nothing:

Torrents are enabled

ENABLE_TORRENTS = True under [Torrents].

Torrent searching is enabled

ENABLE_TORRENT_SEARCH = True under [Torrents]. This is a separate switch from ENABLE_TORRENTS.

Torznab support is enabled

ENABLE_TORZNAB = True under [Torznab]. This is the Enable Torznab indexers toggle in Settings → Search.

At least one entry is enabled

The entry's own enabled field (position 6) is 1.

Worked example: one Prowlarr indexer

config.ini
[Torrents]
enable_torrents = True
enable_torrent_search = True

[Torznab]
enable_torznab = True
extra_torznabs = Prowlarr, http://prowlarr:9696/1/api, 1, YOUR_PROWLARR_API_KEY, 7030, 1

Reading that extra_torznabs line field by field: name Prowlarr, host http://prowlarr:9696/1/api, verify TLS 1, API key YOUR_PROWLARR_API_KEY, category 7030, enabled 1.

The host is the complete Torznab feed URL that Prowlarr or Jackett gives you, not the application's base URL. Copy it from the indexer's Torznab Feed / Copy Torznab Feed button:

SourceTypical host value
Prowlarrhttp://prowlarr:9696/1/api, where the 1 is that indexer's id
Jackett (single indexer)http://jackett:9117/api/v2.0/indexers/nyaasi/results/torznab
Jackett (all indexers)http://jackett:9117/api/v2.0/indexers/all/results/torznab

Torznab hosts are used verbatim

Comicarr appends ?t=search&… to the Torznab host exactly as you wrote it, trimming a trailing / and nothing else. If the URL is missing its /api or /torznab suffix, every search 404s. Newznab hosts get one bit of help Torznab hosts do not: Comicarr appends /api when the host does not already end in api.

Worked example: two indexers

Both records go on the same line, one after the other, with no separator beyond the usual , :

config.ini
[Torznab]
enable_torznab = True
extra_torznabs = Prowlarr, http://prowlarr:9696/1/api, 1, KEY_ONE, 7030, 1, Jackett, http://jackett:9117/api/v2.0/indexers/all/results/torznab, 1, KEY_TWO, 7030#8020, 1

That is 12 fields, or two 6-field records. The second entry searches two categories, 7030 and 8020, joined with #.

Torznab settings

SettingSectionTypeDefaultDescription
ENABLE_TORZNAB[Torznab]boolFalseMaster switch for Torznab support.
EXTRA_TORZNABS[Torznab]stringnoneThe provider list, in the format above.
ENABLE_TORRENTS[Torrents]boolFalseMaster switch for torrents.
ENABLE_TORRENT_SEARCH[Torrents]boolFalseAllow searching torrent providers.

When an entry carries no category at all, Comicarr falls back to 8020. Set it explicitly. That fallback is a legacy default carried forward, and nobody chose it for you.

Legacy TORZNAB_* settings

config.ini may still contain single-provider keys under [Torznab]: torznab_name, torznab_host, torznab_apikey, torznab_category, torznab_verify. They were retired years ago and are not read by the search code. Populating them by hand does not configure a provider.

Since v0.29.1, Comicarr no longer ignores them silently. On every startup:

What you haveWhat Comicarr does
A complete entry (name + host + API key + category)Folds it into extra_torznabs as a real provider, then deletes the legacy keys from config.ini. Its enabled flag is taken from ENABLE_TORZNAB.
An incomplete entryLogs a warning naming the missing keys and telling you it is not used for searching. The entry is left alone.
A name that collides with an existing providerLogs a warning and leaves the entry unmigrated. Provider names are unique across the Newznab and Torznab lists together.
A host already present in extra_torznabsRemoves the duplicate legacy keys.

After a successful absorption the legacy keys are gone from config.ini and the provider appears in extra_torznabs. That is the expected end state, so leave them gone. Manage the absorbed provider, and add further ones, in Settings → Search or by appending records to extra_torznabs.

Newznab providers

Newznab is the standard API for Usenet indexers such as NZBgeek, DrunkenSlug, and NZBFinder. The easiest path is Settings → Search → Usenet indexers, which adds, edits, enables, and removes indexers without touching config.ini. Indexer changes there are saved with their own Save indexers button, separately from the rest of the page.

The equivalent config.ini form uses the same record layout:

config.ini
[Newznab]
newznab = True
extra_newznabs = NZBgeek, https://api.nzbgeek.info, 1, YOUR_API_KEY, 1#7030, 1
SettingSectionTypeDefaultDescription
NEWZNAB[Newznab]boolFalseMaster switch for Newznab support. It is a boolean, not a provider definition.
EXTRA_NEWZNABS[Newznab]stringnoneThe provider list, in the format above.

The Newznab category field is not just categories

For Newznab entries, field 5 is uid#categories, a legacy layout where the part before the first # is the indexer UID used for RSS and the part after it is the category list.

  • 1#7030 → uid 1, category 7030. This is the form you want.
  • 7030 (no #) → read as uid 7030, and the category falls back to the default 7030. It happens to work for comics, which is why the mistake is easy to miss.
  • 1#7030#7020 → uid 1, categories 7030,7020.

In the Settings UI the Categories box stores commas as #, so type 1,7030 there to get 1#7030.

Torznab entries do not have the uid prefix. Field 5 there is the category list on its own.

Category IDs

Comicarr's defaults are the standard Newznab/Torznab book categories: 7030 (Books/Comics) for Newznab, 8020 for Torznab. Prowlarr and Jackett both map their indexers onto the same standard numbering, so 7030 is the right starting point for comics on either.

Ask your indexer what it actually supports. Every Torznab endpoint answers a capabilities query:

curl 'http://prowlarr:9696/1/api?t=caps&apikey=YOUR_API_KEY'

The <categories> block in the response lists every id the indexer will accept. Manga is frequently under a different id than comics on trackers that separate them.

API keys and encryption

Write API keys in plaintext when hand-editing. On the next config write Comicarr encrypts them in place, so afterwards the field reads as a Fernet token beginning with gAAAAA. That is normal and means the key was picked up. See Credential Encryption.

The GET /api/config/providers endpoint and the Settings UI never return provider API keys; they report only whether a key is set. Changing a provider's host to a different origin requires re-entering the key, so a stored credential is never redirected to a new server.

Usenet retention

SettingSectionTypeDefaultDescription
USENET_RETENTION[Providers]int3500Maximum age in days for Usenet articles. Results older than this are filtered out. Most major providers retain 3500+ days.

Provider priority

SettingSectionTypeDefaultDescription
PROVIDER_ORDER[Providers]stringnoneSearch priority, as alternating position, name pairs: 0, Prowlarr, 1, NZBgeek.

PROVIDER_ORDER is maintained by Comicarr, not hand-authored. It is rebuilt on every startup from the providers that are currently enabled: newly enabled providers are appended to the end, and providers you disable are dropped. Reorder by editing the position numbers; do not add names for providers that are not enabled elsewhere.

Search tiers

Comicarr uses a tiered search strategy to reduce unnecessary API calls.

SettingSectionTypeDefaultDescription
SEARCH_TIER_CUTOFF[General]int14Number of days after release before Comicarr escalates to lower-priority providers.

Tier 1: recent releases

For issues released within the last SEARCH_TIER_CUTOFF days, Comicarr searches only the highest-priority providers in PROVIDER_ORDER. This keeps API usage low for new releases that are widely available.

Tier 2: older releases

Once an issue is older than SEARCH_TIER_CUTOFF days without a match, Comicarr expands the search to all configured providers. This gives the best chance of finding back issues.

Set SEARCH_TIER_CUTOFF to 0 to always search all providers. This increases API usage but ensures the widest coverage from day one.

Checking your work

  • Settings → Acquisition reports whether any search route is actually usable, and names what is missing when none is.
  • After editing config.ini, restart Comicarr and check the log for [CONFIG] lines. A rejected provider list or an absorbed legacy entry is reported there.
  • Raise the log level to 2 · Debug in Settings → Logs and run a search; the provider name and the URL Comicarr builds are logged per query. See Logging.
  • Pack and bundle releases (common for manga torrents) are rejected unless Allow packs is enabled on the series. See Downloading.
  • A series with Allow packs on sends one extra bare-title query to Torznab indexers only (since v0.36.0), because pack titles carry no issue number for the numbered queries to match. See The bare-title pack pass.

On this page