diff --git a/app/graphql/resolvers/board_list_issues_resolver.rb b/app/graphql/resolvers/board_list_issues_resolver.rb
index 29e66a59a1564a6f16bf08642ed8ce6ca9db5a34..dac93b91469cef1cfeba7dd711e35cdc6e9b76f8 100644
--- a/app/graphql/resolvers/board_list_issues_resolver.rb
+++ b/app/graphql/resolvers/board_list_issues_resolver.rb
@@ -2,7 +2,7 @@
 
 module Resolvers
   class BoardListIssuesResolver < BaseResolver
-    include BoardIssueFilterable
+    include BoardItemFilterable
 
     argument :filters, Types::Boards::BoardIssueInputType,
              required: false,
@@ -13,7 +13,7 @@ class BoardListIssuesResolver < BaseResolver
     alias_method :list, :object
 
     def resolve(**args)
-      filter_params = issue_filters(args[:filters]).merge(board_id: list.board.id, id: list.id)
+      filter_params = item_filters(args[:filters]).merge(board_id: list.board.id, id: list.id)
       service = ::Boards::Issues::ListService.new(list.board.resource_parent, context[:current_user], filter_params)
 
       offset_pagination(service.execute)
diff --git a/app/graphql/resolvers/board_lists_resolver.rb b/app/graphql/resolvers/board_lists_resolver.rb
index 0b69900662661cfb73c86e2809a9443eeee59497..4dae3b4a9d1737ab7cdf4e0f10f82563a59ce3f4 100644
--- a/app/graphql/resolvers/board_lists_resolver.rb
+++ b/app/graphql/resolvers/board_lists_resolver.rb
@@ -2,7 +2,7 @@
 
 module Resolvers
   class BoardListsResolver < BaseResolver
-    include BoardIssueFilterable
+    include BoardItemFilterable
     include Gitlab::Graphql::Authorize::AuthorizeResource
     include LooksAhead
 
@@ -22,7 +22,7 @@ class BoardListsResolver < BaseResolver
 
     def resolve_with_lookahead(id: nil, issue_filters: {})
       lists = board_lists(id)
-      context.scoped_set!(:issue_filters, issue_filters(issue_filters))
+      context.scoped_set!(:issue_filters, item_filters(issue_filters))
 
       List.preload_preferences_for_user(lists, current_user) if load_preferences?
 
diff --git a/app/graphql/resolvers/concerns/board_issue_filterable.rb b/app/graphql/resolvers/concerns/board_item_filterable.rb
similarity index 83%
rename from app/graphql/resolvers/concerns/board_issue_filterable.rb
rename to app/graphql/resolvers/concerns/board_item_filterable.rb
index 88de69a3844dc3204313f46e944b69278ad8a68b..1457a02e44f53deb999917005daa6f96184c057e 100644
--- a/app/graphql/resolvers/concerns/board_issue_filterable.rb
+++ b/app/graphql/resolvers/concerns/board_item_filterable.rb
@@ -1,11 +1,11 @@
 # frozen_string_literal: true
 
-module BoardIssueFilterable
+module BoardItemFilterable
   extend ActiveSupport::Concern
 
   private
 
-  def issue_filters(args)
+  def item_filters(args)
     filters = args.to_h
 
     set_filter_values(filters)
@@ -32,4 +32,4 @@ def filter_by_assignee(filters)
   end
 end
 
-::BoardIssueFilterable.prepend_mod_with('Resolvers::BoardIssueFilterable')
+::BoardItemFilterable.prepend_mod_with('Resolvers::BoardItemFilterable')
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index 6fab96fe9ba4eb0c881ce0cc54779bc907d68526..724446912aa2885364a5ebc90e5a5f7b0a3dbfa8 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -8570,6 +8570,7 @@ four standard [pagination arguments](#connection-pagination-arguments):
 
 | Name | Type | Description |
 | ---- | ---- | ----------- |
+| <a id="epicboardlistsepicfilters"></a>`epicFilters` | [`EpicFilters`](#epicfilters) | Filters applied when getting epic metadata in the epic board list. |
 | <a id="epicboardlistsid"></a>`id` | [`BoardsEpicListID`](#boardsepiclistid) | Find an epic board list by ID. |
 
 ### `EpicDescendantCount`
diff --git a/ee/app/graphql/ee/resolvers/board_issue_filterable.rb b/ee/app/graphql/ee/resolvers/board_item_filterable.rb
similarity index 97%
rename from ee/app/graphql/ee/resolvers/board_issue_filterable.rb
rename to ee/app/graphql/ee/resolvers/board_item_filterable.rb
index eefb6edf55cb70f69e8c216b6ae9113227a2c226..81fc01c5a1b3de1ba5c241259289b41df3b96b4b 100644
--- a/ee/app/graphql/ee/resolvers/board_issue_filterable.rb
+++ b/ee/app/graphql/ee/resolvers/board_item_filterable.rb
@@ -2,7 +2,7 @@
 
 module EE
   module Resolvers
-    module BoardIssueFilterable
+    module BoardItemFilterable
       extend ActiveSupport::Concern
       extend ::Gitlab::Utils::Override
 
diff --git a/ee/app/graphql/resolvers/board_groupings/epics_resolver.rb b/ee/app/graphql/resolvers/board_groupings/epics_resolver.rb
index fe8a23d2418b37b8abe1dc658b7986121434552a..60509c26b349c15fcff80ecdfe06aa52a927e06e 100644
--- a/ee/app/graphql/resolvers/board_groupings/epics_resolver.rb
+++ b/ee/app/graphql/resolvers/board_groupings/epics_resolver.rb
@@ -3,7 +3,7 @@
 module Resolvers
   module BoardGroupings
     class EpicsResolver < BaseResolver
-      include ::BoardIssueFilterable
+      include ::BoardItemFilterable
 
       alias_method :board, :object
 
@@ -25,7 +25,7 @@ def resolve(**args)
       private
 
       def board_epic_ids(issue_params)
-        params = issue_filters(issue_params).merge(all_lists: true, board_id: board.id)
+        params = item_filters(issue_params).merge(all_lists: true, board_id: board.id)
 
         list_service = ::Boards::Issues::ListService.new(
           board.resource_parent,
diff --git a/ee/app/graphql/resolvers/boards/epic_lists_resolver.rb b/ee/app/graphql/resolvers/boards/epic_lists_resolver.rb
index e8f3d68f7adcf66f6ac92c4ca3b2d21c3816ce1f..e270dab82ec9abc80c94bbfc78754e4547d1836d 100644
--- a/ee/app/graphql/resolvers/boards/epic_lists_resolver.rb
+++ b/ee/app/graphql/resolvers/boards/epic_lists_resolver.rb
@@ -5,6 +5,7 @@ module Boards
     class EpicListsResolver < BaseResolver
       include Gitlab::Graphql::Authorize::AuthorizeResource
       include LooksAhead
+      include ::BoardItemFilterable
 
       type Types::Boards::EpicListType.connection_type, null: true
 
@@ -12,12 +13,17 @@ class EpicListsResolver < BaseResolver
                required: false,
                description: 'Find an epic board list by ID.'
 
+      argument :epic_filters, Types::Boards::BoardEpicInputType,
+               required: false,
+               description: 'Filters applied when getting epic metadata in the epic board list.'
+
       alias_method :epic_board, :object
 
-      def resolve_with_lookahead(id: nil)
+      def resolve_with_lookahead(id: nil, epic_filters: {})
         authorize!
 
         lists = board_lists(id)
+        context.scoped_set!(:epic_filters, item_filters(epic_filters))
 
         if load_preferences?(lookahead)
           ::Boards::EpicList.preload_preferences_for_user(lists, current_user)
diff --git a/ee/app/graphql/types/boards/epic_list_type.rb b/ee/app/graphql/types/boards/epic_list_type.rb
index d9c21415af45b2c604c44d92159da6894d259f81..1909c8e52d9558b68cd8583d590b6213a6ea9a82 100644
--- a/ee/app/graphql/types/boards/epic_list_type.rb
+++ b/ee/app/graphql/types/boards/epic_list_type.rb
@@ -48,8 +48,10 @@ def epics_count
 
       def metadata
         strong_memoize(:metadata) do
+          params = (context[:epic_filters] || {}).merge(board_id: list.epic_board_id, id: list.id)
+
           ::Boards::Epics::ListService
-              .new(list.epic_board.resource_parent, current_user, { board_id: list.epic_board_id, id: list.id })
+              .new(list.epic_board.resource_parent, current_user, params)
               .metadata
         end
       end
diff --git a/ee/spec/requests/api/graphql/boards/epic_lists_query_spec.rb b/ee/spec/requests/api/graphql/boards/epic_lists_query_spec.rb
index 47e6ccdde8b4ff5aac2e4e82e524d8696a6300fd..1ba8a875cfb3bdb6bb1b2fd1aa5dcd61195ed86a 100644
--- a/ee/spec/requests/api/graphql/boards/epic_lists_query_spec.rb
+++ b/ee/spec/requests/api/graphql/boards/epic_lists_query_spec.rb
@@ -80,11 +80,17 @@ def pagination_results_data(nodes)
       end
 
       it 'returns the correct values for count' do
-        create_list(:epic, 2, group: group) # epics in backlog, the list which is returned first
+        label = create(:group_label, group: group)
+        # Epics in backlog, the list which is returned first. The first epic
+        # should be ignored because it doesn't have the label by which we are
+        # filtering.
+        create(:labeled_epic, group: group)
+        create(:labeled_epic, group: group, labels: [label])
 
-        post_graphql(pagination_query, current_user: current_user)
+        params = { epicFilters: { labelName: label.title } }
+        post_graphql(pagination_query(params), current_user: current_user)
 
-        assert_field_value('epicsCount', [2, 0, 0])
+        assert_field_value('epicsCount', [1, 0, 0])
       end
     end
   end