diff --git a/synapse/storage/search.py b/synapse/storage/search.py
index 57c9cc1c5f0db8abb915b573aa9e6cf4319b745f..6cb5e73b6e6f1fd3728c0b755f00ac4bf6af33e2 100644
--- a/synapse/storage/search.py
+++ b/synapse/storage/search.py
@@ -286,8 +286,10 @@ class SearchStore(BackgroundUpdateStore):
             "(%s)" % (" OR ".join(local_clauses),)
         )
 
-        count_args = args
-        count_clauses = clauses
+        # take copies of the current args and clauses lists, before adding
+        # pagination clauses to main query.
+        count_args = list(args)
+        count_clauses = list(clauses)
 
         if pagination_token:
             try: