diff --git a/java/com/google/gerrit/plugins/checks/api/QueryPendingChecks.java b/java/com/google/gerrit/plugins/checks/api/QueryPendingChecks.java
index bc87b5e..f3f60da 100644
--- a/java/com/google/gerrit/plugins/checks/api/QueryPendingChecks.java
+++ b/java/com/google/gerrit/plugins/checks/api/QueryPendingChecks.java
@@ -57,7 +57,6 @@
   private final Checkers checkers;
   private final Checks checks;
   private final Provider<CheckerQuery> checkerQueryProvider;
-  @VisibleForTesting public static final int MAX_ALLOWED_QUERIES = 10;
   private String queryString;
 
   @Option(
@@ -124,12 +123,6 @@
                     new IllegalStateException(
                         String.format("no checker scheme predicate found: %s", finalPredicate)));
     ImmutableList<Checker> checkersOfScheme = checkers.listCheckers(scheme);
-    if (checkersOfScheme.size() > MAX_ALLOWED_QUERIES) {
-      throw new ResourceConflictException(
-          String.format(
-              "Too many checkers exist with that scheme, allowed maximum is %s. Found %s checkers",
-              MAX_ALLOWED_QUERIES, checkersOfScheme.size()));
-    }
     List<List<ChangeData>> changes =
         checkerQueryProvider.get().queryMatchingChanges(checkersOfScheme);
     List<PendingChecksInfo> pendingChecks = new ArrayList<>();
diff --git a/javatests/com/google/gerrit/plugins/checks/acceptance/api/QueryPendingChecksIT.java b/javatests/com/google/gerrit/plugins/checks/acceptance/api/QueryPendingChecksIT.java
index d284bf1..d0656ac 100644
--- a/javatests/com/google/gerrit/plugins/checks/acceptance/api/QueryPendingChecksIT.java
+++ b/javatests/com/google/gerrit/plugins/checks/acceptance/api/QueryPendingChecksIT.java
@@ -796,20 +796,6 @@
   }
 
   @Test
-  public void queryPendingChecksWithSchemeTooManyChecksThrowsError() throws Exception {
-    for (int i = 0; i < QueryPendingChecks.MAX_ALLOWED_QUERIES + 1; i++) {
-      checkerOperations
-          .newChecker()
-          .repository(project)
-          .uuid(CheckerUuid.parse(String.format("test:checker-%d", i)))
-          .create();
-    }
-    assertThrows(
-        ResourceConflictException.class,
-        () -> queryPendingChecks("test", CheckState.NOT_STARTED, CheckState.SCHEDULED));
-  }
-
-  @Test
   public void queryOnlyExactSchemas() throws Exception {
     CheckerUuid checkerUuid =
         checkerOperations
