diff --git a/app/graphql/resolvers/merge_requests_resolver.rb b/app/graphql/resolvers/merge_requests_resolver.rb
index ebbb68611b3d0b609fc996b495208c69e214ce86..4823e69803c8dca4ba6565cc4970ec73b37edead 100644
--- a/app/graphql/resolvers/merge_requests_resolver.rb
+++ b/app/graphql/resolvers/merge_requests_resolver.rb
@@ -183,6 +183,13 @@ def self.accept_reviewer
                 Array of source branch names.
                 No resolved merge requests will have one of these branches as their source.
         DESC
+      argument :target_branches, [GraphQL::Types::String],
+        required: false,
+        as: :target_branch,
+        description: <<~DESC
+                Array of target branch names.
+                No resolved merge requests will have one of these branches as their target.
+        DESC
     end
 
     validates mutually_exclusive: [:assignee_username, :assignee_wildcard_id]
diff --git a/doc/api/graphql/reference/index.md b/doc/api/graphql/reference/index.md
index c78bf07dd025ba55f52659e1448ca7399d576022..8d83cd4b0dec0ce36f8f384035804cd11a0c9b80 100644
--- a/doc/api/graphql/reference/index.md
+++ b/doc/api/graphql/reference/index.md
@@ -43020,6 +43020,7 @@ Defines which user roles, users, or groups can merge into a protected branch.
 | <a id="mergerequestsresolvernegatedparamsreleasetag"></a>`releaseTag` | [`String`](#string) | Filter by release tag to exclude. |
 | <a id="mergerequestsresolvernegatedparamsreviewerusername"></a>`reviewerUsername` | [`String`](#string) | Username of the reviewer to exclude. |
 | <a id="mergerequestsresolvernegatedparamssourcebranches"></a>`sourceBranches` | [`[String!]`](#string) | Array of source branch names. No resolved merge requests will have one of these branches as their source. |
+| <a id="mergerequestsresolvernegatedparamstargetbranches"></a>`targetBranches` | [`[String!]`](#string) | Array of target branch names. No resolved merge requests will have one of these branches as their target. |
 
 ### `MonthSelectionInput`
 
diff --git a/spec/graphql/resolvers/merge_requests_resolver_spec.rb b/spec/graphql/resolvers/merge_requests_resolver_spec.rb
index 15f3ca47becd579d307825e3c38cb7b3ea5cf719..826b6b308141c1aeb7ef2bdc5466b178d778cc70 100644
--- a/spec/graphql/resolvers/merge_requests_resolver_spec.rb
+++ b/spec/graphql/resolvers/merge_requests_resolver_spec.rb
@@ -175,6 +175,17 @@
       end
     end
 
+    context 'with negated target branches argument' do
+      it 'excludes merge requests with given target branches from selection' do
+        mrs = [merge_request_3, merge_request_4]
+        branches = mrs.map(&:target_branch)
+        result = resolve_mr(project, not: { target_branches: branches })
+
+        expect(result).not_to include(merge_request_3, merge_request_4)
+        expect(result).to include(merge_request_1, merge_request_2, merge_request_5, merge_request_6)
+      end
+    end
+
     context 'with state argument' do
       it 'takes one argument' do
         result = resolve_mr(project, state: 'locked')