Поиск компаний
Strokka API поддерживает текстовый поиск по смыслу и точному совпадению, SQL-выборку с сортировкой и комбинацию с фильтрами.
Режимы поиска (searchMode)
| Значение | Когда использовать | Описание |
|---|---|---|
auto | По умолчанию | Без search → sql; с search → hybrid |
hybrid | Рекомендуется для текстового поиска | Полнотекст + вектор; сортировка по relevance |
vector | Только семантика | Поиск по смыслу, без текстового ранжирования |
fts | Только точные совпадения | Полнотекстовый поиск |
sql | Список без текста | Обычная выборка; доступна ручная сортировка |
entity | Поиск по сущности | Специализированный режим (название, домен и т.д.) |
Для большинства задач используйте searchMode=hybrid вместе с параметром search. В топ попадают компании с лучшим сочетанием текстового и смыслового совпадения.
В режимах с текстовым поиском (hybrid, vector, fts) параметры sortBy и sortOrder игнорируются — результаты отсортированы по релевантности.
Параметры GET-запроса
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
search | string | — | Текст поискового запроса |
searchMode | string | auto | Режим: auto, hybrid, vector, fts, sql, entity |
skip | integer | 0 | Смещение пагинации |
limit | integer | 50 | Размер страницы (1–1000) |
sortBy | string | — | Поле сортировки (только sql-режим) |
sortOrder | string | asc | asc или desc |
relevanceThreshold | float | 0.8 | Порог схожести в векторном поиске (0–1) |
columns | string[] | — | Явный список полей в ответе (см. ниже) |
uniqueBy | string[] | — | Дедупликация по email и/или phone (см. ниже) |
Поля сортировки (только sql)
id · domain · name · sector · region · city · updated_at · email · employees
Примеры GET-запросов
Базовый поиск (hybrid)
Code
Список без текста (sql) + сортировка
Code
Только векторный поиск
По умолчанию relevanceThreshold=0.8 — в выдачу попадают компании с семантической схожестью не ниже 0.8.
Code
Строже — только очень близкие по смыслу (relevance ≥ 0.86):
Code
В режиме vector поле relevance в ответе — шкала 0–1 (семантическая близость). Подробнее — Ранжирование.
POST-запрос
Полный аналог GET, но параметры в JSON-теле. Удобен, когда в URL нежелательны квадратные скобки.
Code
Поля тела POST-запроса
| Поле | Тип | Описание |
|---|---|---|
search | string? | Текст поискового запроса |
searchMode | string | Режим поиска (по умолчанию auto) |
skip | int | Смещение (≥ 0) |
limit | int | Размер страницы (1–1000) |
sortBy | string? | Поле сортировки (только sql) |
sortOrder | string | asc или desc |
filters | array | Правила фильтрации — см. Фильтры |
relevanceThreshold | float? | Порог векторной схожести (0–1) |
columns | string[]? | Явный список полей в companies[] (см. ниже) |
uniqueBy | string[]? | Дедупликация по email / phone (см. ниже) |
Выбор колонок (columns)
По умолчанию API возвращает стандартный набор полей (name, domain, sector, city, email, phone …). Чтобы явно указать, какие поля нужны в ответе (особенно в hybrid / vector с фильтрами), передайте параметр columns.
- Без
columns— поведение как раньше (автоподбор колонок). - С
columns— строго указанные поля + служебныеidиrelevance(в текстовых режимах). - Неизвестное имя поля → 422.
- Фильтры влияют только на выборку, не добавляют колонки в ответ автоматически.
GET
Повторите параметр или передайте список через запятую:
Code
POST
Code
В ответе смотрите displayFields и columnProjection: "explicit" — там видно, какие поля реально вернулись.
Доступные поля
name · domain · url · description · keywords · sector · region · city · address · email · phone · whatsapp · telegram · vkontakte · instagram · youtube · tech_stack · dns_mail_provider · и другие — полный перечень в API Reference.
Русские синонимы тоже работают: почта → email, телефон → phone, вотсап → whatsapp.
Дедупликация (uniqueBy)
Параметр uniqueBy убирает повторы компаний с одинаковыми контактами в выдаче. Полезно перед экспортом аудиторий: один email или телефон — одна карточка.
Допустимые поля
Только email и phone. Другие поля (например domain) → 422.
Можно передать оба: uniqueBy=email&uniqueBy=phone или uniqueBy=email,phone.
Как работает
- Дедупликация выполняется после фильтрации и ранжирования, до пагинации (
skip/limit). totalCount— число уникальных записей с учётомuniqueBy.- Порядок выдачи сохраняется: остаётся первое вхождение по релевантности или сортировке.
- Пустой email/телефон не участвует в дедупе по этому полю (такая компания не «занимает» слот).
- Email сравнивается без учёта регистра; телефон — по цифрам (формат
+7 (495) …и8495…считаются одним номером). - Если указаны оба поля — дубликат отсекается при совпадении любого из них (логика OR).
GET
Code
Два поля:
Code
POST
Code
В ответе поле uniqueBy дублирует применённые поля, например ["email"].
Сочетайте filter[email][not_empty] + uniqueBy=email, чтобы сразу получить уникальные адреса. Для оценки объёма перед экспортом используйте limit=1 и смотрите totalCount.
Структура ответа
Code
Основные поля ответа
| Поле | Тип | Описание |
|---|---|---|
companies | array | Карточки компаний (контакты с маской) |
totalCount | integer | Общее число записей по условию |
skip / limit | integer | Текущая пагинация |
searchMode | string | Фактический режим: sql, hybrid, vector, fts, entity |
normalized_query | string? | Нормализованный текст запроса |
relevance | number? | Технический балл ранжирования; чем выше — тем выше в выдаче1 |
timing | object | Время этапов обработки (секунды) |
cached | boolean | Ответ из кэша |
columns | array | Метаданные колонок для UI/экспорта |
displayFields | array? | Какие поля реально есть в companies[] |
columnProjection | string? | Подбор колонок: inferred, explicit, minimal |
uniqueBy | array? | Поля дедупликации, применённые к выдаче (email, phone) |
Фильтр ≠ колонка в ответе (если не передан columns). Фильтр по whatsapp отбирает компании, но без columns поле whatsapp в карточках может не вернуться. Передайте "columns": [..., "whatsapp"] или см. Фильтры.
Для значений сектора, региона и города используйте справочники — поле filterValue в ответе.
Пагинация и сбор ID для экспорта
Максимальный limit — 1000. Чтобы собрать 5000 ID, обойдите страницы:
Code
Подробнее о массовом экспорте — в Экспорт и Массовая выгрузка.
Поля карточки компании
| Поле | Тип | Описание |
|---|---|---|
id | integer | Идентификатор (нужен для /export) |
name | string? | Название |
domain | string? | Домен сайта |
url | string? | URL организации |
description | string? | Описание |
keywords | string? | Ключевые слова |
sector | string? | Отрасль |
employees | string? | Численность |
region / city | string? | География |
email / phone | string? | Контакты (с маской при поиске) |
whatsapp / telegram / … | string? | Соцсети и мессенджеры |
relevance | number? | Технический балл ранжирования — см. Ранжирование |
distance | number? | Векторная близость (если рассчитана) |
Связаться
Footnotes
-
В
vector— шкала ближе к 0–1; вhybridпри слиянии полнотекста и вектора — другая шкала (~0.016 у топа). См. Ранжирование и relevance. ↩