diff --git a/sickbeard/providers/hd4free.py b/sickbeard/providers/hd4free.py
index 48a8bdbd8e759f9759d215db0406e95c2983d0eb..f6b6e715e045fbf8a641c24b1dfcdcffc981a1d7 100644
--- a/sickbeard/providers/hd4free.py
+++ b/sickbeard/providers/hd4free.py
@@ -16,7 +16,6 @@
 #
 # You should have received a copy of the GNU General Public License
 # along with SickRage.  If not, see <http://www.gnu.org/licenses/>.
-import re
 
 from urllib import urlencode
 from sickbeard import logger
@@ -24,7 +23,7 @@ from sickbeard import tvcache
 from sickrage.providers.TorrentProvider import TorrentProvider
 
 
-class HD4FREEProvider(TorrentProvider):
+class HD4FREEProvider(TorrentProvider):  # pylint: disable=too-many-instance-attributes
 
     def __init__(self):
         TorrentProvider.__init__(self, "HD4Free")
@@ -37,40 +36,50 @@ class HD4FREEProvider(TorrentProvider):
         self.username = None
         self.api_key = None
         self.freeleech = None
-		
 
-			
     def _check_auth(self):
         if self.username and self.api_key:
             return True
 
-        raise AuthException('Your authentication credentials for ' + self.name + ' are missing, check your config.')
+        logger.log('Your authentication credentials for %s are missing, check your config.' % self.name)
+        return False
 
-    def search(self, search_strings, age=0, ep_obj=None):
+    def search(self, search_strings, age=0, ep_obj=None):  # pylint: disable=too-many-locals
 
         results = []
         items = {'Season': [], 'Episode': [], 'RSS': []}
+
         search_params = {
             'tv': 'true',
             'username': self.username,
-            'apikey': self.api_key}
+            'apikey': self.api_key
+        }
+
         for mode in search_strings.keys():  # Mode = RSS, Season, Episode
             logger.log(u"Search Mode: %s" % mode, logger.DEBUG)
             for search_string in search_strings[mode]:
                 if mode != 'RSS':
                     search_params['search'] = search_string.encode('utf-8')
-                self.search_params['fl'] = 'true' if self.freeleech else 'false'
+
+                search_params['fl'] = 'true' if self.freeleech else 'false'
+
                 if mode != 'RSS':
                     logger.log(u"Search string: " + search_string.strip(), logger.DEBUG)
 
                 searchURL = self.url + "/searchapi.php?" + urlencode(search_params)
-                logger.log(u"Search URL: %s" %  searchURL, logger.DEBUG)
+                logger.log(u"Search URL: %s" % searchURL, logger.DEBUG)
                 jdata = self.get_url(searchURL, json=True)
                 if not jdata:
                     logger.log(u"No data returned from provider", logger.DEBUG)
-                    return []
-					
-                results = []
+                    continue
+
+                try:
+                    if jdata['0']['total_results'] == 0:
+                        logger.log(u"Provider has no results for this search", logger.DEBUG)
+                        continue
+                except (ValueError, KeyError):
+                    pass
+
                 for i in jdata:
                     seeders = jdata[i]["seeders"]
                     leechers = jdata[i]["leechers"]