diff --git a/app/finders/namespaces/projects_finder.rb b/app/finders/namespaces/projects_finder.rb
index 0194ee4080170c4e6793bcb6778804ba1c413eb3..6547d41dcddddaec45f8628853c10954a5be60e8 100644
--- a/app/finders/namespaces/projects_finder.rb
+++ b/app/finders/namespaces/projects_finder.rb
@@ -11,6 +11,7 @@
 #     sort: string
 #     search: string
 #     include_subgroups: boolean
+#     include_archived: boolean
 #     ids: int[]
 #     with_issues_enabled: boolean
 #     with_merge_requests_enabled: boolean
@@ -45,6 +46,7 @@ def execute
 
     def filter_projects(collection)
       collection = by_ids(collection)
+      collection = by_archived(collection)
       collection = by_similarity(collection)
       by_feature_availability(collection)
     end
@@ -55,6 +57,12 @@ def by_ids(items)
       items.id_in(params[:ids])
     end
 
+    def by_archived(items)
+      return items if Gitlab::Utils.to_boolean(params[:include_archived], default: true)
+
+      items.non_archived
+    end
+
     def by_similarity(items)
       return items unless params[:search].present?
 
diff --git a/spec/finders/namespaces/projects_finder_spec.rb b/spec/finders/namespaces/projects_finder_spec.rb
index 9291572d8d13584750dd0eb1761c70e1464617bf..10d8145d15ac2be3b31c1f90bf9d530479f7c5f8 100644
--- a/spec/finders/namespaces/projects_finder_spec.rb
+++ b/spec/finders/namespaces/projects_finder_spec.rb
@@ -2,7 +2,7 @@
 
 require 'spec_helper'
 
-RSpec.describe Namespaces::ProjectsFinder do
+RSpec.describe Namespaces::ProjectsFinder, feature_category: :groups_and_projects do
   let_it_be(:current_user) { create(:user) }
   let_it_be(:namespace) { create(:group, :public) }
   let_it_be(:subgroup) { create(:group, parent: namespace) }
@@ -12,6 +12,7 @@
   let_it_be(:project_4) { create(:project, :public, :merge_requests_disabled, path: 'test-project-2', group: namespace, name: 'Test Project 2') }
   let_it_be(:project_5) { create(:project, group: subgroup, marked_for_deletion_at: 1.day.ago, pending_delete: true) }
   let_it_be(:project_6) { create(:project, group: namespace, marked_for_deletion_at: 1.day.ago, pending_delete: true) }
+  let_it_be(:project_7) { create(:project, :archived, group: namespace) }
 
   let(:params) { {} }
 
@@ -30,14 +31,14 @@
 
     context 'with a namespace' do
       it 'returns the project for the namespace' do
-        expect(projects).to contain_exactly(project_1, project_2, project_4, project_6)
+        expect(projects).to contain_exactly(project_1, project_2, project_4, project_6, project_7)
       end
 
       context 'when not_aimed_for_deletion is provided' do
         let(:params) { { not_aimed_for_deletion: true } }
 
         it 'returns all projects not aimed for deletion for the namespace' do
-          expect(projects).to contain_exactly(project_1, project_2, project_4)
+          expect(projects).to contain_exactly(project_1, project_2, project_4, project_7)
         end
       end
 
@@ -45,7 +46,7 @@
         let(:params) { { include_subgroups: true } }
 
         it 'returns all projects for the namespace' do
-          expect(projects).to contain_exactly(project_1, project_2, project_3, project_4, project_5, project_6)
+          expect(projects).to contain_exactly(project_1, project_2, project_3, project_4, project_5, project_6, project_7)
         end
 
         context 'when ids are provided' do
@@ -60,7 +61,33 @@
           let(:params) { { not_aimed_for_deletion: true, include_subgroups: true } }
 
           it 'returns all projects not aimed for deletion for the namespace' do
-            expect(projects).to contain_exactly(project_1, project_2, project_3, project_4)
+            expect(projects).to contain_exactly(project_1, project_2, project_3, project_4, project_7)
+          end
+        end
+      end
+
+      context 'for include_archived parameter' do
+        context 'when include_archived is not provided' do
+          let(:params) { {} }
+
+          it 'returns archived and non-archived projects' do
+            expect(projects).to contain_exactly(project_1, project_2, project_4, project_6, project_7)
+          end
+        end
+
+        context 'when include_archived is true' do
+          let(:params) { { include_archived: true } }
+
+          it 'returns archived and non-archived projects' do
+            expect(projects).to contain_exactly(project_1, project_2, project_4, project_6, project_7)
+          end
+        end
+
+        context 'when include_archived is false' do
+          let(:params) { { include_archived: false } }
+
+          it 'returns ONLY non-archived projects' do
+            expect(projects).to contain_exactly(project_1, project_2, project_4, project_6)
           end
         end
       end
@@ -77,7 +104,7 @@
         let(:params) { { with_issues_enabled: true, include_subgroups: true } }
 
         it 'returns the projects that have issues enabled' do
-          expect(projects).to contain_exactly(project_1, project_2, project_4, project_5, project_6)
+          expect(projects).to contain_exactly(project_1, project_2, project_4, project_5, project_6, project_7)
         end
       end
 
@@ -85,7 +112,7 @@
         let(:params) { { with_merge_requests_enabled: true } }
 
         it 'returns the projects that have merge requests enabled' do
-          expect(projects).to contain_exactly(project_1, project_2, project_6)
+          expect(projects).to contain_exactly(project_1, project_2, project_6, project_7)
         end
       end
 
@@ -101,7 +128,7 @@
         let(:params) { { sort: :similarity } }
 
         it 'returns all projects' do
-          expect(projects).to contain_exactly(project_1, project_2, project_4, project_6)
+          expect(projects).to contain_exactly(project_1, project_2, project_4, project_6, project_7)
         end
       end
 
@@ -124,7 +151,7 @@
         end
 
         it 'returns projects sorted by latest activity' do
-          expect(projects).to eq([project_4, project_1, project_2, project_6])
+          expect(projects).to eq([project_4, project_1, project_2, project_6, project_7])
         end
       end
     end