diff --git a/R/KorAPQuery.R b/R/KorAPQuery.R
index 9114c83..b6ed0da 100644
--- a/R/KorAPQuery.R
+++ b/R/KorAPQuery.R
@@ -99,6 +99,12 @@
 #' @param verbose print some info
 #' @param as.df return result as data frame instead of as S4 object?
 #' @param expand logical that decides if `query` and `vc` parameters are expanded to all of their combinations
+#' @param context string that specifies the size of the left and the right context returned in `snippet`
+#'        (provided that `metadataOnly` is set to `false` and that the necessary access right are  met).
+#'        The format of the context size specifcation (e.g. `3-token,3-token`) is described in the [Service: Search GET documentation of the Kustvakt Wiki](https://github.com/KorAP/Kustvakt/wiki/Service:-Search-GET).
+#'        If the parameter is not set, the default context size secification of the KorAP server instance will be used.
+#'        Note that you cannot overrule the maximum context size set in the KorAP server instance,
+#'        as this is typically legally motivated.
 #' @return Depending on the `as.df` parameter, a table or a [KorAPQuery()] object that, among other information, contains the total number of results in `@totalResults`. The resulting object can be used to fetch all query results (with [fetchAll()]) or the next page of results (with [fetchNext()]).
 #' A corresponding URL to be used within a web browser is contained in `@webUIRequestUrl`
 #' Please make sure to check `$collection$rewrites` to see if any unforeseen access rewrites of the query's virtual corpus had to be performed.
@@ -166,7 +172,8 @@
                    accessRewriteFatal = TRUE,
                    verbose = kco@verbose,
                    expand = length(vc) != length(query),
-          as.df = FALSE) {
+          as.df = FALSE,
+          context = NULL) {
   if (length(query) > 1 || length(vc) > 1) {
     grid <- if (expand) expand_grid(query=query, vc=vc) else tibble(query=query, vc=vc)
     purrr::pmap(grid, function(query, vc, ...)
@@ -180,6 +187,7 @@
       request <-
         paste0('?q=',
                url_encode(enc2utf8(query)),
+               ifelse (!metadataOnly && ! is.null(context) && context !=  '', paste0('&context=', url_encode(enc2utf8(context))), ''),
                ifelse (vc != '', paste0('&cq=', url_encode(enc2utf8(vc))), ''), '&ql=', ql)
       webUIRequestUrl <- paste0(kco@KorAPUrl, request)
       requestUrl <- paste0(
diff --git a/man/KorAPQuery-class.Rd b/man/KorAPQuery-class.Rd
index 97000de..ebeb5c7 100644
--- a/man/KorAPQuery-class.Rd
+++ b/man/KorAPQuery-class.Rd
@@ -50,7 +50,8 @@
   accessRewriteFatal = TRUE,
   verbose = kco@verbose,
   expand = length(vc) != length(query),
-  as.df = FALSE
+  as.df = FALSE,
+  context = NULL
 )
 
 \S4method{fetchNext}{KorAPQuery}(
@@ -140,6 +141,13 @@
 
 \item{as.df}{return result as data frame instead of as S4 object?}
 
+\item{context}{string that specifies the size of the left and the right context returned in \code{snippet}
+(provided that \code{metadataOnly} is set to \code{false} and that the necessary access right are  met).
+The format of the context size specifcation (e.g. \verb{3-token,3-token}) is described in the \href{https://github.com/KorAP/Kustvakt/wiki/Service:-Search-GET}{Service: Search GET documentation of the Kustvakt Wiki}.
+If the parameter is not set, the default context size secification of the KorAP server instance will be used.
+Note that you cannot overrule the maximum context size set in the KorAP server instance,
+as this is typically legally motivated.}
+
 \item{kqo}{object obtained from \code{\link[=corpusQuery]{corpusQuery()}}}
 
 \item{offset}{start offset for query results to fetch}
