diff --git a/NEWS.md b/NEWS.md
index 5ba8e4d..bd4e50b 100644
--- a/NEWS.md
+++ b/NEWS.md
@@ -1,5 +1,7 @@
 # RKorAPClient 1.2.0.9000
 
+- warnings are now issued, when queries had to be rewritten (for licensing reasons)
+
 # RKorAPClient 1.2.0
 
 - `fetchAnnotations()` method added to `KorAPQuery` class, to fetch annotations for all collected matches
diff --git a/R/KorAPQuery.R b/R/KorAPQuery.R
index 6dd5b44..e43467d 100644
--- a/R/KorAPQuery.R
+++ b/R/KorAPQuery.R
@@ -260,6 +260,9 @@
           log_info(verbose, ": API call failed\n")
           totalResults <- 0
         } else {
+          # Check for query rewrites and warn the user
+          warnOnRewrites(res)
+
           totalResults <- as.integer(res$meta$totalResults)
           log_info(verbose, ": ", totalResults, " hits")
           if (!is.null(res$meta$cached)) {
@@ -337,6 +340,9 @@
         message("API call failed.")
         totalResults <- 0
       } else {
+        # Check for query rewrites and warn the user
+        warnOnRewrites(res)
+
         totalResults <- as.integer(res$meta$totalResults)
         log_info(verbose, ": ", totalResults, " hits")
         if (!is.null(res$meta$cached)) {
@@ -387,6 +393,17 @@
   }
 )
 
+# Helper function to check if a query rewrite warning should be shown
+warnOnRewrites <- function(res) {
+  if (!is.null(res$collection$rewrites)) {
+    comment <- res$collection$rewrites$`_comment`
+    # Only show warning if it's not just the standard policy message
+    if (!is.null(comment) && comment != "All corpus access policy has been added.") {
+      warning(res$collection$rewrites$editor, " had to rewrite your query: ", comment)
+    }
+  }
+}
+
 #' @importFrom purrr map
 repair_data_strcuture <- function(x) {
   if (is.list(x)) {
@@ -512,11 +529,15 @@
 
     # Rebuild the URL with all parameters
     query <- httr2::url_modify(kqo@requestUrl, query = existing_query)
+
     res <- apiCall(kqo@korapConnection, query)
     if (length(res$matches) == 0) {
       break
     }
 
+    # Check for query rewrites and warn the user
+    warnOnRewrites(res)
+
     if ("fields" %in% colnames(res$matches) && (is.na(use_korap_api) || as.numeric(use_korap_api) >= 1.0)) {
       log_info(verbose, "Using fields API: ")
       currentMatches <- res$matches$fields %>%
@@ -556,6 +577,7 @@
       collectedMatches <- bind_rows(collectedMatches, currentMatches)
     }
 
+
     # Get the actual items per page from the API response
     # We now consistently use maxResultsPerPage instead
 
@@ -1134,6 +1156,7 @@
 #'   foundry while adding morph from another).
 #' @param verbose print progress information if true
 #' @return The updated `kqo` object with annotation columns
+#' @return The updated `kqo` object with annotation columns
 #' like `pos`, `lemma`, `morph` (and `atokens` and `annotation_snippet`)
 #' in the `@collectedMatches` slot. Each column is a data frame
 #' with `left`, `match`, and `right` columns containing list vectors of annotations
