Index: src/wp-admin/includes/ajax-actions.php
===================================================================
--- src/wp-admin/includes/ajax-actions.php	(revision 39474)
+++ src/wp-admin/includes/ajax-actions.php	(working copy)
@@ -101,6 +101,8 @@
 /**
  * Ajax handler for tag search.
  *
+ * @deprecated 4.8.0 Use the REST API tags endpoint instead.
+ *
  * @since 3.1.0
  */
 function wp_ajax_ajax_tag_search() {
Index: src/wp-admin/js/tags-suggest.js
===================================================================
--- src/wp-admin/js/tags-suggest.js	(revision 39474)
+++ src/wp-admin/js/tags-suggest.js	(working copy)
@@ -53,33 +53,14 @@
 
 				term = getLast( request.term );
 
-				$.get( window.ajaxurl, {
-					action: 'ajax-tag-search',
-					tax: taxonomy,
-					q: term
+				$.get( window.tagsSuggestL10n.rest_url, {
+					taxonomy: taxonomy,
+					search: term
 				} ).always( function() {
 					$element.removeClass( 'ui-autocomplete-loading' ); // UI fails to remove this sometimes?
 				} ).done( function( data ) {
-					var tagName;
-					var tags = [];
-
-					if ( data ) {
-						data = data.split( '\n' );
-
-						for ( tagName in data ) {
-							var id = ++tempID;
-
-							tags.push({
-								id: id,
-								name: data[tagName]
-							});
-						}
-
-						cache = tags;
-						response( tags );
-					} else {
-						response( tags );
-					}
+					cache = data;
+					response( data );
 				} );
 
 				last = request.term;
@@ -118,7 +99,7 @@
 			close: function() {
 				$element.attr( 'aria-expanded', 'false' );
 			},
-			minLength: 2,
+			minLength: window.tagsSuggestL10n.minChars,
 			position: {
 				my: 'left top+2'
 			},
Index: src/wp-includes/script-loader.php
===================================================================
--- src/wp-includes/script-loader.php	(revision 39474)
+++ src/wp-includes/script-loader.php	(working copy)
@@ -547,6 +547,15 @@
 			'termSelected' => __( 'Term selected.' ),
 			'termAdded'    => __( 'Term added.' ),
 			'termRemoved'  => __( 'Term removed.' ),
+			'rest_url'     => rest_url( '/wp/v2/tags' ),
+			/**
+			 * Filters the minimum number of characters required to fire a tag search via Ajax.
+			 *
+			 * @since 4.0.0
+			 *
+			 * @param int         $characters The minimum number of characters required. Default 2.
+			 */
+			'minChars'     => (int) apply_filters( 'term_search_min_chars', 2 ),
 		) );
 
 		$scripts->add( 'post', "/wp-admin/js/post$suffix.js", array( 'suggest', 'wp-lists', 'postbox', 'tags-box', 'underscore', 'word-count', 'wp-a11y' ), false, 1 );
