Перейти к содержимому
Меньше рутины — больше продаж
+7 787 123 34 87 mail@uniseek.ru Пн–Пт с 9:00 до 18:00 МСК

Документация

Документация и API

Всё для интеграции: REST API поиска, подсказок, рекомендаций, AI-консультанта и аналитики.

Подключение занимает от нескольких часов. Авторизация во всех методах — заголовок X-API-Key с токеном из личного кабинета (страница «Профиль»). Все ответы — JSON в UTF-8.

Зарегистрируйтесь и получите API-токен в личном кабинете UniSeek
Загрузите каталог: YML, XML или CSV — через кабинет или POST /api/upload/
Подключите поиск на сайт — один GET-запрос к /api/search/
Добавьте маячок событий — и в кабинете появится CTR и конверсия поиска
GET /api/search/

Первый запрос — проверьте, что каталог ищется:

curl -H "X-API-Key: ВАШ_ТОКЕН" \
  "https://uniseek.ru/api/search/?q=пакет+майка&limit=20"
{"status": "success", "total": 20, "time": 0.4,
 "results": [{"id": "210013", "name": "...", "price": 8250,
   "in_stock": true, "url": "...", "image": "...", "score": 12.3}]}

Гибридный поиск (текстовый + векторный), исправление опечаток и раскладки, синонимы, буст товаров в наличии.

GET /api/search/?q=...&limit=40

Основной поиск. Параметры: q — запрос, limit — до 500 результатов.

&page=2 — постраничный поиск (с 1, по умолчанию 1). Соседние страницы не пересекаются между собой. В ответе — page, total_matches (сколько всего найдено) и has_more (есть ли следующая страница), чтобы не считать это на своей стороне.

curl -H "X-API-Key: ВАШ_ТОКЕН" \
  "https://uniseek.ru/api/search/?q=пакет&limit=20&page=2"
{"status": "success", "page": 2,
 "total_matches": 87, "has_more": true, "results": [...]}

&fields=id — быстрый режим: в ответе только id и score, без названия, описания и цены. При больших limit ответ заметно легче и быстрее — пригодится, если карточки товара вам не нужны, а нужны только id (например, для своей синхронизации или пагинации).

curl -H "X-API-Key: ВАШ_ТОКЕН" \
  "https://uniseek.ru/api/search/?q=пакет&limit=500&fields=id"
{"status": "success", "total": 500,
 "results": [{"id": "210013", "score": 12.3}, ...]}
Фасетные фильтры

Сужайте выдачу по каталогу: category и vendor — точные значения (через запятую — несколько вариантов, логика ИЛИ), price_min/price_max — диапазон цены, in_stock=1 — только товары в наличии. Значения для category/vendor лучше брать из facets (см. ниже), а не вводить вручную — category_path часто хранится полным путём («Категория > Подкатегория»).

curl -H "X-API-Key: ВАШ_ТОКЕН" \
  "https://uniseek.ru/api/search/?q=пакет&category=Пакеты+Zip-lock&price_max=500"

&facets=1 — вернуть варианты фильтров с количеством подходящих товаров по текущему q. Список не сужается по мере выбора фильтров — всегда полный набор опций для запроса, удобно строить блок фильтров на странице выдачи.

{"status": "success", ...,
 "facets": {"category": [{"value": "Пакеты Zip-lock", "count": 34}, ...],
   "vendor": [{"value": "Мактуба", "count": 9}, ...],
   "in_stock": {"true": 41, "false": 5},
   "price": {"min": 45.0, "max": 3200.0}}}
GET /api/search/suggest/?q=пак&limit=10

Мгновенные подсказки для выпадашки под поисковой строкой: популярные запросы вашего магазина (type=query, с частотой) и названия товаров (type=product, со ссылкой). Минимум 2 символа.

{"query": "пак", "suggestions": [
  {"text": "пакет майка", "type": "query", "count": 11},
  {"text": "Пакет ПВД 30*40", "type": "product", "url": "..."}]}
POST /api/search/image/

Поиск по фото: изображение (multipart, поле image, до 8 МБ) распознаётся ИИ в текстовый запрос, дальше обычный поиск. В ответе — recognized_query и results.

curl -H "X-API-Key: ВАШ_ТОКЕН" \
  -F "image=@photo.jpg" -F "limit=10" \
  https://uniseek.ru/api/search/image/

Рекомендации на векторах каталога и AI-консультант, который отвечает строго по данным товара.

GET /api/recommend/similar/?product_id=210013&limit=10

Похожие товары для блока в карточке: ближайшие аналоги по смыслу (векторная близость), товары в наличии выше. product_id — тот же id, что возвращает поиск.

{"status": "success", "product_name": "Рукав ПВД 40 см, 50 мкм",
 "results": [{"id": "210076", "name": "Рукав ПВД 40 см, 80 мкм", ...}]}
POST /api/assistant/ask/

AI-консультант в карточке товара. Параметры: product_id и question (form-data или JSON). Отвечает только на основе данных товара — характеристики, цена, наличие; не выдумывает.

curl -X POST -H "X-API-Key: ВАШ_ТОКЕН" \
  -d "product_id=210013" \
  -d "question=Какая толщина и есть ли в наличии?" \
  https://uniseek.ru/api/assistant/ask/

→ {"status": "success", "answer": "Толщина рукава — 50 мкм, товар в наличии."}

События превращают статистику в деньги: CTR, конверсия и выручка поиска. Плюс методы для синхронизации каталога и выгрузки аналитики.

GET|POST /api/search/event/

Маячок событий: type = click | add_to_cart | purchase, q — поисковый запрос, product_id, pos — позиция в выдаче, revenue — сумма для покупки. Всегда отвечает 204 и не задерживает страницу.

fetch('https://uniseek.ru/api/search/event/'
  + '?type=add_to_cart'
  + '&q=' + encodeURIComponent(query)
  + '&product_id=210013&revenue=8250',
  { headers: { 'X-API-Key': 'ВАШ_ТОКЕН' }, keepalive: true });
GET /api/stats/?period=day|month|year

Вся аналитика кабинета в JSON: тоталы с динамикой, CTR, скорость поиска, устройства, таймлайн, топы запросов и товаров. Дубли склеены, боты отфильтрованы.

POST /api/products/update/

Точечное обновление цен и остатков — сразу в базе и в поисковом индексе, без перезагрузки прайса. До 500 товаров за запрос.

curl -X POST -H "X-API-Key: ВАШ_ТОКЕН" -H "Content-Type: application/json" \
  -d '{"products": [{"id": "210013", "price": 8250, "in_stock": true}]}' \
  https://uniseek.ru/api/products/update/
POST /api/upload/

Загрузка прайса по расписанию: multipart-поле file (YML/XML/CSV) или параметр url. Ответ 202 с upload_id, обработка в фоне — статус по GET /api/upload/status/?id=...

Ранжирование и выдача настраиваются без разработчика — в личном кабинете UniSeek, раздел «Настройки поиска» (в меню слева). Изменения применяются сразу и сразу видны в ответах /api/search/ — переподключать сайт не нужно.

Приоритеты полей

Насколько совпадение запроса с полем товара весит при ранжировании: Название (0.5–50, по умолчанию 10), Бренд (0–50, по умолчанию 3), Категория (0–50, по умолчанию 3), Описание (0–50, по умолчанию 2). Например, если покупатели ищут по артикулу или модели, которая чаще встречается в описании, стоит поднять вес описания.

Наличие товара

Три режима: «не влияет на порядок», «товары в наличии выше» (с настраиваемым приоритетом 1–10, по умолчанию 1.3) и «скрывать отсутствующие» — этот последний режим убирает товары не в наличии из выдачи /api/search/ полностью, независимо от параметра in_stock в запросе.

Обработка запроса

Исправление опечаток: выключено / умеренно (рекомендуется) / агрессивно (до 2 ошибок в слове). Отдельно — переключатели «исправлять раскладку клавиатуры» и «использовать синонимы». Плюс список стоп-слов (через запятую или с новой строки) — игнорируются при поиске, полезно для слов вроде «купить», «цена», «недорого», которые не помогают найти товар.

Поведение покупателей

Если включено — товары, которые чаще кликают и покупают именно по этому запросу, поднимаются выше (приоритет кликов и покупок настраивается отдельно, 1–20, по умолчанию 3 и 6). Данные берутся из маячков /api/search/event/ — без них накапливать нечего.

Строгость выдачи

Отбрасывает результаты слабее N% от лучшего по релевантности (0–50%). 0 — показывать всё, включая слабо релевантное; 30–40% — только близкое к запросу. Влияет и на total_matches в ответе поиска.

Выдача и API

Результатов по умолчанию (1–500, по умолчанию 40) — используется, если запрос к /api/search/ пришёл без параметра limit. Похожих товаров в блоке (1–20, по умолчанию 8) — дефолт для /api/recommend/similar/. «Разрешить сортировку по цене» включает/выключает параметр sort=price_asc/price_desc в публичном API. Отдельно — «скрытые категории» (по одной на строку) — категории, полностью исключённые из поиска.

Закреплённые и скрытые товары, приоритет категорий

Закреплённые товары — товар всегда первый по конкретному запросу (для акций и приоритетных позиций), задаётся парой «запрос → артикул». Скрытые товары — конкретный товар не показывается в поиске, но остаётся в каталоге и доступен по прямой ссылке. Приоритет категорий — вся категория целиком поднимается выше остальных (множитель ×0.1–×10); понизить категорию так нельзя — для этого используйте «скрытые категории» или поднимите приоритет у конкурирующей категории.

API бесплатных инструментов UniSeek: открытые методы без ключа. Лимиты — по IP, у вошедших в кабинет выше. Это отдельно от API поиска на вкладках слева: там нужен токен X-API-Key.

Пинг онлайн

Проверка доступности сайта или IP-адреса: четыре замера времени отклика, потери, среднее и джиттер, плюс страна, город и провайдер.

GET/tools/api/host-ping/
ПараметрОбязательныйОписание
hostдаДомен или IP-адрес (IPv4 или IPv6), до 300 символов. Адреса из закрытых сетей не проверяются.
modeнетicmp — обычный пинг (по умолчанию), 443 или 80 — замер времени соединения с этим TCP-портом.
Пример запроса
curl "https://uniseek.ru/tools/api/host-ping/?host=uniseek.ru&mode=443"
Ответ
{"host": "uniseek.ru", "ip": "31.57.13.195", "version": 4, "mode": "tcp", "port": 443,
 "times": [0.09, 0.2, 0.16, 0.18], "sent": 4, "received": 4, "loss": 0,
 "min": 0.09, "avg": 0.16, "max": 0.2, "jitter": 0.06,
 "country": "Германия", "cc": "DE", "city": "Франкфурт-на-Майне", "provider": "SEBEK sp. z o.o"}
  • Ключ API не нужен. До 12 проверок в минуту с одного IP (для вошедших в кабинет — больше); при превышении — HTTP 429.
  • times — время каждой попытки в миллисекундах, null — попытка не прошла. Если все сервера проверки заняты, вернётся 503 — повторите через несколько секунд.
  • Заголовков CORS у этого метода нет: вызывайте его со своего сервера, а не из браузера.

Мой IP

IP-адрес вызывающего и сведения о нём по базе геолокации: страна, город, провайдер, автономная система, имя хоста. Можно проверить и чужой адрес.

GET/tools/api/my-ip/
ПараметрОбязательныйОписание
ipнетАдрес, который нужно проверить. Без параметра вернётся адрес того, кто сделал запрос.
Пример запроса
curl "https://uniseek.ru/tools/api/my-ip/?ip=8.8.8.8"

# только свой адрес текстом
curl https://uniseek.ru/tools/my-ip/
Ответ
{"ip": "8.8.8.8", "version": 4, "kind": "public", "country": "США", "cc": "US", "flag": "🇺🇸",
 "region": "Калифорния", "city": "Маунтин-Вью", "lat": 37.422, "lon": -122.085,
 "asn": 15169, "org": "Google LLC", "provider": "Google", "hosting": true, "hostname": "dns.google"}
  • Ключ API не нужен. Проверка чужого адреса (параметр ip) — до 30 запросов в минуту с одного IP; запрос своего адреса лимитом не ограничен.
  • kind — public для обычного адреса; для частных и служебных адресов геоданных нет. hosting: true — адрес принадлежит хостингу или дата-центру.
  • Короткие способы: curl uniseek.ru/tools/my-ip/ отвечает просто адресом, а /tools/my-ip/?format=json — то же, что этот метод. CORS разрешён для любых сайтов.

Калькулятор НДС

Выделяет НДС из суммы или начисляет сверху: ставки 22%, 20%, 10%, 7%, 5% и 0%.

GET или POST/tools/api/calc/vat/
ПараметрОбязательныйОписание
amountдаСумма в рублях, например 122000 или "122 000,50".
rateнетСтавка НДС, %: 22 (по умолчанию), 20, 10, 7, 5, 0.
modeнетextract — НДС уже в сумме (по умолчанию), add — начислить сверху.
Пример запроса
curl "https://uniseek.ru/tools/api/calc/vat/?amount=122000&rate=22&mode=extract"

# то же POST-запросом с JSON
curl -X POST https://uniseek.ru/tools/api/calc/vat/ \
  -H "Content-Type: application/json" \
  -d '{"amount": 100000, "rate": 22, "mode": "add"}'
Ответ
{"summary": "НДС 22%: 22 000,00 ₽",
 "rows": [["Сумма без НДС", "100 000,00 ₽"], ["НДС 22%", "22 000,00 ₽"], ["Сумма с НДС", "122 000,00 ₽"]],
 "values": {"net": "100000.00", "vat": "22000.00", "total": "122000.00"}}
  • Ключ API не нужен. До 120 запросов в минуту с одного IP; для вошедших в кабинет лимит выше.
  • Поля ответа: summary — итог одной строкой, rows — строки «название — значение», values — числа без форматирования, table и notes — разбивка по периодам и пояснения (если они есть у расчёта).
  • Ошибка в данных — HTTP 400 и {"error": "…"} с понятным текстом; лимит — 429. Заголовки CORS разрешают вызов из браузера с любого сайта.

Проценты по ст. 395 ГК

Проценты за пользование чужими деньгами по ключевой ставке Банка России с разбивкой по периодам.

GET или POST/tools/api/calc/interest395/
ПараметрОбязательныйОписание
amountдаСумма долга, ₽.
startдаДата начала просрочки, ГГГГ-ММ-ДД или ДД.ММ.ГГГГ.
endдаДата, по которую считать (или сегодня).
moratoriumнет1 — исключить период моратория на банкротство (по умолчанию 0).
Пример запроса
curl "https://uniseek.ru/tools/api/calc/interest395/?amount=100000&start=2026-01-10&end=2026-02-10"

# то же POST-запросом с JSON
curl -X POST https://uniseek.ru/tools/api/calc/interest395/ \
  -H "Content-Type: application/json" \
  -d '{"amount": 100000, "start": "2026-01-10", "end": "2026-02-10"}'
Ответ
{"summary": "Проценты по ст. 395 ГК: 1 402,74 ₽",
 "rows": [["Сумма долга", "100 000,00 ₽"], ["Дней просрочки в расчёте", 32], ["Проценты", "1 402,74 ₽"], ["Долг с процентами", "101 402,74 ₽"]],
 "table": {"headers": ["Период", "Дней", "Ключевая ставка", "Дней в году", "Проценты"],
           "rows": [["10.01.2026 — 10.02.2026", 32, "16,00%", 365, "1 402,74 ₽"]]},
 "notes": [], "values": {…}}
  • Ключ API не нужен. До 120 запросов в минуту с одного IP; для вошедших в кабинет лимит выше.
  • Поля ответа: summary — итог одной строкой, rows — строки «название — значение», values — числа без форматирования, table и notes — разбивка по периодам и пояснения (если они есть у расчёта).
  • Ошибка в данных — HTTP 400 и {"error": "…"} с понятным текстом; лимит — 429. Заголовки CORS разрешают вызов из браузера с любого сайта.

Пени по налогам

Пени за просрочку налогов и взносов: 1/300 ключевой ставки, для организаций с 31-го дня — 1/150.

GET или POST/tools/api/calc/taxpenalty/
ПараметрОбязательныйОписание
amountдаНедоимка, ₽.
dueдаСрок уплаты, ГГГГ-ММ-ДД или ДД.ММ.ГГГГ. Пени идут со следующего дня.
endдаДата уплаты (или сегодня).
payerнетorg — организация (по умолчанию), ip — ИП или физическое лицо.
Пример запроса
curl "https://uniseek.ru/tools/api/calc/taxpenalty/?amount=50000&due=2026-03-01&end=2026-05-01&payer=org"

# то же POST-запросом с JSON
curl -X POST https://uniseek.ru/tools/api/calc/taxpenalty/ \
  -H "Content-Type: application/json" \
  -d '{"amount": 50000, "due": "2026-03-01", "end": "2026-05-01", "payer": "org"}'
Ответ
{"summary": "Пени: 2 309,17 ₽",
 "rows": [["Недоимка", "50 000,00 ₽"], ["Дней просрочки", 61], ["Пени", "2 309,17 ₽"]],
 "table": {"headers": ["Период", "Дней", "Ключевая ставка", "Доля ставки", "Пени"], "rows": [[…]]},
 "values": {…}}
  • Ключ API не нужен. До 120 запросов в минуту с одного IP; для вошедших в кабинет лимит выше.
  • Поля ответа: summary — итог одной строкой, rows — строки «название — значение», values — числа без форматирования, table и notes — разбивка по периодам и пояснения (если они есть у расчёта).
  • Ошибка в данных — HTTP 400 и {"error": "…"} с понятным текстом; лимит — 429. Заголовки CORS разрешают вызов из браузера с любого сайта.

Калькулятор отпускных

Отпускные по среднему дневному заработку: до и после НДФЛ.

GET или POST/tools/api/calc/vacation/
ПараметрОбязательныйОписание
earningsдаЗаработок за расчётный период, ₽.
daysдаДней отпуска.
monthsнетПолных отработанных месяцев в периоде, 1–12 (по умолчанию 12).
Пример запроса
curl "https://uniseek.ru/tools/api/calc/vacation/?earnings=840000&days=28&months=12"

# то же POST-запросом с JSON
curl -X POST https://uniseek.ru/tools/api/calc/vacation/ \
  -H "Content-Type: application/json" \
  -d '{"earnings": 840000, "days": 28, "months": 12}'
Ответ
{"summary": "Отпускные: 66 894,24 ₽",
 "rows": [["Средний дневной заработок", "2 389,08 ₽"], ["Дней отпуска", 28], ["Отпускные до вычета НДФЛ", "66 894,24 ₽"],
          ["НДФЛ по ставке 13%", "8 696,25 ₽"], ["Отпускные на руки", "58 197,99 ₽"]],
 "notes": ["Формула: …"], "values": {…}}
  • Ключ API не нужен. До 120 запросов в минуту с одного IP; для вошедших в кабинет лимит выше.
  • Поля ответа: summary — итог одной строкой, rows — строки «название — значение», values — числа без форматирования, table и notes — разбивка по периодам и пояснения (если они есть у расчёта).
  • Ошибка в данных — HTTP 400 и {"error": "…"} с понятным текстом; лимит — 429. Заголовки CORS разрешают вызов из браузера с любого сайта.

Сумма прописью

Рубли, доллары, евро или тенге прописью с правильными падежами.

GET или POST/tools/api/calc/words/
ПараметрОбязательныйОписание
amountдаСумма, например 123456.78 или "123 456,78". До триллиона.
currencyнетRUB (по умолчанию), USD, EUR, KZT.
centsнетdigits — копейки цифрами (по умолчанию) или words — словами.
capitalнет1 — начинать с заглавной буквы (по умолчанию), 0 — со строчной.
Пример запроса
curl "https://uniseek.ru/tools/api/calc/words/?amount=123456.78&currency=RUB"

# то же POST-запросом с JSON
curl -X POST https://uniseek.ru/tools/api/calc/words/ \
  -H "Content-Type: application/json" \
  -d '{"amount": "123456.78", "currency": "RUB", "cents": "words"}'
Ответ
{"summary": "Сто двадцать три тысячи четыреста пятьдесят шесть рублей 78 копеек",
 "rows": [["Сумма", "123 456,78 ₽"], ["Прописью", "Сто двадцать три тысячи четыреста пятьдесят шесть рублей 78 копеек"]],
 "values": {"words": "Сто двадцать три тысячи четыреста пятьдесят шесть рублей 78 копеек"}}
  • Ключ API не нужен. До 120 запросов в минуту с одного IP; для вошедших в кабинет лимит выше.
  • Поля ответа: summary — итог одной строкой, rows — строки «название — значение», values — числа без форматирования, table и notes — разбивка по периодам и пояснения (если они есть у расчёта).
  • Ошибка в данных — HTTP 400 и {"error": "…"} с понятным текстом; лимит — 429. Заголовки CORS разрешают вызов из браузера с любого сайта.

Калькулятор НДФЛ

НДФЛ по прогрессивной шкале 13–22% с суммы или обратный расчёт: сколько начислить, чтобы получить на руки.

GET или POST/tools/api/calc/ndfl/
ПараметрОбязательныйОписание
amountдаСумма, ₽.
modeнетgross — НДФЛ с начисленной суммы (по умолчанию), net — сколько начислить, чтобы на руки была amount.
periodнетyear — сумма за год (по умолчанию) или month — за месяц (тогда в table — расчёт по месяцам).
residentнет1 — резидент (по умолчанию), 0 — нерезидент (30%).
deductionнетВычеты за тот же период, ₽.
Пример запроса
curl "https://uniseek.ru/tools/api/calc/ndfl/?amount=2500000&period=year"

# то же POST-запросом с JSON
curl -X POST https://uniseek.ru/tools/api/calc/ndfl/ \
  -H "Content-Type: application/json" \
  -d '{"amount": 100000, "period": "month"}'
Ответ
{"summary": "НДФЛ: 327 000,00 ₽, на руки 2 173 000,00 ₽",
 "rows": [["Начислено", "2 500 000,00 ₽"], ["НДФЛ", "327 000,00 ₽"], …],
 "values": {"gross": "2500000", "tax": "327000.00", "net": "2173000.00"}}
  • Ключ API не нужен. До 120 запросов в минуту с одного IP; для вошедших в кабинет лимит выше.
  • Поля ответа: summary — итог одной строкой, rows — строки «название — значение», values — числа без форматирования, table и notes — разбивка по периодам и пояснения (если они есть у расчёта).
  • Ошибка в данных — HTTP 400 и {"error": "…"} с понятным текстом; лимит — 429. Заголовки CORS разрешают вызов из браузера с любого сайта.

Калькулятор больничного

Пособие по временной нетрудоспособности: средний заработок за 2 года с предельными базами, процент по стажу, минимум из МРОТ.

GET или POST/tools/api/calc/sickpay/
ПараметрОбязательныйОписание
earn1даЗаработок за первый из двух лет, ₽.
earn2даЗаработок за второй год, ₽.
stazhнет8 — от 8 лет (100%, по умолчанию), 5 — 5–8 лет (80%), 0.5 — от 6 мес. до 5 лет (60%), 0 — меньше 6 месяцев.
daysнетДней болезни (по умолчанию 7).
yearнетГод болезни: 2026 (по умолчанию) или 2025.
rkнетРайонный коэффициент, по умолчанию 1.
startнетПервый день болезни, ГГГГ-ММ-ДД (нужен при стаже меньше 6 месяцев).
Пример запроса
curl "https://uniseek.ru/tools/api/calc/sickpay/?earn1=2000000&earn2=3000000&days=10"

# то же POST-запросом с JSON
curl -X POST https://uniseek.ru/tools/api/calc/sickpay/ \
  -H "Content-Type: application/json" \
  -d '{"earn1": 2000000, "earn2": 3000000, "stazh": "8", "days": 10}'
Ответ
{"summary": "Больничный: 65 191,80 ₽ за 10 дн. (6 519,18 ₽ в день)",
 "rows": [["Средний дневной заработок", "6 519,18 ₽"], …],
 "values": {"average": "6519.18", "daily": "6519.18", "total": "65191.80"}}
  • Ключ API не нужен. До 120 запросов в минуту с одного IP; для вошедших в кабинет лимит выше.
  • Поля ответа: summary — итог одной строкой, rows — строки «название — значение», values — числа без форматирования, table и notes — разбивка по периодам и пояснения (если они есть у расчёта).
  • Ошибка в данных — HTTP 400 и {"error": "…"} с понятным текстом; лимит — 429. Заголовки CORS разрешают вызов из браузера с любого сайта.

Калькулятор УСН

Налог УСН 6% или 15% по кварталам нарастающим итогом: авансы, уменьшение на взносы, минимальный налог, сроки.

GET или POST/tools/api/calc/usn/
ПараметрОбязательныйОписание
objнет6 — «доходы» (по умолчанию), 15 — «доходы минус расходы».
rateнетСтавка региона, %; по умолчанию 6 или 15.
payerнетip — ИП (по умолчанию), org — организация.
employeesнет1 — есть работники (уменьшение на взносы — не больше 50%).
inc1…inc4нетДоходы по кварталам, ₽.
exp1…exp4нетРасходы по кварталам, ₽ (для 15%).
con1…con4нетСтраховые взносы, уменьшающие налог, по кварталам, ₽ (для 6%).
Пример запроса
curl "https://uniseek.ru/tools/api/calc/usn/?obj=6&inc1=1000000&inc2=1000000&inc3=1000000&inc4=1000000&con1=15000&con2=15000&con3=15000&con4=30000"

# то же POST-запросом с JSON
curl -X POST https://uniseek.ru/tools/api/calc/usn/ \
  -H "Content-Type: application/json" \
  -d '{"obj": "15", "payer": "org", "inc1": 1000000, "inc2": 1000000, "inc3": 1000000, "inc4": 1000000, "exp1": 950000, "exp2": 950000, "exp3": 950000, "exp4": 980000}'
Ответ
{"summary": "УСН за год: 165 000,00 ₽",
 "table": {"headers": ["Период", …], "rows": [["1 квартал", "1 000 000,00 ₽", "60 000,00 ₽", "15 000,00 ₽", "45 000,00 ₽", "до 28 апреля"], …]},
 "values": {"year_tax": "165000.00"}}
  • Ключ API не нужен. До 120 запросов в минуту с одного IP; для вошедших в кабинет лимит выше.
  • Поля ответа: summary — итог одной строкой, rows — строки «название — значение», values — числа без форматирования, table и notes — разбивка по периодам и пояснения (если они есть у расчёта).
  • Ошибка в данных — HTTP 400 и {"error": "…"} с понятным текстом; лимит — 429. Заголовки CORS разрешают вызов из браузера с любого сайта.

Счёт на оплату

Счёт на оплату в PDF или Excel по данным, которые вы передаёте.

POST/tools/api/doc/invoice/
ПараметрОбязательныйОписание
fmtнетpdf (по умолчанию) или xlsx — формат файла.
numberдаНомер документа, до 40 знаков.
dateдаДата документа, ГГГГ-ММ-ДД.
seller / buyerдаОбъекты сторон: name (обязательно), inn (10 или 12 цифр, проверяется контрольное число), kpp, address, position, person, accountant.
itemsдаСписок позиций (до 40): name, qty (по умолчанию 1), unit, price.
vatнетОбъект {"mode": "none" | "included" | "added", "rate": "22"}. Ставки: 22, 20, 10, 7, 5, 0.
bankдаБанк получателя: name, bic (9 цифр), account (20 цифр), corr. Для счёта обязателен; ключ счёта проверяется по БИК.
basis, noteнетОснование и примечание (до 300 и 600 знаков).
qrнет1 — QR-код для оплаты в счёте (по умолчанию), 0 — без него.
Пример запроса
curl -X POST https://uniseek.ru/tools/api/doc/invoice/ \
  -H "Content-Type: application/json" \
  -d '{"number": "12", "date": "2026-10-17", "seller": {"name": "ООО Ромашка", "inn": "7707083893"}, "buyer": {"name": "ИП Иванов"}, "bank": {"name": "ПАО Сбербанк", "bic": "044525225", "account": "<20 цифр>"}, "items": [{"name": "Консультация", "qty": 2, "price": 5000}]}' \
  -o invoice.pdf
Ответ
Файл: Content-Type application/pdf (или xlsx-документ) и заголовок Content-Disposition: attachment.
Ошибка данных — HTTP 400 и {"error": "Заполните поле «Покупатель: название»"}.
  • Ключ API не нужен. До 30 запросов в минуту с одного IP; запрос — не больше 200 КБ (иначе 413). Ничего не сохраняется: файл строится и сразу отдаётся.
  • Заголовки CORS разрешают вызов из браузера с любого сайта. Документ справочный: реквизиты и суммы проверяйте перед отправкой контрагенту.

Акт

Акт выполненных работ или оказанных услуг в PDF или Excel.

POST/tools/api/doc/act/
ПараметрОбязательныйОписание
fmtнетpdf (по умолчанию) или xlsx — формат файла.
numberдаНомер документа, до 40 знаков.
dateдаДата документа, ГГГГ-ММ-ДД.
seller / buyerдаОбъекты сторон: name (обязательно), inn (10 или 12 цифр, проверяется контрольное число), kpp, address, position, person, accountant.
itemsдаСписок позиций (до 40): name, qty (по умолчанию 1), unit, price.
vatнетОбъект {"mode": "none" | "included" | "added", "rate": "22"}. Ставки: 22, 20, 10, 7, 5, 0.
bankнетБанковские реквизиты в акте не нужны.
basis, noteнетОснование и примечание (до 300 и 600 знаков).
qrнет1 — QR-код для оплаты в счёте (по умолчанию), 0 — без него.
Пример запроса
curl -X POST https://uniseek.ru/tools/api/doc/act/ \
  -H "Content-Type: application/json" \
  -d '{"number": "5", "date": "2026-10-17", "seller": {"name": "ООО Ромашка", "inn": "7707083893"}, "buyer": {"name": "ИП Иванов"}, "items": [{"name": "Консультация", "qty": 2, "price": 5000}]}' \
  -o act.pdf
Ответ
Файл: Content-Type application/pdf (или xlsx-документ) и заголовок Content-Disposition: attachment.
Ошибка данных — HTTP 400 и {"error": "Заполните поле «Покупатель: название»"}.
  • Ключ API не нужен. До 30 запросов в минуту с одного IP; запрос — не больше 200 КБ (иначе 413). Ничего не сохраняется: файл строится и сразу отдаётся.
  • Заголовки CORS разрешают вызов из браузера с любого сайта. Документ справочный: реквизиты и суммы проверяйте перед отправкой контрагенту.

УПД

Универсальный передаточный документ в PDF или Excel.

POST/tools/api/doc/upd/
ПараметрОбязательныйОписание
fmtнетpdf (по умолчанию) или xlsx — формат файла.
numberдаНомер документа, до 40 знаков.
dateдаДата документа, ГГГГ-ММ-ДД.
seller / buyerдаОбъекты сторон: name (обязательно), inn (10 или 12 цифр, проверяется контрольное число), kpp, address, position, person, accountant.
itemsдаСписок позиций (до 40): name, qty (по умолчанию 1), unit, price.
vatнетОбъект {"mode": "none" | "included" | "added", "rate": "22"}. Ставки: 22, 20, 10, 7, 5, 0.
bankнетБанковские реквизиты в УПД не обязательны.
basis, noteнетОснование и примечание (до 300 и 600 знаков).
qrнет1 — QR-код для оплаты в счёте (по умолчанию), 0 — без него.
Пример запроса
curl -X POST https://uniseek.ru/tools/api/doc/upd/ \
  -H "Content-Type: application/json" \
  -d '{"number": "7", "date": "2026-10-17", "upd_status": "1", "seller": {"name": "ООО Ромашка", "inn": "7707083893"}, "buyer": {"name": "ИП Иванов"}, "items": [{"name": "Консультация", "qty": 2, "price": 5000}]}' \
  -o upd.pdf
Ответ
Файл: Content-Type application/pdf (или xlsx-документ) и заголовок Content-Disposition: attachment.
Ошибка данных — HTTP 400 и {"error": "Заполните поле «Покупатель: название»"}.
  • Ключ API не нужен. До 30 запросов в минуту с одного IP; запрос — не больше 200 КБ (иначе 413). Ничего не сохраняется: файл строится и сразу отдаётся.
  • Заголовки CORS разрешают вызов из браузера с любого сайта. Документ справочный: реквизиты и суммы проверяйте перед отправкой контрагенту.

WHOIS домена

Регистратор, владелец, даты регистрации и оплаты, дата освобождения, DNS-серверы и статус домена, плюс полный ответ whois-сервера зоны.

GET/tools/api/whois/
ПараметрОбязательныйОписание
domainдаДомен, например uniseek.ru или магазин.рф. Для поддомена вернётся WHOIS основного домена.
Пример запроса
curl "https://uniseek.ru/tools/api/whois/?domain=uniseek.ru"
Ответ
{"domain": "uniseek.ru", "domain_u": "uniseek.ru", "server": "whois.tcinet.ru", "found": true,
 "registrar": "REGRU-RU", "org": "Private Person", "ns": ["ns1.reg.ru", "ns2.reg.ru"],
 "states": ["REGISTERED", "DELEGATED", "VERIFIED"], "created": "18.09.2026", "paid_till": "18.09.2027",
 "free_date": "19.10.2027", "age": "1 мес.", "days_left": 335, "raw": "…"}
  • Ключ API не нужен. До 12 запросов в минуту с одного IP (для вошедших в кабинет — больше); при превышении — HTTP 429.
  • found: false — whois-сервер зоны не нашёл домен (скорее всего, он свободен). Даты — в формате ДД.ММ.ГГГГ, пустая строка — поля нет в ответе.
  • Ввод — публичный домен (можно ссылкой: https://site.ru/page → site.ru). IP-адреса, внутренние зоны (.local, .lan …) и домены, ведущие во внутреннюю сеть, не проверяются — ответ 400 с {"error": "…"}. Ответ по одному домену кэшируется на 5 минут.
  • Заголовок CORS разрешает вызов из браузера с любого сайта.

Проверка SSL

Сертификат сайта на порту 443: действителен ли он для браузеров, срок действия, издатель, домены SAN, цепочка, версия TLS и шифр.

GET/tools/api/ssl-check/
ПараметрОбязательныйОписание
domainдаДомен сайта, например uniseek.ru. Проверяется только порт 443.
Пример запроса
curl "https://uniseek.ru/tools/api/ssl-check/?domain=uniseek.ru"
Ответ
{"host": "uniseek.ru", "ip": "31.57.13.195", "valid": true, "error": "", "status": "ok",
 "tls": "TLSv1.3", "cipher": "TLS_AES_256_GCM_SHA384", "issuer": "GlobalSign nv-sa",
 "sans": ["www.uniseek.ru", "uniseek.ru"], "from": "18.09.2026", "until": "05.04.2027", "days": 169,
 "covers_host": true, "covers_www": true, "chain": [{"cn": "…", "issuer": "…", "until": "…"}], "sha256": "A1:11:…"}
  • Ключ API не нужен. До 12 запросов в минуту с одного IP (для вошедших в кабинет — больше); при превышении — HTTP 429.
  • status: ok — всё в порядке, warn — меньше 14 дней до окончания или устаревший TLS, bad — браузер покажет ошибку (причина — в error).
  • Ввод — публичный домен (можно ссылкой: https://site.ru/page → site.ru). IP-адреса, внутренние зоны (.local, .lan …) и домены, ведущие во внутреннюю сеть, не проверяются — ответ 400 с {"error": "…"}. Ответ по одному домену кэшируется на 5 минут.
  • Заголовок CORS разрешает вызов из браузера с любого сайта.

DNS-записи

Записи A, AAAA, CNAME, MX, NS, TXT, SOA и CAA с TTL и разбор почтовых записей SPF и DMARC.

GET/tools/api/dns/
ПараметрОбязательныйОписание
domainдаДомен или поддомен, например uniseek.ru или shop.site.ru.
Пример запроса
curl "https://uniseek.ru/tools/api/dns/?domain=uniseek.ru"
Ответ
{"host": "uniseek.ru", "count": 6, "has_mx": false,
 "records": [{"type": "A", "ttl": "1 ч", "items": [{"value": "31.57.13.195"}]}, {"type": "MX", "ttl": "", "items": []}, …],
 "mail": {"spf": "", "spf_notes": [], "dmarc": "", "dmarc_notes": []}}
  • Ключ API не нужен. До 20 запросов в минуту с одного IP (для вошедших в кабинет — больше); при превышении — HTTP 429.
  • У MX в items есть prio — приоритет. spf_notes и dmarc_notes — пары [уровень, текст], уровень ok, warn или bad.
  • Ввод — публичный домен (можно ссылкой: https://site.ru/page → site.ru). IP-адреса, внутренние зоны (.local, .lan …) и домены, ведущие во внутреннюю сеть, не проверяются — ответ 400 с {"error": "…"}. Ответ по одному домену кэшируется на 5 минут.
  • Заголовок CORS разрешает вызов из браузера с любого сайта.

Заголовки ответа сервера

Код ответа и цепочка редиректов страницы, сжатие, кэширование, заголовки безопасности (HSTS, CSP, X-Frame-Options и др.) и флаги cookie.

GET/tools/api/headers/
ПараметрОбязательныйОписание
urlдаАдрес страницы, например uniseek.ru или https://site.ru/catalog/. Только порты 80 и 443.
Пример запроса
curl "https://uniseek.ru/tools/api/headers/?url=uniseek.ru"
Ответ
{"url": "https://uniseek.ru", "final": "https://uniseek.ru/", "status": 200, "ms": 85, "redirects": 1,
 "hops": [{"url": "…", "status": 301, …}], "checks": [["ok", "Сжатие gzip включено…"]],
 "sec": [{"name": "Strict-Transport-Security", "value": "max-age=…", "level": "ok"}, …], "cookies": [], "headers": [["Server", "nginx"], …]}
  • Ключ API не нужен. До 12 запросов в минуту с одного IP (для вошедших в кабинет — больше); при превышении — HTTP 429.
  • checks и notes — пары [уровень, текст], уровень ok, warn или bad. Значения cookie скрыты, видны только имена и флаги.
  • Проверяются только публичные адреса: внутренние сети, IP-адреса и нестандартные порты — ответ 400. Ответ по адресу кэшируется на 5 минут.
  • Заголовок CORS разрешает вызов из браузера с любого сайта.

Массовая проверка ответа сервера

Код ответа, конечный адрес и цепочка редиректов для списка страниц. Проверка идёт в фоне: запускаете её и забираете результат по номеру.

POST, затем GET/tools/api/bulk-status/
ПараметрОбязательныйОписание
urlsдаСписок адресов: массив или строка, адрес на строку. До 50 адресов (вошедшим — 100), не больше 5 разных сайтов.
Пример запроса
curl -X POST https://uniseek.ru/tools/api/bulk-status/ -H "Content-Type: application/json" \
  -d '{"urls": ["https://uniseek.ru/", "http://uniseek.ru/tools/"]}'
# → {"job": "AbC…", "total": 2}

curl https://uniseek.ru/tools/api/bulk-status/AbC…/
Ответ
{"status": "done", "done": 2, "total": 2, "rows": [
 {"url": "https://uniseek.ru/", "status": 200, "final_status": 200, "final_url": "https://uniseek.ru/", "chain": [200], "redirects": 0, "ms": 120, "error": ""}, …]}
  • Ключ API не нужен. До 4 запусков в минуту и 30 в час с одного IP; одновременно на сайте идут не больше 2 проверок — иначе HTTP 503.
  • Пока status = "running", в rows — уже проверенные адреса. Результат хранится 30 минут.
  • Проверяются только публичные адреса на портах 80 и 443; IP-адреса и внутренние зоны — ответ 400.

Обход страниц сайта и проверка каждой ссылки и картинки: битые (404, 5xx, сайт не отвечает), редиректы и ссылки «под вопросом» с адресами страниц, где они стоят. Проверка идёт в фоне: запускаете её и забираете результат по номеру.

POST, затем GET/tools/api/broken-links/
ПараметрОбязательныйОписание
urlдаАдрес сайта или страницы, с которой начать обход, например https://shop.ru/catalog/. Обходим только этот сайт (и его www-вариант).
externalнетfalse — не проверять внешние ссылки (по умолчанию true).
imagesнетfalse — не проверять картинки (по умолчанию true).
Пример запроса
curl -X POST https://uniseek.ru/tools/api/broken-links/ -H "Content-Type: application/json" \
  -d '{"url": "https://shop.ru/"}'
# → {"job": "AbC…", "max_pages": 100}

curl https://uniseek.ru/tools/api/broken-links/AbC…/
Ответ
{"status": "done", "start": "https://shop.ru/", "pages": 100, "checked": 707, "broken": 7, "warn": 2, "redirect": 16, "ok": 682,
 "limited": false, "timeout": false, "rows": [
 {"url": "https://shop.ru/old/", "kind": "broken", "code": 404, "error": "", "final": "",
  "internal": true, "tag": "a", "n": 3, "sources": [{"page": "https://shop.ru/", "text": "Старая страница"}]}, …]}
  • Ключ API не нужен. До 2 запусков в минуту и 5 в час с одного IP (вошедшим в кабинет — больше); одновременно на сайте идут не больше 2 проверок — иначе HTTP 503.
  • Пока status = "running", в ответе — ход проверки: pages (обойдено страниц), found, done и total (проверено ссылок). Результат хранится час.
  • kind: broken — 404/410/5xx или сайт не отвечает; warn — внешний сайт не пустил наш сервер (401, 403, 429, антибот), в браузере ссылка часто открывается; redirect — ссылка ведёт на другой адрес (конечный — в final). Обход — до 100 страниц (вошедшим до 300), всего до 1 500 адресов, из них до 300 внешних; при превышении limited = true. Ссылки, которые появляются только после выполнения JavaScript, не проверяются.
  • Проверяются только публичные адреса на портах 80 и 443; IP-адреса и внутренние зоны — ответ 400.

Курсы валют ЦБ

Официальные курсы иностранных валют Банка России на дату: код, название, номинал и курс в рублях.

GET/tools/api/cbr-rates/
ПараметрОбязательныйОписание
dateнетДата в формате ГГГГ-ММ-ДД, с 1992-07-01 по завтрашний день. Без параметра — сегодня.
Пример запроса
curl "https://uniseek.ru/tools/api/cbr-rates/?date=2026-10-17"
Ответ
{"date": "2026-10-17", "rates": {"USD": {"name": "Доллар США", "nominal": 1, "value": 80.1, "rate": 80.1}, "KZT": {"name": "Казахстанских тенге", "nominal": 100, "value": 16.2, "rate": 0.162}, …}}
  • Ключ API не нужен. До 30 запросов в минуту с одного IP; при превышении — HTTP 429.
  • date в ответе — дата курса ЦБ: на выходные и праздники действует последний установленный курс. rate — курс за одну единицу валюты.
  • Данные — с сайта cbr.ru, кэшируются на час (прошлые даты — на сутки). Заголовок CORS разрешает вызов из браузера.

Подсказки, стандартизация и реквизиты

Эти методы описаны подробно, с примерами и виджетом, на странице «Подсказки и стандартизация».

  • GET /tools/api/suggest/<вид>/ — Подсказки: address, bank, company, name, email — для виджетов на вашем сайте
  • POST /tools/api/clean/ — Стандартизация списка: телефоны, ФИО (с падежами), email
  • POST /tools/api/check/ — Проверка реквизитов: ИНН, КПП, БИК, счёт
  • GET /tools/api/bank/<БИК>/ — Банк по БИК
  • GET /tools/api/company/<ИНН>/ — Карточка компании по ИНН

Готовы автоматизировать магазин?

30 дней бесплатно, без привязки карты