Summary
On v1.14.0 (and on master as of 2026-09-11), tvsubtitles and subsource send their search requests to URLs that return 404, and subf2m sends a POST that its search page answers with 405. Each of the three has returned 0 results in more than 300 searches on my install. Bazarr's implementations of the same three providers send a different request at exactly the step that fails.
What actually happened?
Provider stats from GET /api/v1/providers:
tvsubtitles 342 searches, 0 results, 0 downloads
subf2m 332 searches, 0 results, 0 downloads
subsource 366 searches, 0 results, 0 downloads
I probed the search requests from inside the Sublarr container, so same egress and same resolver:
- tvsubtitles:
providers/tvsubtitles.py:141-142 POSTs to https://www.tvsubtitles.net/search.php, which returns 404 Not Found. The site itself is up; / returns 200.
- subf2m:
providers/subf2m.py:120 POSTs to https://subf2m.co/subtitles/searchbytitle, which returns 405 Method Not Allowed. A GET to the same URL with ?query=doctor+who&l= returns 200 with results.
- subsource:
providers/subsource.py:27 sets _API_BASE = "https://subsource.net/api", and both the GET and the POST to {_API_BASE}/search return 404. https://api.subsource.net/ does answer, and a GET to https://api.subsource.net/api/v1/movies/search?searchType=text&q=doctor+who without a key returns 401 with an API key required error.
The bundled tvsubtitles_subliminal adapter fails on the same URL from a different angle: the last 24 hours of my log hold 98 of 403 Client Error: Forbidden for url: https://www.tvsubtitles.net/search.php.
What made this easy to miss is that all three report as no_results ("342 searches, no results, no downloads"), which reads like a provider that has nothing for my library rather than one whose search request is failing.
What should have happened?
Each provider should reach the site's current search endpoint. For reference, this is what Bazarr's subliminal_patch providers send instead. I reproduced the tvsubtitles and subf2m request shapes from inside the Sublarr container; for subsource I could only test an unkeyed request.
- tvsubtitles:
POST {server_url}search1.php with form data {"qs": series}. From here that returns 200 and the tvsubtitles search page.
- subf2m:
GET {_BASE_URL}/subtitles/searchbytitle?query={query}&l=. From here that returns 200 with results.
- subsource: Bazarr sets
server_hostname = 'api.subsource.net', uses the base https://api.subsource.net/api/v1/, calls GET movies/search with searchType of imdb or text, and passes the key as an api_key parameter. My unkeyed request to that endpoint returned 401, and I did not test a keyed one. Bazarr wrote 18 subsource subtitles on my install in the last 10 days through this provider, so it looks like Sublarr needs the new URL plus a way to supply the API key, not just a URL change.
A smaller suggestion, in the spirit of the #201 work on naming why a provider is unhealthy: a 404 or 405 from a provider's own search endpoint could count as a failure rather than as "no results", so a search request that no longer works shows up as broken instead of as empty.
Steps to reproduce
From the Docker host, outside the container:
curl -s -o /dev/null -w '%{http_code}' -X POST https://www.tvsubtitles.net/search.php -d 'qs=doctor who' returns 404
curl -s -o /dev/null -w '%{http_code}' -X POST https://subf2m.co/subtitles/searchbytitle -d 'query=doctor who' returns 405
curl -s -o /dev/null -w '%{http_code}' https://subsource.net/api/search returns 404
Sublarr version
v1.14.0
Deployment
docker compose (with Postgres / Redis)
Database
SQLite (default)
Logs / Support Export
GET /api/v1/providers (excerpt):
tvsubtitles status_reason=no_results 342 searches, no results, no downloads
subf2m status_reason=no_results 332 searches, no results, no downloads
subsource status_reason=no_results 366 searches, no results, no downloads
tvsubtitles_subliminal status_reason=no_results 381 searches, no results, no downloads
Probes from inside the container, 2026-09-11:
POST https://www.tvsubtitles.net/search.php q=doctor who 404
POST https://www.tvsubtitles.net/search1.php qs=doctor who 200
POST https://subf2m.co/subtitles/searchbytitle query=doctor who&l= 405
GET https://subf2m.co/subtitles/searchbytitle?query=doctor+who&l= 200
GET https://subsource.net/api/search 404
GET https://api.subsource.net/api/v1/movies/search?searchType=text&q=doctor+who (no key) 401 API key required
Adapter log, last 24 h:
providers.subliminal_adapter: Subliminal provider tvsubtitles_subliminal failed search: 403 Client Error: Forbidden for url: https://www.tvsubtitles.net/search.php (98x)
Additional context
I have turned tvsubtitles, tvsubtitles_subliminal and subf2m off on my install for now, and left subsource on so I can confirm a fix against it. Happy to test a fix against a live library.
Summary
On v1.14.0 (and on master as of 2026-09-11), tvsubtitles and subsource send their search requests to URLs that return 404, and subf2m sends a POST that its search page answers with 405. Each of the three has returned 0 results in more than 300 searches on my install. Bazarr's implementations of the same three providers send a different request at exactly the step that fails.
What actually happened?
Provider stats from
GET /api/v1/providers:I probed the search requests from inside the Sublarr container, so same egress and same resolver:
providers/tvsubtitles.py:141-142POSTs tohttps://www.tvsubtitles.net/search.php, which returns 404 Not Found. The site itself is up;/returns 200.providers/subf2m.py:120POSTs tohttps://subf2m.co/subtitles/searchbytitle, which returns 405 Method Not Allowed. A GET to the same URL with?query=doctor+who&l=returns 200 with results.providers/subsource.py:27sets_API_BASE = "https://subsource.net/api", and both the GET and the POST to{_API_BASE}/searchreturn 404.https://api.subsource.net/does answer, and a GET tohttps://api.subsource.net/api/v1/movies/search?searchType=text&q=doctor+whowithout a key returns 401 with anAPI key requirederror.The bundled
tvsubtitles_subliminaladapter fails on the same URL from a different angle: the last 24 hours of my log hold 98 of403 Client Error: Forbidden for url: https://www.tvsubtitles.net/search.php.What made this easy to miss is that all three report as
no_results("342 searches, no results, no downloads"), which reads like a provider that has nothing for my library rather than one whose search request is failing.What should have happened?
Each provider should reach the site's current search endpoint. For reference, this is what Bazarr's
subliminal_patchproviders send instead. I reproduced the tvsubtitles and subf2m request shapes from inside the Sublarr container; for subsource I could only test an unkeyed request.POST {server_url}search1.phpwith form data{"qs": series}. From here that returns 200 and the tvsubtitles search page.GET {_BASE_URL}/subtitles/searchbytitle?query={query}&l=. From here that returns 200 with results.server_hostname = 'api.subsource.net', uses the basehttps://api.subsource.net/api/v1/, callsGET movies/searchwithsearchTypeofimdbortext, and passes the key as anapi_keyparameter. My unkeyed request to that endpoint returned 401, and I did not test a keyed one. Bazarr wrote 18 subsource subtitles on my install in the last 10 days through this provider, so it looks like Sublarr needs the new URL plus a way to supply the API key, not just a URL change.A smaller suggestion, in the spirit of the #201 work on naming why a provider is unhealthy: a 404 or 405 from a provider's own search endpoint could count as a failure rather than as "no results", so a search request that no longer works shows up as broken instead of as empty.
Steps to reproduce
From the Docker host, outside the container:
curl -s -o /dev/null -w '%{http_code}' -X POST https://www.tvsubtitles.net/search.php -d 'qs=doctor who'returns 404curl -s -o /dev/null -w '%{http_code}' -X POST https://subf2m.co/subtitles/searchbytitle -d 'query=doctor who'returns 405curl -s -o /dev/null -w '%{http_code}' https://subsource.net/api/searchreturns 404Sublarr version
v1.14.0
Deployment
docker compose (with Postgres / Redis)
Database
SQLite (default)
Logs / Support Export
Additional context
I have turned tvsubtitles, tvsubtitles_subliminal and subf2m off on my install for now, and left subsource on so I can confirm a fix against it. Happy to test a fix against a live library.