diff --git a/changelogs/unreleased/cr-add-count-limit-to-snippet-search.yml b/changelogs/unreleased/cr-add-count-limit-to-snippet-search.yml
new file mode 100644
index 0000000000000000000000000000000000000000..8ae43659d8d09e25aa58b459dd229a28c8ac04b1
--- /dev/null
+++ b/changelogs/unreleased/cr-add-count-limit-to-snippet-search.yml
@@ -0,0 +1,5 @@
+---
+title: Adds a count limit to the number of snippet search results.
+merge_request: 20531
+author:
+type: fixed
diff --git a/lib/gitlab/snippet_search_results.rb b/lib/gitlab/snippet_search_results.rb
index 4f86b3e8f73b5ef63261c118fb28f0093d9cf3a1..45562237157289af56fc7b7a0ab9444c87868dae 100644
--- a/lib/gitlab/snippet_search_results.rb
+++ b/lib/gitlab/snippet_search_results.rb
@@ -9,23 +9,28 @@ module Gitlab
       @query = query
     end
 
-    def objects(scope, page = nil)
-      case scope
-      when 'snippet_titles'
-        snippet_titles.page(page).per(per_page)
-      when 'snippet_blobs'
-        snippet_blobs.page(page).per(per_page)
-      else
-        super(scope, nil, false)
-      end
+    def objects(scope, page = nil, without_count = true)
+      collection = case scope
+                   when 'snippet_titles'
+                     snippet_titles.page(page).per(per_page)
+                   when 'snippet_blobs'
+                     snippet_blobs.page(page).per(per_page)
+                   else
+                     super(scope, nil, false)
+                   end
+      without_count ? collection.without_count : collection
     end
 
     def snippet_titles_count
-      @snippet_titles_count ||= snippet_titles.count
+      @snippet_titles_count ||= snippet_titles.limit(count_limit).count
     end
 
     def snippet_blobs_count
-      @snippet_blobs_count ||= snippet_blobs.count
+      @snippet_blobs_count ||= snippet_blobs.limit(count_limit).count
+    end
+
+    def count_limit
+      1001
     end
 
     private