diff --git a/src/Jackett/Indexers/Demonoid.cs b/src/Jackett/Indexers/Demonoid.cs
index 53400d26fdaaa59f13d7935f301a108d7daf8b6e..ead219231948a1bee210bd602d822a3080641c07 100644
--- a/src/Jackett/Indexers/Demonoid.cs
+++ b/src/Jackett/Indexers/Demonoid.cs
@@ -19,7 +19,7 @@ namespace Jackett.Indexers
     public class Demonoid : BaseIndexer, IIndexer
     {
         private string LoginUrl { get { return SiteLink + "account_handler.php"; } }
-        private string SearchUrl { get { return SiteLink + "files/?category=3&subcategory=All&quality=All&seeded=0&to=1&query={0}"; } }
+        private string SearchUrl { get { return SiteLink + "files/?category={0}&subcategory=All&quality=All&seeded=0&to=1&query={1}"; } }
 
         new ConfigurationDataBasicLogin configData
         {
@@ -38,6 +38,10 @@ namespace Jackett.Indexers
                 p: ps,
                 configData: new ConfigurationDataBasicLogin())
         {
+            AddCategoryMapping(3, TorznabCatType.TV);
+            AddCategoryMapping(3, TorznabCatType.TVSD);
+            AddCategoryMapping(3, TorznabCatType.TVHD);
+            AddCategoryMapping(1, TorznabCatType.Movies);
         }
 
         public async Task<IndexerConfigurationStatus> ApplyConfiguration(JToken configJson)
@@ -64,9 +68,12 @@ namespace Jackett.Indexers
         public async Task<IEnumerable<ReleaseInfo>> PerformQuery(TorznabQuery query)
         {
             var releases = new List<ReleaseInfo>();
-            var episodeSearchUrl = string.Format(SearchUrl, HttpUtility.UrlEncode(query.GetQueryString()));
+            var trackerCats = MapTorznabCapsToTrackers(query);
+            var cat = (trackerCats.Count == 1 ? trackerCats.ElementAt(0) : "0");
+            var episodeSearchUrl = string.Format(SearchUrl, cat, HttpUtility.UrlEncode(query.GetQueryString()));
             var results = await RequestStringWithCookiesAndRetry(episodeSearchUrl);
 
+            
             if (results.Content.Contains("No torrents found"))
             {
                 return releases;