diff --git a/DESCRIPTION b/DESCRIPTION
index de0a462..44b8d3d 100644
--- a/DESCRIPTION
+++ b/DESCRIPTION
@@ -1,7 +1,7 @@
 Package: RKorAPClient
 Type: Package
 Title: 'KorAP' Web Service Client Package
-Version: 1.4.0
+Version: 1.4.9000
 Authors@R:
     c(person(given = "Marc",
              family = "Kupietz",
diff --git a/R/KorAPConnection.R b/R/KorAPConnection.R
index 967feaa..27d7b15 100644
--- a/R/KorAPConnection.R
+++ b/R/KorAPConnection.R
@@ -438,8 +438,12 @@
   }
 
   # Create the request
+  # disable the curl low-speed abort (r-curl kills "stalled" transfers
+  # with less than 1 byte/s after 600s by default): long running
+  # searches are guarded by the overall request timeout instead
   req <- httr2::request(url) |>
     httr2::req_user_agent(kco@userAgent) |>
+    httr2::req_options(low_speed_limit = 0, low_speed_time = 0) |>
     httr2::req_timeout(timeout)
 
   if (!is.null(kco@oauthClient)) {
diff --git a/R/KorAPQuery.R b/R/KorAPQuery.R
index a68f03e..85f1e8f 100644
--- a/R/KorAPQuery.R
+++ b/R/KorAPQuery.R
@@ -261,23 +261,26 @@
 
         # Show individual query progress
         log_info(verbose, "\rSearching \"", query, "\" in \"", vc, "\"", sep = "")
+        queryStart <- Sys.time()
         res <- apiCall(kco, paste0(requestUrl, "&count=0"))
+        queryDuration <- as.numeric(difftime(Sys.time(), queryStart, units = "secs"))
         if (is.null(res)) {
-          log_info(verbose, ": API call failed\n")
+          log_info(verbose, ": API call failed after ", sprintf("%.1f", queryDuration), "s\n")
+          warning("The request for query \u201c", query, "\u201d failed; the reported results are unreliable.", call. = FALSE)
           totalResults <- 0
         } else {
           totalResults <- as.integer(res$meta$totalResults)
           log_info(verbose, ": ", totalResults, " hits")
           if (!is.null(res$meta$cached)) {
             log_info(verbose, " [cached]")
-          } else if (!is.null(res$meta$benchmark)) {
-            if (is.character(res$meta$benchmark) && grepl("s$", res$meta$benchmark)) {
-              time_value <- as.numeric(sub("s$", "", res$meta$benchmark))
-              formatted_time <- paste0(round(time_value, 2), "s")
-              log_info(verbose, ", took ", formatted_time)
-            } else {
-              log_info(verbose, ", took ", res$meta$benchmark)
-            }
+          }
+          log_info(verbose, ", took ", sprintf("%.1f", queryDuration), "s")
+          if (!is.null(res$meta$timeExceeded)) {
+            warning(
+              "The query \u201c", query, "\u201d was cut short by the KorAP server ",
+              "(timeExceeded); the reported results are incomplete.",
+              call. = FALSE
+            )
           }
 
           # Calculate and display ETA information on the same line if verbose and we have more than one query
@@ -300,6 +303,7 @@
           query = query,
           totalResults = totalResults,
           vc = vc,
+          queryDuration = queryDuration,
           webUIRequestUrl = webUIRequestUrl,
           stringsAsFactors = FALSE
         )
@@ -341,40 +345,35 @@
         sep =
           ""
       )
+      queryStart <- Sys.time()
       res <- apiCall(kco, paste0(requestUrl, "&count=0"))
+      queryDuration <- as.numeric(difftime(Sys.time(), queryStart, units = "secs"))
       if (is.null(res)) {
         message("API call failed.")
+        warning("The request for query \u201c", query, "\u201d failed; the reported results are unreliable.", call. = FALSE)
         totalResults <- 0
       } else {
         totalResults <- as.integer(res$meta$totalResults)
         log_info(verbose, ": ", totalResults, " hits")
         if (!is.null(res$meta$cached)) {
-          log_info(verbose, " [cached]\n")
-        } else if (!is.null(res$meta$benchmark)) {
-          # Round the benchmark time to 2 decimal places for better readability.
-          # Be robust to locales using comma as decimal separator (e.g., "0,12s").
-          if (is.character(res$meta$benchmark) && grepl("s$", res$meta$benchmark)) {
-            bench_str <- sub("s$", "", res$meta$benchmark)
-            bench_num <- suppressWarnings(as.numeric(gsub(",", ".", bench_str)))
-            if (!is.na(bench_num)) {
-              formatted_time <- paste0(round(bench_num, 2), "s")
-            } else {
-              formatted_time <- res$meta$benchmark
-            }
-            log_info(verbose, ", took ", formatted_time, "\n", sep = "")
-          } else {
-            # Fallback if the format is different than expected
-            log_info(verbose, ", took ", res$meta$benchmark, "\n", sep = "")
-          }
-        } else {
-          log_info(verbose, "\n")
+          log_info(verbose, " [cached]")
         }
+        log_info(verbose, ", took ", sprintf("%.1f", queryDuration), "s")
+        if (!is.null(res$meta$timeExceeded)) {
+          warning(
+            "The query \u201c", query, "\u201d was cut short by the KorAP server ",
+            "(timeExceeded); the reported results are incomplete.",
+            call. = FALSE
+          )
+        }
+        log_info(verbose, "\n")
       }
       if (as.df) {
         data.frame(
           query = query,
           totalResults = totalResults,
           vc = vc,
+          queryDuration = queryDuration,
           webUIRequestUrl = webUIRequestUrl,
           stringsAsFactors = FALSE
         )
@@ -1390,6 +1389,7 @@
 #'   - **query**: the query string used for the frequency analysis.
 #'   - **totalResults**: absolute frequency of query matches in the vc.
 #'   - **vc**:  virtual corpus used for the query.
+#'   - **queryDuration**: client-side duration of the request in seconds.
 #'   - **webUIRequestUrl**: URL of the corresponding web UI request with respect to query and vc.
 #'   - **total**: total number of words in vc.
 #'   - **f**:  relative frequency of query matches in the vc.
diff --git a/man/frequencyQuery-KorAPConnection-method.Rd b/man/frequencyQuery-KorAPConnection-method.Rd
index 5ae060a..33458bc 100644
--- a/man/frequencyQuery-KorAPConnection-method.Rd
+++ b/man/frequencyQuery-KorAPConnection-method.Rd
@@ -36,6 +36,7 @@
 \item \strong{query}: the query string used for the frequency analysis.
 \item \strong{totalResults}: absolute frequency of query matches in the vc.
 \item \strong{vc}:  virtual corpus used for the query.
+\item \strong{queryDuration}: client-side duration of the request in seconds.
 \item \strong{webUIRequestUrl}: URL of the corresponding web UI request with respect to query and vc.
 \item \strong{total}: total number of words in vc.
 \item \strong{f}:  relative frequency of query matches in the vc.
