diff --git a/changelog.d/7367.bugfix b/changelog.d/7367.bugfix
new file mode 100644
index 0000000000000000000000000000000000000000..12171d4e1cb6b056af45f42f95041a7ef394a6bc
--- /dev/null
+++ b/changelog.d/7367.bugfix
@@ -0,0 +1 @@
+Prevent non-federating rooms from appearing in responses to federated `POST /publicRoom` requests when a filter was included.
diff --git a/synapse/handlers/room_list.py b/synapse/handlers/room_list.py
index 59c9906b3174655ed660726adeed13aec7e41f13..e75dabcd77103b3ebc829c1999d62f2d81413d8a 100644
--- a/synapse/handlers/room_list.py
+++ b/synapse/handlers/room_list.py
@@ -90,7 +90,11 @@ class RoomListHandler(BaseHandler):
             logger.info("Bypassing cache as search request.")
 
             return self._get_public_room_list(
-                limit, since_token, search_filter, network_tuple=network_tuple
+                limit,
+                since_token,
+                search_filter,
+                network_tuple=network_tuple,
+                from_federation=from_federation,
             )
 
         key = (limit, since_token, network_tuple)