diff --git a/NAMESPACE b/NAMESPACE
index 5e5e2be..beb1dea 100644
--- a/NAMESPACE
+++ b/NAMESPACE
@@ -44,6 +44,7 @@
 exportMethods(corpusQuery)
 exportMethods(corpusStats)
 exportMethods(fetchAll)
+exportMethods(fetchAnnotations)
 exportMethods(fetchNext)
 exportMethods(fetchRest)
 exportMethods(frequencyQuery)
diff --git a/R/KorAPQuery.R b/R/KorAPQuery.R
index b6da9a1..1a7f610 100644
--- a/R/KorAPQuery.R
+++ b/R/KorAPQuery.R
@@ -21,7 +21,8 @@
   "webUIRequestUrl",
   "apiResponse",
   "collectedMatches",
-  "hasMoreMatches"
+  "hasMoreMatches",
+  "annotations"
 ))
 
 #' Initialize KorAPQuery object
@@ -38,6 +39,7 @@
 #' @param apiResponse data-frame representation of the JSON response of the API request
 #' @param hasMoreMatches logical that signals if more query results can be fetched
 #' @param collectedMatches matches already fetched from the KorAP-API-server
+#' @param annotations list of annotation data for collected matches
 #'
 #' @importFrom tibble tibble
 #' @export
@@ -47,7 +49,7 @@
              "corpusSigle", "textSigle", "pubDate", "pubPlace",
              "availability", "textClass", "snippet", "tokens"
            ),
-           requestUrl = "", webUIRequestUrl = "", apiResponse = NULL, hasMoreMatches = FALSE, collectedMatches = NULL) {
+           requestUrl = "", webUIRequestUrl = "", apiResponse = NULL, hasMoreMatches = FALSE, collectedMatches = NULL, annotations = NULL) {
     .Object <- callNextMethod()
     .Object@korapConnection <- korapConnection
     .Object@request <- request
@@ -60,6 +62,7 @@
     .Object@apiResponse <- apiResponse
     .Object@hasMoreMatches <- hasMoreMatches
     .Object@collectedMatches <- collectedMatches
+    .Object@annotations <- annotations
     .Object
   }
 )
@@ -68,6 +71,7 @@
 setGeneric("fetchAll", function(kqo, ...) standardGeneric("fetchAll"))
 setGeneric("fetchNext", function(kqo, ...) standardGeneric("fetchNext"))
 setGeneric("fetchRest", function(kqo, ...) standardGeneric("fetchRest"))
+setGeneric("fetchAnnotations", function(kqo, ...) standardGeneric("fetchAnnotations"))
 setGeneric("frequencyQuery", function(kco, ...) standardGeneric("frequencyQuery"))
 
 maxResultsPerPage <- 50
@@ -736,6 +740,86 @@
   return(fetchNext(kqo, maxFetch = NA, verbose = verbose, ...))
 })
 
+#' Fetch annotations for all collected matches
+#'
+#' **`fetchAnnotations`** fetches annotations for all matches in the `@collectedMatches` slot
+#' of a KorAPQuery object and stores them in the `@annotations` slot.
+#'
+#' @family corpus search functions
+#' @aliases fetchAnnotations
+#'
+#' @param kqo object obtained from [corpusQuery()] with collected matches
+#' @param foundry string specifying the foundry to use for annotations (default: "tt" for Tree-Tagger)
+#' @param verbose print progress information if true
+#' @return The updated `kqo` object with annotations in `@annotations` slot
+#'
+#' @examples
+#' \dontrun{
+#'
+#' # Fetch annotations for matches using Tree-Tagger foundry
+#' q <- KorAPConnection() |>
+#'   corpusQuery("Ameisenplage") |>
+#'   fetchNext(maxFetch = 10) |>
+#'   fetchAnnotations()
+#' q@annotations
+#'
+#' # Use a different foundry
+#' q <- KorAPConnection() |>
+#'   corpusQuery("Ameisenplage") |>
+#'   fetchNext(maxFetch = 10) |>
+#'   fetchAnnotations(foundry = "mate")
+#' q@annotations
+#' }
+#'
+#' @export
+setMethod("fetchAnnotations", "KorAPQuery", function(kqo, foundry = "tt", verbose = kqo@korapConnection@verbose) {
+  if (is.null(kqo@collectedMatches) || nrow(kqo@collectedMatches) == 0) {
+    warning("No collected matches found. Please run fetchNext() or fetchAll() first.")
+    return(kqo)
+  }
+  
+  df <- kqo@collectedMatches
+  kco <- kqo@korapConnection
+  annotations_list <- list()
+  
+  if (verbose) {
+    cat("Fetching annotations for", nrow(df), "matches using foundry:", foundry, "\n")
+  }
+  
+  for (i in seq_len(nrow(df))) {
+    if (verbose && i %% 10 == 0) {
+      cat("Processing match", i, "of", nrow(df), "\n")
+    }
+    
+    req <- paste0(kco@apiUrl, "corpus/", df$textSigle[i], "/", "p", df$matchStart[i], "-", df$matchEnd[i], "?foundry=", foundry)
+    
+    tryCatch({
+      res <- apiCall(kco, req)
+      if (!is.null(res)) {
+        annotations_list[[i]] <- res
+      } else {
+        if (verbose) {
+          cat("Warning: No annotations returned for match", i, "\n")
+        }
+        annotations_list[[i]] <- NULL
+      }
+    }, error = function(e) {
+      if (verbose) {
+        cat("Error fetching annotations for match", i, ":", e$message, "\n")
+      }
+      annotations_list[[i]] <- NULL
+    })
+  }
+  
+  if (verbose) {
+    successful_annotations <- sum(!sapply(annotations_list, is.null))
+    cat("Successfully fetched annotations for", successful_annotations, "of", nrow(df), "matches\n")
+  }
+  
+  kqo@annotations <- annotations_list
+  return(kqo)
+})
+
 #' Query frequencies of search expressions in virtual corpora
 #'
 #' **`frequencyQuery`** combines [corpusQuery()], [corpusStats()] and
@@ -851,6 +935,10 @@
   }
   cat("   Total results: ", q@totalResults, "\n")
   cat(" Fetched results: ", q@nextStartIndex, "\n")
+  if (!is.null(q@annotations)) {
+    successful_annotations <- sum(!sapply(q@annotations, is.null))
+    cat("     Annotations: ", successful_annotations, " of ", length(q@annotations), " matches\n")
+  }
 }
 
 #' show()
diff --git a/man/corpusQuery-KorAPConnection-method.Rd b/man/corpusQuery-KorAPConnection-method.Rd
index 1b0dd83..eb826a7 100644
--- a/man/corpusQuery-KorAPConnection-method.Rd
+++ b/man/corpusQuery-KorAPConnection-method.Rd
@@ -141,6 +141,7 @@
 
 Other corpus search functions: 
 \code{\link{fetchAll,KorAPQuery-method}},
+\code{\link{fetchAnnotations,KorAPQuery-method}},
 \code{\link{fetchNext,KorAPQuery-method}}
 }
 \concept{corpus search functions}
diff --git a/man/fetchAll-KorAPQuery-method.Rd b/man/fetchAll-KorAPQuery-method.Rd
index 195bd93..a31898a 100644
--- a/man/fetchAll-KorAPQuery-method.Rd
+++ b/man/fetchAll-KorAPQuery-method.Rd
@@ -48,6 +48,7 @@
 \seealso{
 Other corpus search functions: 
 \code{\link{corpusQuery,KorAPConnection-method}},
+\code{\link{fetchAnnotations,KorAPQuery-method}},
 \code{\link{fetchNext,KorAPQuery-method}}
 }
 \concept{corpus search functions}
diff --git a/man/fetchNext-KorAPQuery-method.Rd b/man/fetchNext-KorAPQuery-method.Rd
index 204af00..2b1f309 100644
--- a/man/fetchNext-KorAPQuery-method.Rd
+++ b/man/fetchNext-KorAPQuery-method.Rd
@@ -46,6 +46,7 @@
 \seealso{
 Other corpus search functions: 
 \code{\link{corpusQuery,KorAPConnection-method}},
-\code{\link{fetchAll,KorAPQuery-method}}
+\code{\link{fetchAll,KorAPQuery-method}},
+\code{\link{fetchAnnotations,KorAPQuery-method}}
 }
 \concept{corpus search functions}
diff --git a/man/initialize-KorAPQuery-method.Rd b/man/initialize-KorAPQuery-method.Rd
index beb44ad..0815bea 100644
--- a/man/initialize-KorAPQuery-method.Rd
+++ b/man/initialize-KorAPQuery-method.Rd
@@ -17,7 +17,8 @@
   webUIRequestUrl = "",
   apiResponse = NULL,
   hasMoreMatches = FALSE,
-  collectedMatches = NULL
+  collectedMatches = NULL,
+  annotations = NULL
 )
 }
 \arguments{
@@ -44,6 +45,8 @@
 \item{hasMoreMatches}{logical that signals if more query results can be fetched}
 
 \item{collectedMatches}{matches already fetched from the KorAP-API-server}
+
+\item{annotations}{list of annotation data for collected matches}
 }
 \description{
 Initialize KorAPQuery object
