diff --git a/toargridding/toar_rest_client.py b/toargridding/toar_rest_client.py
index dafb710a20656f19765a12bd2a6452a770f4898e..65a52fb32bc4542ce135a80e59b5e2d17f15f37d 100644
--- a/toargridding/toar_rest_client.py
+++ b/toargridding/toar_rest_client.py
@@ -257,7 +257,8 @@ class Connection:
         This function catches possible connection issues and continues to 
         """
         status_endpoint = self.get_status_endpoint(query_options)
-
+        nRestart=0
+        waitRestart = 300
         for i, wait_time in enumerate(self.wait_seconds):
             logger.info(f"try: {i+1}, wait_time: {wait_time}")
             response = self.wait_and_get(status_endpoint, wait_secs=wait_time)
@@ -269,7 +270,8 @@ class Connection:
                 self.printExecption(e, response)
                 #a Status Code 500 seems indicated an aborted request -> restart the request and continue with new status endpoint
                 if e.response.status_code == 500:
-                    logger.warning("Received internal server error. Restarting request.")
+                    logger.warning(f"Received internal server error. Restarting request in {waitRestart}s.")
+                    time.sleep(waitRestart)
                     self.cache.remove(query_options.cache_key)
                     status_endpoint = self.get_status_endpoint(query_options)
                 else:
@@ -281,7 +283,7 @@ class Connection:
                 return response
         else:
             raise RuntimeError(
-                f"No data available after {sum(self.wait_seconds) / 60} minutes. retry later."
+                f"No data available after {sum(self.wait_seconds) / 60 + nRestart*waitRestart / 60} minutes. retry later."
             )
 
     def get_status_endpoint(self, query_options: QueryOptions) -> str: