Подсказки при вводе
API автодополнения для форм. Пользователь вводит 2-3 символа — видит релевантные варианты. Ответ за <50ms, готовые виджеты для React и vanilla JS.
Запрос
GET /v1/suggest/name?query=иваОтвет
{
"suggestions": [
{"value": "Иванов", "count": 45000},
{"value": "Иванова", "count": 42000},
{"value": "Иван", "count": 38000},
{"value": "Ивановский", "count": 1200}
]
}Зачем нужно
Пользователи не любят заполнять формы:
- Ввод адреса целиком — 30-60 секунд
- Опечатки в каждой пятой форме
- Брошенные корзины из-за сложного чекаута
Подсказки ускоряют ввод в 3-5 раз и снижают количество ошибок на 80%. Результат — выше конверсия, меньше возвратов.
Попробуйте сами
Типы подсказок
ФИО
Подсказки фамилий, имён, отчеств. Справочник 150K+ записей, отсортированных по частотности.
/v1/suggest/nameАдреса
Подсказки из ФИАС. Регионы → города → улицы → дома. Фильтрация по геолокации.
/v1/suggest/addressВозможности
Быстрый ответ
<50ms (p95), оптимизировано для UX
Учёт популярности
Частые варианты выше в списке
Фильтрация по региону
Показывать адреса только нужного города
Геолокация
Приоритет адресов рядом с пользователем
Fuzzy-поиск
Находит даже с опечатками
Виджеты
Готовые компоненты для React и vanilla JS
Кастомизация
Настройка количества и формата подсказок
Debounce
Встроенная защита от лишних запросов
Примеры кода
curl
curl "https://api.humandata.ru/v1/suggest/name?query=ива" \ -H "Authorization: Bearer YOUR_API_KEY"
JavaScript (с debounce)
// Debounce для оптимизации запросов
let timeout;
input.addEventListener("input", (e) => {
clearTimeout(timeout);
timeout = setTimeout(async () => {
const query = e.target.value;
if (query.length < 2) return;
const response = await fetch(
`https://api.humandata.ru/v1/suggest/name?query=${query}`,
{ headers: { "Authorization": "Bearer YOUR_API_KEY" } }
);
const data = await response.json();
showSuggestions(data.suggestions);
}, 150);
});React (хук)
import { useState, useEffect } from "react";
import { useDebouncedValue } from "@/hooks/useDebounce";
function NameInput() {
const [query, setQuery] = useState("");
const [suggestions, setSuggestions] = useState([]);
const debouncedQuery = useDebouncedValue(query, 150);
useEffect(() => {
if (debouncedQuery.length < 2) return;
fetch(`/api/suggest/name?query=${debouncedQuery}`)
.then(r => r.json())
.then(data => setSuggestions(data.suggestions));
}, [debouncedQuery]);
return (/* ... */);
}Готовые виджеты
Не хотите писать код? Используйте готовые компоненты:
- React: npm-пакет @humandata/react-suggest
- Vanilla JS: подключение через CDN, один скрипт
- Стилизация: CSS-переменные для кастомизации
Частые вопросы
Сколько символов нужно для начала поиска?
Минимум 2 символа. При 1 символе слишком много вариантов, UX страдает.
Как настроить количество подсказок?
Параметр limit: /v1/suggest/name?query=ива&limit=5. По умолчанию 10, максимум 20.
Можно ли фильтровать адреса по региону?
Да. Параметр region_code: /v1/suggest/address?query=ленин®ion_code=77 (Москва). Также работает геолокация по IP.
Как считаются запросы к suggest?
Каждый HTTP-запрос = 1 запрос к лимиту. Рекомендуем debounce 150-300ms для оптимизации. При 60 WPM и debounce 200ms — ~5 запросов на поле.
Попробуйте бесплатно
1000 запросов в месяц — без оплаты. Достаточно для тестирования формы на лендинге.