diff --git a/searx/webapp.py b/searx/webapp.py
index 727259774..8290b6822 100644
--- a/searx/webapp.py
+++ b/searx/webapp.py
@@ -846,7 +846,7 @@ def clear_cookies():
 
 @app.route('/config')
 def config():
-    return jsonify({'categories': categories.keys(),
+    return jsonify({'categories': list(categories.keys()),
                     'engines': [{'name': engine_name,
                                  'categories': engine.categories,
                                  'shortcut': engine.shortcut,
@@ -854,7 +854,7 @@ def config():
                                  'paging': engine.paging,
                                  'language_support': engine.language_support,
                                  'supported_languages':
-                                 engine.supported_languages.keys()
+                                 list(engine.supported_languages.keys())
                                  if isinstance(engine.supported_languages, dict)
                                  else engine.supported_languages,
                                  'safesearch': engine.safesearch,
diff --git a/tests/unit/test_webapp.py b/tests/unit/test_webapp.py
index e6739bfe5..fae1755d6 100644
--- a/tests/unit/test_webapp.py
+++ b/tests/unit/test_webapp.py
@@ -157,3 +157,9 @@ class ViewsTestCase(SearxTestCase):
     def test_favicon(self):
         result = self.app.get('/favicon.ico')
         self.assertEqual(result.status_code, 200)
+
+    def test_config(self):
+        result = self.app.get('/config')
+        self.assertEqual(result.status_code, 200)
+        json_result = result.get_json()
+        self.assertTrue(json_result)