diff --git a/R/KorAPQuery.R b/R/KorAPQuery.R
index 5abd281..805d7d7 100644
--- a/R/KorAPQuery.R
+++ b/R/KorAPQuery.R
@@ -266,6 +266,20 @@
               log_info(verbose, ", took ", res$meta$benchmark)
             }
           }
+
+          # Calculate and display ETA information on the same line if verbose and we have more than one query
+          if (verbose && total_queries > 1) {
+            eta_info <- calculate_eta(current_query, total_queries, start_time)
+            if (eta_info != "") {
+              elapsed_time <- as.numeric(difftime(Sys.time(), start_time, units = "secs"))
+              avg_time_per_query <- elapsed_time / current_query
+
+              # Add ETA info to the same line - remove the leading ". " for cleaner formatting
+              clean_eta_info <- sub("^\\. ", ". ", eta_info)
+              log_info(verbose, clean_eta_info)
+            }
+          }
+
           log_info(verbose, "\n")
         }
 
@@ -277,29 +291,6 @@
           stringsAsFactors = FALSE
         )
 
-        # Calculate and display ETA information if verbose and we have more than one query
-        if (verbose && total_queries > 1) {
-          eta_info <- calculate_eta(current_query, total_queries, start_time)
-          if (eta_info != "") {
-            elapsed_time <- as.numeric(difftime(Sys.time(), start_time, units = "secs"))
-            avg_time_per_query <- elapsed_time / current_query
-
-            # Create progress display
-            progress_display <- paste0(
-              "Query ",
-              sprintf(paste0("%", nchar(total_queries), "d"), current_query),
-              "/",
-              sprintf("%d", total_queries),
-              " completed. Avg: ",
-              sprintf("%.1f", avg_time_per_query),
-              "s/query",
-              eta_info
-            )
-
-            log_info(verbose, progress_display, "\n")
-          }
-        }
-
         return(result)
       })
 
@@ -568,9 +559,9 @@
     } else {
       total_pages
     }
-    
+
     eta_info <- calculate_eta(current_page, total_pages_to_fetch, start_time)
-    
+
     # Extract timing information for display
     time_per_page <- NA
     if (!is.null(res$meta$benchmark) && is.character(res$meta$benchmark)) {
diff --git a/R/logging.R b/R/logging.R
index 47c7ed5..fb1dc98 100644
--- a/R/logging.R
+++ b/R/logging.R
@@ -90,31 +90,31 @@
 #' @param window_size number of recent non-cached times to use for median calculation (default: 5)
 #' @return list with eta_seconds, estimated_completion_time, and is_cached flag
 #' @keywords internal
-calculate_sophisticated_eta <- function(individual_times, current_item, total_items, 
+calculate_sophisticated_eta <- function(individual_times, current_item, total_items,
                                        cache_threshold = 0.1, window_size = 5) {
   if (current_item < 2) {
     return(list(eta_seconds = NA, estimated_completion_time = NA, is_cached = FALSE))
   }
-  
+
   # Get times up to current item
   current_times <- individual_times[1:current_item]
   current_time <- individual_times[current_item]
   is_cached <- current_time < cache_threshold
-  
+
   # Use recent non-cached times for better ETA estimates
   # Exclude very fast responses as likely cached
   non_cached_times <- current_times[current_times >= cache_threshold]
-  
+
   if (length(non_cached_times) >= 1) {
     # Use median of recent non-cached times for more stable estimates
     recent_window <- min(window_size, length(non_cached_times))
     recent_times <- tail(non_cached_times, recent_window)
     time_per_item <- median(recent_times)
-    
+
     remaining_items <- total_items - current_item
     eta_seconds <- time_per_item * remaining_items
     estimated_completion_time <- Sys.time() + eta_seconds
-    
+
     return(list(
       eta_seconds = eta_seconds,
       estimated_completion_time = estimated_completion_time,
@@ -138,9 +138,9 @@
   if (is.na(eta_seconds) || is.na(estimated_completion_time)) {
     return("")
   }
-  
+
   completion_time_str <- format(estimated_completion_time, "%Y-%m-%d %H:%M:%S")
-  paste0(", ETA: ", format_duration(eta_seconds), " (", completion_time_str, ")")
+  paste0(". ETA: ", format_duration(eta_seconds), " (", completion_time_str, ")")
 }
 
 #' Get cache indicator string
