# Providers 24 providers. The **id** column is what you pass to `?providers=`, and an unknown id is rejected with a 400 that lists the known ones. A host can switch any of them off with `SCRAPER_DISABLED_PROVIDERS`, which is reported separately from an unknown id. | id | name | movie | series | anime | mirrors | module | | --- | --- | :-: | :-: | :-: | :-: | --- | | `1337x` | 1337x | yes | yes | yes | 4 | `leetx.js` | | `animesaturn` | AnimeSaturn | - | yes | yes | - | `animesaturn.js` | | `animetosho` | AnimeTosho | - | yes | yes | - | `animetosho.js` | | `bitsearch` | Bitsearch | yes | yes | yes | - | `bitsearch.js` | | `bt4g` | BT4G | yes | yes | yes | - | `bt4g.js` | | `btdig` | BTDig | yes | yes | yes | - | `btdig.js` | | `eztv` | EZTV | - | yes | - | 5 | `eztv.js` | | `glotorrents` | GloTorrents | yes | yes | yes | 2 | `glotorrents.js` | | `kickasstorrents` | KickassTorrents | yes | yes | yes | 3 | `kickasstorrents.js` | | `knaben` | Knaben | yes | yes | yes | - | `knaben.js` | | `limetorrents` | LimeTorrents | yes | yes | yes | 3 | `limetorrents.js` | | `nekobt` | nekoBT | - | yes | yes | - | `nekobt.js` | | `nyaa` | Nyaa | - | yes | yes | - | `nyaa.js` | | `rutor` | Rutor | yes | yes | yes | 2 | `rutor.js` | | `rutracker` | Rutracker | yes | yes | yes | - | `rutracker.js` | | `subsplease` | SubsPlease | - | yes | yes | - | `subsplease.js` | | `thepiratebay` | ThePirateBay | yes | yes | yes | - | `thepiratebay.js` | | `therarbg` | TheRarBG | yes | yes | - | - | `therarbg.js` | | `tokyotosho` | Tokyo Toshokan | - | yes | yes | - | `tokyotosho.js` | | `torlock` | TorLock | yes | yes | yes | 2 | `torlock.js` | | `torrentdownloads` | TorrentDownloads | yes | yes | yes | - | `torrentdownloads.js` | | `torrentgalaxy` | TorrentGalaxy | yes | yes | yes | 2 | `torrentgalaxy.js` | | `torznab` | Torznab | yes | yes | yes | - | `torznab.js` | | `yts` | YTS | yes | - | - | 4 | `yts.js` | **mirrors** is how many domains the provider rotates through when one is blocked or down. A dash means it has a single fixed host. ## Ids that do not match their filename The id is the site's name, the module is named for its implementation, and these two disagree. Pass the **id**, never the filename: - `leetx.js` registers as **`1337x`**, not `leetx`. ## Adding one Copy `scraper/providers/_template.js`, then register the module in `scraper/providers/index.js` and add the id to `TorrentProvider` in `addon/lib/types.js` plus a `PublicProviderAliases` entry in `addon/lib/configuration.js`, or it will not be selectable. Declare `types` to match what `scrape()` actually serves. `scraper/test/provider-contract.test.js` checks all of that. Regenerate this file with `npm run doc:providers`.