diff --git a/docs/reference/search.asciidoc b/docs/reference/search.asciidoc
index 8568f8df296c4..dfb302e03dac0 100644
--- a/docs/reference/search.asciidoc
+++ b/docs/reference/search.asciidoc
@@ -156,6 +156,8 @@ include::search/request-body.asciidoc[]
include::search/async-search.asciidoc[]
+include::search/scroll-api.asciidoc[]
+
include::search/search-template.asciidoc[]
include::search/search-shards.asciidoc[]
diff --git a/docs/reference/search/scroll-api.asciidoc b/docs/reference/search/scroll-api.asciidoc
new file mode 100644
index 0000000000000..6bf65b13ab9f6
--- /dev/null
+++ b/docs/reference/search/scroll-api.asciidoc
@@ -0,0 +1,142 @@
+[[scroll-api]]
+=== Scroll API
+++++
+Scroll
+++++
+
+Retrieves the next batch of results for a <>.
+
+////
+[source,console]
+--------------------------------------------------
+GET /_search?scroll=1m
+{
+ "size": 1,
+ "query": {
+ "match_all": {}
+ }
+}
+--------------------------------------------------
+// TEST[setup:twitter]
+////
+
+[source,console]
+--------------------------------------------------
+GET /_search/scroll
+{
+ "scroll_id" : "DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ=="
+}
+--------------------------------------------------
+// TEST[continued]
+// TEST[s/DXF1ZXJ5QW5kRmV0Y2gBAAAAAAAAAD4WYm9laVYtZndUQlNsdDcwakFMNjU1QQ==/$body._scroll_id/]
+
+[[scroll-api-request]]
+==== {api-request-title}
+
+`GET /_search/scroll/`
+deprecated:[7.0.0]
+
+`GET /_search/scroll`
+
+`POST /_search/scroll/`
+deprecated:[7.0.0]
+
+`POST /_search/scroll`
+
+[[scroll-api-desc]]
+==== {api-description-title}
+
+You can use the scroll API to retrieve large sets of results from a single
+<> request.
+
+The scroll API requires a scroll ID. To get a scroll ID, submit a
+<> request that includes an argument for the
+<>. The `scroll`
+parameter indicates how long {es} should retain the
+<> for the request.
+
+The search response returns a scroll ID in the `_scroll_id` response body
+parameter. You can then use the scroll ID with the scroll API to retrieve the
+next batch of results for the request.
+
+You can also use the scroll API to specify a new `scroll` parameter that extends
+or shortens the retention period for the search context.
+
+See <>.
+
+IMPORTANT: Results from a scrolling search reflect the state of the index at the
+time of the initial search request. Subsequent indexing or document changes only
+affect later search and scroll requests.
+
+[[scroll-api-path-params]]
+==== {api-path-parms-title}
+
+``::
+deprecated:[7.0.0]
+(Optional, string)
+Scroll ID of the search.
++
+IMPORTANT: Scroll IDs can be long. We recommend only specifying scroll IDs using
+the <>.
+
+[[scroll-api-query-params]]
+==== {api-query-parms-title}
+
+`scroll`::
+(Optional, <>)
+Period to retain the <> for scrolling. See
+<>.
++
+This value overrides the duration set by the original search API request's
+`scroll` parameter.
++
+By default, this value cannot must be less than `1d` (one day). You can change
+this limit using the `search.max_keep_alive` cluster-level setting.
++
+IMPORTANT: You can also specify this value using the `scroll` request body
+parameter. If both parameters are specified, only the query parameter is used.
+
+`scroll_id`::
+deprecated:[7.0.0]
+(Optional, string)
+Scroll ID for the search.
++
+IMPORTANT: Scroll IDs can be long. We recommend only specifying scroll IDs using
+the <>.
+
+`rest_total_hits_as_int`::
+(Optional, boolean)
+If `true`, the API response's `hit.total` property is returned as an integer.
+If `false`, the API response's `hit.total` property is returned as an object.
+Defaults to `false`.
+
+[role="child_attributes"]
+[[scroll-api-request-body]]
+==== {api-request-body-title}
+
+`scroll`::
+(Optional, <>)
+Period to retain the <> for scrolling. See
+<>.
++
+This value overrides the duration set by the original search API request's
+`scroll` parameter.
++
+By default, this value cannot must be less than `1d` (one day). You can change
+this limit using the `search.max_keep_alive` cluster-level setting.
++
+IMPORTANT: You can also specify this value using the `scroll` query
+parameter. If both parameters are specified, only the query parameter is used.
+
+[[scroll-api-scroll-id-param]]
+`scroll_id`::
+(Required, string)
+Scroll ID for the search.
+
+[role="child_attributes"]
+[[scroll-api-response-body]]
+==== {api-response-body-title}
+
+The scroll API returns the same response body as the search API. See the search
+API's <>.
diff --git a/docs/reference/search/search.asciidoc b/docs/reference/search/search.asciidoc
index 174dba2fc624c..4a6e9cbabe793 100644
--- a/docs/reference/search/search.asciidoc
+++ b/docs/reference/search/search.asciidoc
@@ -165,6 +165,15 @@ level settings.
(Optional, <>) Specifies how long a consistent view of
the index should be maintained for scrolled search.
+[[search-api-scroll-query-param]]
+`scroll`::
+(Optional, <>)
+Period to retain the <> for scrolling. See
+<>.
++
+By default, this value cannot must be less than `1d` (one day). You can change
+this limit using the `search.max_keep_alive` cluster-level setting.
+
include::{es-repo-dir}/rest-api/common-parms.asciidoc[tag=search_type]
`seq_no_primary_term`::
@@ -198,6 +207,9 @@ As an alternative to deep paging, we recommend using
<> or the
<> parameter.
+If the <> is specified, this
+value cannot be zero (`0`).
+
[IMPORTANT]
====
You can also specify this value using the `size` request body parameter. If
@@ -365,6 +377,9 @@ As an alternative to deep paging, we recommend using
<> or the
<> parameter.
+If the <> is specified, this
+value cannot be zero (`0`).
+
[IMPORTANT]
====
You can also specify this value using the `size` query parameter. If both
@@ -417,6 +432,17 @@ parameters are specified, only the query parameter is used.
[[search-api-response-body]]
==== {api-response-body-title}
+`_scroll_id`::
+(string)
+Identifier for the search and its <>.
++
+You can use this scroll ID with the <> to retrieve the
+next batch of search results for the request. See
+<>.
++
+This parameter is only returned if the <> is specified in the request.
+
`took`::
+
--