Поиск компаний
Режимы hybrid, sql, vector, fts и entity — параметры, колонки, дедуп и структура ответа.
На этой странице
Строка API ищет по смыслу и по точному совпадению, умеет SQL-выборку с сортировкой и сочетается с фильтрами.
Режимы (searchMode)
| Значение | Когда | Что делает |
|---|---|---|
hybrid | По умолчанию, если есть search | Полнотекст + вектор, сортировка по relevance |
vector | Только семантика | Поиск по смыслу |
fts | Только точные совпадения | Полнотекстовый поиск |
sql | Список без текста | Фильтры и ручная сортировка |
entity | Поиск по сущности | Название, домен и похожие поля |
Если searchMode не задан: при наличии search используется hybrid, без текста — sql. Значение auto — синоним этого правила. Параметр expandSemantics игнорируется.
Параметры GET
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
search | string | — | Текст запроса |
searchMode | string | hybrid / sql | См. таблицу режимов |
skip | integer | 0 | Смещение |
limit | integer | 100 | Размер страницы, 1–1000 |
sortBy | string | — | Сортировка, только sql |
sortOrder | string | asc | asc или desc |
relevanceThreshold | float | 0.8 | Порог векторной схожести (0–1) |
columns | string[] | — | Явный список полей |
uniqueBy | string[] | — | Дедуп по email и/или phone |
mergeDuplicates | boolean | true | Склейка дублей на странице |
Поля сортировки (sql): id · domain · name · sector · region · city · updated_at · email · employees.
Примеры GET
curl -sS --get "https://app.strokka.com/api/v1/companies" \
--data-urlencode "search=маркетинговое агентство" \
--data-urlencode "searchMode=hybrid" \
--data-urlencode "limit=10"POST
Полный аналог GET, параметры в JSON. Удобен, когда в URL нежелательны скобки.
curl -sS -X POST "https://app.strokka.com/api/v1/companies" \
-H "Content-Type: application/json" \
-d '{
"search": "веб-студия",
"searchMode": "hybrid",
"skip": 0,
"limit": 10,
"filters": [
{"field": "email", "operator": "not_empty", "value": "true", "logic": "and"},
{"field": "city", "operator": "eq", "value": "Москва", "logic": "and"}
]
}'Выбор колонок (columns)
По умолчанию API отдаёт стандартный набор (name, domain, url, description, keywords, sector, region, city, address, email, phone). Активные фильтры могут добавить колонки.
С columns — строго указанные поля плюс служебные id и relevance. Неизвестное имя → 422. Колонки из текста запроса сами не подбираются — только из columns.
curl -sS --get "https://app.strokka.com/api/v1/companies" \
--data-urlencode "search=логистика" \
--data-urlencode "searchMode=hybrid" \
--data-urlencode "columns=name,description,keywords,email,phone,whatsapp" \
--data-urlencode "filter[whatsapp][not_empty][and]=true" \
--data-urlencode "limit=10"В ответе смотрите displayFields и columnProjection: "explicit".
Русские синонимы работают: почта → email, телефон → phone, вотсап → whatsapp.
Дедупликация (uniqueBy)
Убирает повторы с одинаковыми контактами до пагинации. Допустимы только email и phone. Другие поля → 422.
totalCount— число уникальных записей- Остаётся первое вхождение по релевантности
- Пустой контакт не участвует в дедупе
- Email сравнивается без регистра, телефон — по цифрам
- Два поля — логика OR
curl -sS --get "https://app.strokka.com/api/v1/companies" \
--data-urlencode "searchMode=sql" \
--data-urlencode "filter[email][not_empty][and]=true" \
--data-urlencode "uniqueBy=email" \
--data-urlencode "limit=100"Склейка дублей (mergeDuplicates)
Склеивает похожие карточки внутри текущей страницы по URL, email, телефону или соцсетям. По умолчанию true. Не путать с uniqueBy: merge не меняет totalCount.
| Значение | Результат |
|---|---|
true | Дубли схлопываются, у keeper может появиться comment |
false | Старый формат без comment; в ответе "mergeDuplicates": false |
curl -sS --get "https://app.strokka.com/api/v1/companies" \
--data-urlencode "search=сбербанк" \
--data-urlencode "searchMode=hybrid" \
--data-urlencode "mergeDuplicates=false" \
--data-urlencode "limit=30"Структура ответа
{
"companies": [
{
"id": 42,
"name": "ООО «Пример»",
"domain": "example.com",
"email": "in**@example.com",
"relevance": 0.85
}
],
"totalCount": 1500,
"skip": 0,
"limit": 10,
"searchMode": "hybrid",
"normalized_query": "маркетинговое агентство",
"displayFields": ["name", "domain", "email"],
"columnProjection": "inferred"
}| Поле | Описание |
|---|---|
companies | Карточки (контакты с маской) |
totalCount | Число записей по условию |
searchMode | Фактический режим |
relevance | Балл ранжирования; в hybrid у топа ~0.016, в vector ближе к 0–1 |
uniqueBy | Применённые поля дедупа |
mergeDuplicates | false, если склейка выключена |
Пагинация и сбор ID
Максимальный limit — 1000. Чтобы собрать 5000 ID:
curl -sS --get "https://app.strokka.com/api/v1/companies" \
--data-urlencode "search=маркетинговое агентство" \
--data-urlencode "searchMode=hybrid" \
--data-urlencode "limit=1000" \
--data-urlencode "skip=0"Дальше skip=1000, 2000, … См. Массовая выгрузка.
Поля карточки
| Поле | Описание |
|---|---|
id | Идентификатор для /export |
name / domain / url | Название и сайт |
description / keywords | Текст |
sector / region / city / address | Классификация и гео |
email / phone | Контакты (с маской в поиске) |
whatsapp / telegram / … | Мессенджеры и соцсети |
tech_stack | Стек сайта { category, technologies[] } — через columns или фильтр tech |
comment | Причина merge, только у склеенных строк |