Repository navigation
Compatibility
indexarr does not contain a parser for every tracker: it speaks Torznab for torrents and Newznab for Usenet. Everything that exposes one of these protocols works without changes. For the rest, indexarr adopts the source with a native definition or with a family connector; if it has neither, the source stays queued and no proxy to Jackett or Prowlarr is created.
| Source | Status | Notes |
|---|---|---|
| Jackett / Prowlarr | not supported | indexarr replaces them: manager endpoints are rejected. Sources are added from the native catalog. |
MirCrew (mircrew-indexer) |
complete | Base or /api; magnet in link/enclosure; no seeders; /status for the forum login; slow responses. |
| Direct Torznab | complete (torrent) | Any tracker URL containing /api or torznab is used as is; otherwise /api is appended. Jackett/Prowlarr URLs are excluded. |
| Newznab / Usenet | complete (generic) |
newznab connector and newznab-generic definition: caps, search/tv/movie/music/book search, .nzb payload stored or resolved at grab time, sending to SABnzbd/NZBGet clients. Native definitions for individual Usenet sites not yet in the catalog. |
| RSS / Atom | complete | Title, magnet, .torrent enclosure, size, numeric category, date; bulk import and OPML. |
| ExtTo | complete (HTML) | Dedicated parser: title and magnet from the same row; category from the c= filter. |
| TorrentGalaxy | complete (HTML) | Dedicated parser for post-detail pages with magnet cache (6 hours). |
| CorsaroBlu | listing only (HTML) | Dedicated parser for /torrent/, /torrents/ links and direct magnets, with detail cache. The public listing needs no credentials. Guest keyword search is disabled by the site; the CorsaroBlu (account) variant accepts a pasted session cookie and is still a draft. A FlareSolverr session is required because a plain client receives 429/503. |
| HTTP Basic | complete | Dedicated per-source fields, used for searches and downloads. |
| API key | complete | Sent as apikey and as the X-Api-Key header; it can be empty. |
| Cloudflare / challenge | with FlareSolverr | Automatic retry for RSS and direct Torznab; LAN addresses excluded. |
| Proprietary APIs | not handled automatically | The source stays in the "to be written" queue until a native definition exists; it does not appear in the user list. No automatic proxy to Jackett/Prowlarr. |
mircrew-indexer is the reference case of a "hand-rolled" Torznab service: it
deserves an explicit list of what indexarr does for it.
| MirCrew behavior | indexarr handling |
|---|---|
Endpoint <base>/api, port chosen by the user |
Accepts both the base and the URL with /api
|
Magnet in <link> and <enclosure>
|
Recognized, no attempt to download it over HTTP |
No seeders attribute |
Seeders unknown (-1), attribute omitted in the output |
<response offset total> without namespace |
Ignored, pagination uses the request parameters |
| Date = forum topic date | Read from <pubDate>
|
/status with logged_in, login_error, last_run
|
The Test button queries it and distinguishes failed, in-progress and lost login |
| Slow forum search | Default timeout 45 s, run with margin |
XML with raw & or HTML entities |
Sanitization before parsing |
| Field | Value |
|---|---|
| Name | MirCrew |
| Type | Torznab / indexer |
| URL |
http://<host>:<port> or http://<host>:<port>/api
|
| Manager | MirCrew (or Direct Torznab, Auto is fine) |
| API key | the service's own, if present |
| Categories |
5000 for TV, 2000 for movies |
| HTTP username/password | only if the service requires them |
The path has been verified against a real mircrew-indexer (version 0.1):
caps, /status with an active forum login, ingestion of 100 releases from the
"latest" list and Torznab search with magnet and infohash.
| Symptom | Meaning |
|---|---|
| Test: "forum login failed: …" | MirCrew forum credentials must be redone in the service; the local index keeps responding |
| Test: "forum login in progress" | Service just started, not an error |
| Test: "forum login lost" | The service had completed a run and lost the login |
| FlareSolverr test failed | Service unreachable, wrong URL or no Internet access from the solver |
| HTTP 401 | Wrong API key or Basic credentials |
| HTTP 404 on download | Release stored only as a magnet: use the magnet link |
| HTML instead of XML | The indexer returned a login page or a block: check the URL and credentials |
| No results with an empty query | Direct Torznab may not support the "latest" list: set a search term on the source |
extto.org/ext.to, torrentgalaxy.* and CorsaroBlu are not feeds: they
are HTML listings. indexarr recognizes them by host and uses the same approach as
Gextto:
| Site | How |
|---|---|
| ExtTo | Pairs the post-detail link and the magnet present in the same row; no detail fetch. |
| TorrentGalaxy | Follows the post-detail links of the rows, extracts the magnet from the page and caches it for 6 hours. |
| CorsaroBlu | Follows /torrent/ or /torrents/ links and direct magnets, extracts magnets in parallel and caches them. It is a latest-list source; guest search is disabled and all requests use FlareSolverr. |
Limits: first page, at most 50 releases per source; if the layout changes or the
site requires login, the test reports the error. Quick add recognizes the
host; Default category assigns a Torznab category when the page does not
provide one. The other sites without RSS remain in the native queue: the index
classifies them as "to be written" (maintenance view /indexers/new?queue=1) and
does not create a Torznab endpoint towards the manager.
With an endpoint configured in Settings → Cloudflare / FlareSolverr, a response with a Cloudflare challenge is retried through the service:
-
cf-mitigated: challengeheader, or HTML page withJust a moment...,cf-chl,__cf_chl,Attention Required, on 403/503 (and on 200); - RSS, direct Torznab and connection tests;
- no retry for LAN addresses: a local 403 is an authentication/network error, not a challenge;
- an XML/JSON error from the indexer is not treated as a challenge.
Limits: .torrent files are not downloaded through FlareSolverr (binary
response) and a resolution can take up to ~60 seconds. The indexer URL, including
the API key, is sent to the FlareSolverr service.
- If it exposes Torznab, create a source with the full URL and the API key (if present). The Direct Torznab type avoids any heuristic about the manager.
- If it requires HTTP Basic, fill in the dedicated fields.
- If it only speaks its own proprietary API, the source stays queued: write a native definition by observing the site. indexarr does not create a proxy to Jackett/Prowlarr, does not contact them and does not implement ad-hoc protocols.
- If the service exposes a
/statusnext to/api, the test reads it automatically when the JSON containsokorlogged_in.
To verify without waiting for the scheduler, use Test or Run on the Sources page and check Runs for the exact error returned by the indexer. Quick add recognizes the type from the URL; Discover feeds finds the feeds declared by a page; presets set type and manager without constraining the URL.
The Usenet path uses the generic newznab connector and the newznab-generic
definition. It is not a native definition for a single site: the URL and API key
are provided by the user, so the catalog does not yet contain Usenet sources
verified site by site.
| Step | Behavior |
|---|---|
| Adding | API URL (with or without /api) and API key; the protocol is usenet and is derived from the definition |
| Caps |
t=caps read and cached for an hour; the declared modes are search, tv-search, movie-search, music-search, book-search
|
| Search | Newznab parameters (q, season, ep, imdbid, tvdbid, tmdbid, rid, artist, album, author, title, cat); entries without a valid link are discarded |
| Payload |
.nzb downloaded with t=get or from the application/x-nzb enclosure; if the download budget is exhausted, a sealed reference remains, opened at grab time |
| Output | Torznab/Newznab with protocol=usenet, application/x-nzb enclosure and .nzb file name; no magnet and no infohash |
| Apps | Sonarr, Radarr, Lidarr, Readarr and Whisparr receive Newznab/NewznabSettings with protocol usenet; eD2k remains excluded |
| Download | the release is sent to the Usenet client (SABnzbd or NZBGet) configured for the usenet protocol |
Measured limits: live search uses the same fan-out as the other protocols and does not download the NZB in advance; the payload arrives at the first grab. Native definitions for individual Usenet sites are not part of the current catalog, so a source that does not expose Newznab stays queued.
Sending to clients is not part of the Torznab protocol: it is an optional action of the release detail, configured in App → Download clients.
| Client | Integration |
|---|---|
| qBittorrent | Web API v2: login, torrents/add with magnet or .torrent file, category, path, pause. |
| Transmission | RPC /transmission/rpc: torrent-add, base64 metainfo for .torrent files, filename for magnets, 409 session handled. |
| Deluge | JSON-RPC: login, core.add_torrent_magnet/core.add_torrent_file, path and pause. |
| rTorrent | XML-RPC: load.raw_start/load.start with magnet or .torrent. |
| SABnzbd / NZBGet | Usenet API: add a .nzb or a URL, category, pause. |
| aMule |
amuleapi Web API (/api/v1): password login, POST /downloads with the ed2k:// link. Protocol ed2k. |
| Aria2 | JSON-RPC /jsonrpc: aria2.addUri and aria2.addTorrent, token, dir, pause. |
| uTorrent | Web API: token from token.html, add-url and add-file. |
| Flood | REST /api: authentication, adding magnet/URL/file, tags, destination. |
| Download Station | Synology auth.cgi + task.cgi: magnet/URL and file upload, destination. |
| NZBVortex |
/api API: nonce login, add .nzb, group. |
| Hadouken | JSON-RPC /api: webui.addTorrent with file or URL, label. |
| Blackhole | Local folder: writes .torrent, .magnet or .nzb; no URL required. |
Sonarr/Radarr/Lidarr continue to manage the download on their own; this feature is for sending a release chosen manually from the UI.
indexarr
Guides
APIs
Sources
Operations
Project