Строка
  • Документация
  • API
Начало работы
Руководства
    Поиск компанийФильтрыСправочникиЭкспорт и сохранение
Примеры
Справка
API ReferenceAPI
Руководства

Поиск компаний

Strokka API поддерживает текстовый поиск по смыслу и точному совпадению, SQL-выборку с сортировкой и комбинацию с фильтрами.

Режимы поиска (searchMode)

ЗначениеКогда использоватьОписание
autoПо умолчаниюБез search → sql; с search → hybrid
hybridРекомендуется для текстового поискаПолнотекст + вектор; сортировка по relevance
vectorТолько семантикаПоиск по смыслу, без текстового ранжирования
ftsТолько точные совпаденияПолнотекстовый поиск
sqlСписок без текстаОбычная выборка; доступна ручная сортировка
entityПоиск по сущностиСпециализированный режим (название, домен и т.д.)

Для большинства задач используйте searchMode=hybrid вместе с параметром search. В топ попадают компании с лучшим сочетанием текстового и смыслового совпадения.

В режимах с текстовым поиском (hybrid, vector, fts) параметры sortBy и sortOrder игнорируются — результаты отсортированы по релевантности.

Параметры GET-запроса

ПараметрТипПо умолчаниюОписание
searchstring—Текст поискового запроса
searchModestringautoРежим: auto, hybrid, vector, fts, sql, entity
skipinteger0Смещение пагинации
limitinteger50Размер страницы (1–1000)
sortBystring—Поле сортировки (только sql-режим)
sortOrderstringascasc или desc
relevanceThresholdfloat0.8Порог схожести в векторном поиске (0–1)
columnsstring[]—Явный список полей в ответе (см. ниже)
uniqueBystring[]—Дедупликация по email и/или phone (см. ниже)

Поля сортировки (только sql)

id · domain · name · sector · region · city · updated_at · email · employees

Примеры GET-запросов

Базовый поиск (hybrid)

TerminalCode
curl -sS --get "https://app.strokka.com/api/v1/companies" \ --data-urlencode "search=маркетинговое агентство" \ --data-urlencode "searchMode=hybrid" \ --data-urlencode "limit=10"

Список без текста (sql) + сортировка

TerminalCode
curl -sS --get "https://app.strokka.com/api/v1/companies" \ --data-urlencode "searchMode=sql" \ --data-urlencode "filter[city][eq][and]=Москва" \ --data-urlencode "sortBy=name" \ --data-urlencode "sortOrder=asc" \ --data-urlencode "limit=20"

Только векторный поиск

По умолчанию relevanceThreshold=0.8 — в выдачу попадают компании с семантической схожестью не ниже 0.8.

TerminalCode
curl -sS --get "https://app.strokka.com/api/v1/companies" \ --data-urlencode "search=производство мебели" \ --data-urlencode "searchMode=vector" \ --data-urlencode "limit=5"

Строже — только очень близкие по смыслу (relevance ≥ 0.86):

TerminalCode
curl -sS --get "https://app.strokka.com/api/v1/companies" \ --data-urlencode "search=производство мебели" \ --data-urlencode "searchMode=vector" \ --data-urlencode "relevanceThreshold=0.86" \ --data-urlencode "limit=5"

В режиме vector поле relevance в ответе — шкала 0–1 (семантическая близость). Подробнее — Ранжирование.

POST-запрос

Полный аналог GET, но параметры в JSON-теле. Удобен, когда в URL нежелательны квадратные скобки.

TerminalCode
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"} ] }'

Поля тела POST-запроса

ПолеТипОписание
searchstring?Текст поискового запроса
searchModestringРежим поиска (по умолчанию auto)
skipintСмещение (≥ 0)
limitintРазмер страницы (1–1000)
sortBystring?Поле сортировки (только sql)
sortOrderstringasc или desc
filtersarrayПравила фильтрации — см. Фильтры
relevanceThresholdfloat?Порог векторной схожести (0–1)
columnsstring[]?Явный список полей в companies[] (см. ниже)
uniqueBystring[]?Дедупликация по email / phone (см. ниже)

Выбор колонок (columns)

По умолчанию API возвращает стандартный набор полей (name, domain, sector, city, email, phone …). Чтобы явно указать, какие поля нужны в ответе (особенно в hybrid / vector с фильтрами), передайте параметр columns.

  • Без columns — поведение как раньше (автоподбор колонок).
  • С columns — строго указанные поля + служебные id и relevance (в текстовых режимах).
  • Неизвестное имя поля → 422.
  • Фильтры влияют только на выборку, не добавляют колонки в ответ автоматически.

GET

Повторите параметр или передайте список через запятую:

TerminalCode
curl -sS --get "https://app.strokka.com/api/v1/companies" \ --data-urlencode "search=логистика" \ --data-urlencode "searchMode=hybrid" \ --data-urlencode "limit=10" \ --data-urlencode "columns=name,description,keywords,email,phone,whatsapp" \ --data-urlencode "filter[region][contains][and]=Москов" \ --data-urlencode "filter[whatsapp][not_empty][and]=true"

POST

TerminalCode
curl -sS -X POST "https://app.strokka.com/api/v1/companies" \ -H "Content-Type: application/json" \ -d '{ "search": "логистика", "searchMode": "hybrid", "limit": 10, "columns": ["name", "description", "keywords", "email", "phone", "whatsapp"], "filters": [ {"field": "region", "operator": "contains", "value": "Москов", "logic": "and"}, {"field": "whatsapp", "operator": "not_empty", "value": "true", "logic": "and"} ] }'

В ответе смотрите 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

TerminalCode
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"

Два поля:

TerminalCode
curl -sS --get "https://app.strokka.com/api/v1/companies" \ --data-urlencode "search=логистика" \ --data-urlencode "searchMode=hybrid" \ --data-urlencode "uniqueBy=email,phone" \ --data-urlencode "limit=50"

POST

TerminalCode
curl -sS -X POST "https://app.strokka.com/api/v1/companies" \ -H "Content-Type: application/json" \ -d '{ "search": "производство", "searchMode": "hybrid", "limit": 100, "uniqueBy": ["email", "phone"], "filters": [ {"field": "email", "operator": "not_empty", "value": "true", "logic": "and"} ] }'

В ответе поле uniqueBy дублирует применённые поля, например ["email"].

Сочетайте filter[email][not_empty] + uniqueBy=email, чтобы сразу получить уникальные адреса. Для оценки объёма перед экспортом используйте limit=1 и смотрите totalCount.

Структура ответа

Code
{ "companies": [ { "id": 42, "name": "ООО «Пример»", "domain": "example.com", "city": "Москва", "email": "in**@example.com", "phone": "+7 (495) ***-**-**", "relevance": 0.85 } ], "totalCount": 1500, "skip": 0, "limit": 10, "searchMode": "hybrid", "normalized_query": "маркетинговое агентство", "timing": {"total": 0.12}, "cached": false, "columns": [{"key": "name", "label": "Название"}], "sortingMode": "relevance", "displayFields": ["name", "domain", "city", "email", "phone"], "columnProjection": "inferred", "appliedFilters": [], "uniqueBy": ["email"] }

Основные поля ответа

ПолеТипОписание
companiesarrayКарточки компаний (контакты с маской)
totalCountintegerОбщее число записей по условию
skip / limitintegerТекущая пагинация
searchModestringФактический режим: sql, hybrid, vector, fts, entity
normalized_querystring?Нормализованный текст запроса
relevancenumber?Технический балл ранжирования; чем выше — тем выше в выдаче1
timingobjectВремя этапов обработки (секунды)
cachedbooleanОтвет из кэша
columnsarrayМетаданные колонок для UI/экспорта
displayFieldsarray?Какие поля реально есть в companies[]
columnProjectionstring?Подбор колонок: inferred, explicit, minimal
uniqueByarray?Поля дедупликации, применённые к выдаче (email, phone)

Фильтр ≠ колонка в ответе (если не передан columns). Фильтр по whatsapp отбирает компании, но без columns поле whatsapp в карточках может не вернуться. Передайте "columns": [..., "whatsapp"] или см. Фильтры.

Для значений сектора, региона и города используйте справочники — поле filterValue в ответе.

Пагинация и сбор ID для экспорта

Максимальный limit — 1000. Чтобы собрать 5000 ID, обойдите страницы:

TerminalCode
# Страница 1 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" # Страница 2 curl -sS --get "https://app.strokka.com/api/v1/companies" \ --data-urlencode "search=маркетинговое агентство" \ --data-urlencode "searchMode=hybrid" \ --data-urlencode "limit=1000" \ --data-urlencode "skip=1000" # …повторяйте skip=2000, 3000, 4000, пока не соберёте все id

Подробнее о массовом экспорте — в Экспорт и Массовая выгрузка.

Поля карточки компании

ПолеТипОписание
idintegerИдентификатор (нужен для /export)
namestring?Название
domainstring?Домен сайта
urlstring?URL организации
descriptionstring?Описание
keywordsstring?Ключевые слова
sectorstring?Отрасль
employeesstring?Численность
region / citystring?География
email / phonestring?Контакты (с маской при поиске)
whatsapp / telegram / …string?Соцсети и мессенджеры
relevancenumber?Технический балл ранжирования — см. Ранжирование
distancenumber?Векторная близость (если рассчитана)
Нашли ошибку?

Связаться

Footnotes

  1. В vector — шкала ближе к 0–1; в hybrid при слиянии полнотекста и вектора — другая шкала (~0.016 у топа). См. Ранжирование и relevance. ↩

Last modified on July 3, 2026
АвторизацияФильтры
On this page
  • Режимы поиска (searchMode)
  • Параметры GET-запроса
    • Поля сортировки (только sql)
  • Примеры GET-запросов
    • Базовый поиск (hybrid)
    • Список без текста (sql) + сортировка
    • Только векторный поиск
  • POST-запрос
    • Поля тела POST-запроса
  • Выбор колонок (columns)
    • GET
    • POST
    • Доступные поля
  • Дедупликация (uniqueBy)
    • Допустимые поля
    • Как работает
    • GET
    • POST
  • Структура ответа
    • Основные поля ответа
  • Пагинация и сбор ID для экспорта
  • Поля карточки компании
  • Footnotes
JSON