diff --git a/R/matomoquery.R b/R/matomoquery.R
index cfdfb86..2bdb74e 100644
--- a/R/matomoquery.R
+++ b/R/matomoquery.R
@@ -15,6 +15,7 @@
 #' matomo interface under Settings -> Personal -> Settings -> API Authentication Token
 #' and pass it here, or you can make it persistent with \code{\link{persistAccessToken}}.
 #' @param getMethod    API method to call – default: VisitsSummary.get
+#' @param ignoreEmptyResult if FALSE stop with error message on empty list results, otherwise return empty list
 #' @return Data frame with visits summary as returned by matomo. Note that the \code{date} column in the returned data frame refers to the first day of the respective period.
 #'
 #' @importFrom httr2 request req_url_query req_perform resp_body_json resp_body_raw req_error
@@ -39,7 +40,8 @@
                              removeFirst = FALSE,
                              removeLast = FALSE,
                              accessToken = getAccessToken(matomoUrl),
-                             getMethod = "VisitsSummary.get"
+                             getMethod = "VisitsSummary.get",
+                             ignoreEmptyResult = FALSE
 ) {
   if ((is.null(accessToken) || accessToken == '' ) && matomoUrl != "https://demo.matomo.org/") {
     stop(
@@ -73,7 +75,7 @@
   }
 
   if (period=="range") {
-    df <- if (is.list(l) && length(l) == 0) {
+    df <- if (!ignoreEmptyResult && is.list(l) && length(l) == 0) {
       stop(paste0("API call ",  res$url, " returned the empty list [].\n"), call. = FALSE)
     } else if (is.list(l)) {
       df <- bind_rows(l)
diff --git a/R/usercountry.R b/R/usercountry.R
index 0ea414c..62075e1 100644
--- a/R/usercountry.R
+++ b/R/usercountry.R
@@ -6,7 +6,7 @@
 #'
 #' @inheritParams matomoQuery
 #'
-#' @importFrom stringr str_replace str_replace_all
+#' @importFrom stringr str_replace str_replace_all str_split
 #'
 #' @examples
 #' \dontrun{
@@ -21,12 +21,31 @@
                              filter_limit = 100,
                              accessToken = getAccessToken(matomoUrl)
 ) {
-  matomoQuery(matomoUrl = matomoUrl,
-              siteId = siteId,
-              period = period,
-              date = str_replace_all(str_replace_all(date, " *UTC", ""), "-00", "-01"),
-              removeFirst = FALSE,
-              removeLast = FALSE,
-              accessToken = accessToken,
-              getMethod = "UserCountry.getCountry")
+  result <- list()
+  MAX_RETRIES <- 5
+  retry_count <- 0
+
+  while (length(result) == 0 && retry_count < MAX_RETRIES) {
+    result <- matomoQuery(matomoUrl = matomoUrl,
+                siteId = siteId,
+                period = period,
+                date = str_replace_all(str_replace_all(date, " *UTC", ""), "-00", "-01"),
+                removeFirst = FALSE,
+                removeLast = FALSE,
+                accessToken = accessToken,
+                getMethod = "UserCountry.getCountry",
+                ignoreEmptyResult = retry_count < MAX_RETRIES)
+
+    if (length(result) == 0 && retry_count < MAX_RETRIES) {
+      msg <- paste0("UserCountry.getCountry returned an empty list (known MATOMO bug). Changing date range from ", date, " to ")
+      retry_count <- retry_count + 1
+      startend <- str_split(date, ",", simplify = T)
+      l <- str_split(startend[1], "-", simplify = T)
+      l[3] <- sprintf("%02d", as.numeric(l[3]) + 1)
+      date <- paste0(paste0(l, collapse = "-"), ",", startend[2])
+      msg <- paste0(msg, date, "\n")
+      warning(msg)
+    }
+  }
+  return(result)
 }
