diff --git a/CRM/Contact/BAO/Group.php b/CRM/Contact/BAO/Group.php
index fae22f03b84459168faa82e47e6bf04c19058f53..5fe886756d202673a50cde90d09fc04f80f41555 100644
--- a/CRM/Contact/BAO/Group.php
+++ b/CRM/Contact/BAO/Group.php
@@ -1223,6 +1223,14 @@ WHERE {$whereClause}";
       $clauses[] = '`groups`.parents IS NULL';
     }
 
+    $savedSearch = CRM_Utils_Array::value('savedSearch', $params);
+    if ($savedSearch == 1) {
+      $clauses[] = 'groups.saved_search_id IS NOT NULL';
+    }
+    elseif ($savedSearch == 2) {
+      $clauses[] = 'groups.saved_search_id IS NULL';
+    }
+
     // only show child groups of a specific parent group
     $parent_id = $params['parent_id'] ?? NULL;
     if ($parent_id) {
diff --git a/CRM/Group/Form/Search.php b/CRM/Group/Form/Search.php
index 819b061f21d61e1694ab53e4624a00804c6fd5b5..a56623fefc016011195a13864e0c2a7a53e21a91 100644
--- a/CRM/Group/Form/Search.php
+++ b/CRM/Group/Form/Search.php
@@ -40,6 +40,14 @@ class CRM_Group_Form_Search extends CRM_Core_Form {
       CRM_Core_DAO::getAttribute('CRM_Contact_DAO_Group', 'title')
     );
 
+    $optionTypes = [
+      '1' => ts('Smart Group'),
+      '2' => ts('Normal Group'),
+    ];
+    $this->add('select', 'saved_search', ts('Group Type'),
+      ['' => ts('- any -')] + $optionTypes
+    );
+
     $groupTypes = CRM_Core_OptionGroup::values('group_type', TRUE);
     $config = CRM_Core_Config::singleton();
     if ($config->userFramework == 'Joomla') {
diff --git a/CRM/Group/Page/AJAX.php b/CRM/Group/Page/AJAX.php
index b314d5cb6168562eea15a26845ad82a07fd9318e..9e6d809f37302404a9dcf591bc0ba09471bcd801 100644
--- a/CRM/Group/Page/AJAX.php
+++ b/CRM/Group/Page/AJAX.php
@@ -42,6 +42,7 @@ class CRM_Group_Page_AJAX {
         'status' => 'Integer',
         'parentsOnly' => 'Integer',
         'showOrgInfo' => 'Boolean',
+        'savedSearch' => 'Integer',
         // Ignore 'parent_id' as that case is handled above
       ];
       $params = CRM_Core_Page_AJAX::defaultSortAndPagerParams();
diff --git a/templates/CRM/Group/Form/Search.tpl b/templates/CRM/Group/Form/Search.tpl
index a2019f4d1c2c09efcb75e1148237e49d5abe7ea7..e01ece5d192bc00b9c6940a3c5b49022824856bb 100644
--- a/templates/CRM/Group/Form/Search.tpl
+++ b/templates/CRM/Group/Form/Search.tpl
@@ -55,6 +55,13 @@
               {$form.component_mode.html}
             </td>
           </tr>
+          <tr>
+            <td>
+              {$form.saved_search.label} <br/>{$form.saved_search.html}
+            </td>
+            <td colspan="2">
+            </td>
+          </tr>
         </table>
       </div>
     </div>
@@ -116,6 +123,7 @@
           d.group_type = groupTypes,
           d.visibility = $(".crm-group-search-form-block select#visibility").val(),
           d.status = groupStatus,
+          d.savedSearch = $('.crm-group-search-form-block select#saved_search').val(),
           d.component_mode = $(".crm-group-search-form-block select#component_mode").val(),
           d.showOrgInfo = {/literal}"{$showOrgInfo}"{literal},
           d.parentsOnly = parentsOnly
diff --git a/tests/phpunit/CRM/Group/Page/AjaxTest.php b/tests/phpunit/CRM/Group/Page/AjaxTest.php
index 8a88946e4d34ad55b692255fb34a32ffc5a0141d..686e16fc9f3c12fe8e26d16ec20b90a4293ba440 100644
--- a/tests/phpunit/CRM/Group/Page/AjaxTest.php
+++ b/tests/phpunit/CRM/Group/Page/AjaxTest.php
@@ -553,6 +553,8 @@ class CRM_Group_Page_AjaxTest extends CiviUnitTestCase {
     // Load the Manage Group page code and we should get a count from our
     // group because the cache is fresh.
     $_GET = $this->_params;
+    // look for Smart Group only
+    $_GET['savedSearch'] = 1;
     try {
       CRM_Group_Page_AJAX::getGroupList();
     }