Обычно делают задержку, которая отсчитывается от последнего нажатия на клавиатуре. Т.е. если пользователь продолжает вводить текст - таймаут не срабатывает и запрос не отправляется. Если после последнего нажатия прошло, к примеру, полсекунды и больше нажатий не было - запрос отправляет. Время таймаута по вкусу, чем он больше - тем меньше нагрузка, но соответственно интерфейс получается менее отзывчивым. Дергая чужой API, проверьте, не навернетесь ли с лимитами запросов, тут если что поможет больший таймаут и возможно кеширование на своей стороне.
В Jquery для автодополнения есть даже встроенная функция:
$( "#search-q" ).autocomplete({
source: '/actions/autocomplete/',
minLength: 2,
delay: 500,
select: function( event, ui ) {
}
});