Российским b2b-компаниям часто сложно находить новых клиентов и партнеров, отсеивать нерелевантные компании и анализировать рынок. Проще говоря, находить лиды.
Мы проанализировали существующие подходы и выделили несколько популярных решений:
-
Ручной поиск контактов.
-
Парсинг данных.
-
Покупка готовых «холодных» баз.
-
Запрос контактов у партнеров или схожих компаний.
У каждого из этих методов есть свои минусы. Ручной поиск — долгий и нудный, хотя, пожалуй, самый точный. Парсинг требует технической подготовки: нужны программисты, прокси, сервера. Готовые базы часто оказываются нерелевантными, а что делать, если нужен узкий сегмент? Ну, а последний метод и вовсе больше похож на эксперимент.
Мы обнаружили, что многие существующие сервисы имеют следующие проблемы:
-
предоставляют устаревшие данные
-
не поддерживают гибкую фильтрацию
-
имеют неподъемную стоимость для начинающего бизнеса
Решив исправить ситуацию, мы поставили перед собой задачу создать сервис, который:
-
объединяет доступ к актуальным открытым коммерческим контактам российских компаний;
-
предоставляет удобный, быстрый и глубокий поиск по множеству фильтров;
-
остается доступным по цене для начинающего бизнеса.
Дополнительной мотивацией стала новость о том, что зарубежный аналог Apollo.io (см. картинку) привлек очередной раунд инвестиций в размере 100 миллионов долларов, достигнув оценки в 1,6 миллиарда долларов. Это вдохновило нас на создание собственного, пусть и более скромного аналога на российский рынок.
Первый шаг: сбор данных
Мы начали с разработки стратегии сбора данных о компаниях. В процессе выделились два ключевых направления:
1. Открытые данные
-
ЕГРЮЛ (150 000 руб.).
-
ЕГРИП (150 000 руб.).
-
Сведения о доходах и расходах.
-
Информация о численности сотрудников.
-
Единый реестр субъектов малого и среднего предпринимательства.
-
Сведения об уплаченных налогах.
-
Данные о специальных налоговых режимах.
Эти источники обеспечили нас данными обо всех зарегистрированных компаниях и ИП в РФ, включая ключевую информацию: адреса, выручку, численность сотрудников и многое другое.
2. Парсинг сайтов компаний
Учитывая, что в современных реалиях практически у каждой компании имеется свой сайт (скорее всего даже у парикмахерской на первом этаже вашего дома), сбор всевозможных открытых данных с них выглядел разумно с точки зрения наполнения нашей потенциальной базы.
Мы начали собирать общедоступную информацию:
-
email-адреса;
-
телефонные номера;
-
ОГРН и ИНН;
-
социальные сети;
-
названия организаций;
-
мета-теги, заголовки и описания.
Анализ технологий
На этом этапе мы решили пойти дальше и начали анализировать код сайтов, чтобы выявить используемые технологические решения. Сейчас мы можем определять более 800 популярных технологий, представленных на российском рынке.
Зачем это нужно? Например, компании, создающие новые технологические решения, часто заинтересованы в поиске пользователей зарубежных аналогов, которые в условиях текущей обстановки могут лишиться поддержки. Мы хотели дать возможность за несколько секунд получить готовый список потенциальных клиентов с необходимыми контактами, без затрат времени на самостоятельный поиск.
Идея оказалась удачной, и мы успешно реализовали эту возможность.
Улучшение подхода к сбору данных
Анализируя результаты, мы быстро поняли, что сбор данных только с главной страницы сайтов недостаточен — слишком мало полезной информации. Решение напрашивалось само собой: расширить сбор данных на весь сайт, включая все уровни вложенности.
При этом мы осознавали, что массовый парсинг может создать нагрузку на веб-сайты, вплоть до их падения. Такой сценарий мы хотели исключить. Поэтому в угоду этическим принципам решили пожертвовать скоростью: вместо 2 дней процесс сбора данных растянулся на 30.
Тем не менее, результат стоил того. Мы собрали внушительное количество данных. Однако вместе с полезной информацией появились и нежелательные результаты — множество «мусорных» данных с сомнительных сайтов.
Очевидно, что в таком виде информация была бесполезна. Мы разработали подход к валидации данных, базирующийся на трёх принципах:
-
Исключение избыточных данных. Значения, повторяющиеся более двух раз (например, email или ОГРН), попадали в «чёрный список» и удалялись из базы.
-
Фильтрация по стоп-словам. Мы составили список из нескольких тысяч стоп-слов для выявления запрещённого или нерелевантного контента.
-
Проверка форматов. Все контакты и реквизиты проверялись на соответствие установленным шаблонам и форматам: email, телефон, ссылки, ИНН и т. д.
Результат: два независимых источника данных — открытые данные и информация с сайтов, которые пока не были между собой связаны.
База данных
Следующим этапом стало проектирование и разработка базы данных. Мы хотели, чтобы пользователи могли за несколько секунд получить сотни тысяч отсортированных результатов, поэтому проектирование базы данных требовало особого внимания к производительности и структуре.
Почти сразу выбор пал на PostgreSQL — мощную реляционную СУБД, которая идеально подходила для обработки больших объёмов данных.
Объединение данных
После внесения основной информации о компаниях и сайтах в БД, мы начали связывать данные, полученные из открытых источников, с информацией, собранной с сайтов. Основой для связывания послужили следующий принцип
-
Если на сайте присутствовал конкретный признак, четко позволяющий судить о принадлежности этого сайта к определенной компании (например, ОГРН, email или название), все собранные данные, включая контакты, привязывались к этой компании.
Результаты
После завершения этого этапа мы получили:
-
Общее количество контактов: около 12 миллионов.
-
Компаний с контактами: около 5 миллионов.
Исключая множество технических тонкостей и нюансов, именно так формировалась база данных нашего сервиса.
В этом моменте необходимо сделать уточнение — мы собирали только общедоступные данные, которые не являются персональными, соответственно их предоставление не нарушает законы РФ.
Веб-интерфейс
Следующим шагом стало создание веб-приложения с лёгким и понятным интерфейсом. Интерфейс должен был соответствовать ряду ключевых требований:
-
Удобный поиск компаний. Возможность фильтрации по различным критериям, включая узкоспециализированные параметры вроде даты регистрации или наличия лицензий.
-
Высокая скорость работы. Интерфейс должен обеспечивать выдачу тысяч целевых компаний всего за несколько секунд.
-
Интуитивная простота. Мы хотели, чтобы наш сервис подходил не только опытным специалистам из отделов продаж, но и начинающим предпринимателям, ищущим простой и удобный инструмент для поиска лидов.
-
Дополнительные возможности. Углублённый профиль компании, создание списков и экспорт данных в различных форматах (Excel, CSV, JSON, XML).
Первый подход: Django + чистый JavaScript
Изначально мы планировали разрабатывать проект на Django с использованием чистого JavaScript на фронтенде. Через две-три недели после появления первых демо-версий поиска стало очевидно – это была очень плохая идея – по второму пункту мы провалились полностью)
Почему? Одной из ключевых причин стали сложные структуры фильтров: многовложенные чекбоксы с разветвлённой логикой – чистый JS сдался практически сразу же.
Переход на React
Мы приняли решение использовать React.js, что полностью решило проблемы с производительностью и удобством интерфейса. Приложение стало «летать», пока его размер не начал существенно расти.
На этом этапе мы столкнулись с ещё одной проблемой: в качестве стейт-менеджера использовался React Context API, что оказалось крайне неудачным выбором. Осознав это, мы начали искать альтернативы.
Выбор стейт-менеджера
Redux был отброшен из-за сложности и низкой скорости разработки. В итоге остановились мы на MobX. Куча положительных отзывов и убедительные аргументы комментаторов под статьями на Хабре сделали свое дело.
Переход с React Context API на MobX прошёл гладко, а дальнейшая разработка стала заметно удобнее. Тем не менее, оглядываясь назад, мы, вероятно, выбрали бы Zustand как более простое и современное решение.
В итоге основная часть интерфейса сервиса была успешно разработана и соответствовала нашим требованиям.
Индивидуальные страницы компаний: решение для SEO
На этом этапе мы задумались: как привлекать потенциальных пользователей в наш сервис?
Решение пришло довольно быстро. Обилие собранной информации о компаниях позволило создать индивидуальные страницы для каждой из них. Мы предположили, что это будет удобно для пользователей — они смогут «пощупать» каждую компанию.
Представьте: 15 миллионов страниц, каждая с уникальной информацией о компании — от контактных данных до используемых технологий. Такой масштаб позволил бы значительно улучшить видимость сервиса в поисковых системах и увеличить посещаемость.
Мы реализовали эту идею: в нашем сервисе данные о любой компании можно посмотреть по адресу: https://--------.ru/[ОГРН/ОГРНИП].
На страницах доступны ключевые сведения о компании, а после регистрации пользователи получают доступ к дополнительным функциям, таким как:
-
добавление компании в списки,
-
открытие контактов,
-
экспорт данных.
Проблемы с SEO и переход на Next.js
Здесь мы столкнулись с серьёзной проблемой: React, используемый нами на фронтенде, не подходит для поисковой оптимизации, так как работает как SPA (Single Page Application).
Чтобы решить эту проблему, мы мигрировали приложение на Next.js.
Почему Next.js?
-
Отличные возможности для SEO: поддержка серверного рендеринга (SSR) и статической генерации (SSG).
-
Сегментация бандлов на части для повышения производительности.
-
Встроенная оптимизация изображений.
Лендинг мы тоже разработали на Next.js, что позволило обеспечить высокую скорость загрузки и отличное взаимодействие с пользователем.
Результаты разработки
В результате нашей работы мы создали удобный и функциональный сервис для поиска B2B-клиентов. Вот основные возможности, которые мы реализовали:
Доступ к 12 млн коммерческих контактов. В нашей базе 15 млн российских компаний с актуальной информацией, включая:
-
email,
-
телефоны,
-
соцсети,
-
сайты.
Поиск компаний по 14 фильтрам. Мы реализовали гибкую систему фильтрации, которая позволяет искать компании по таким параметрам, как:
-
география,
-
вид деятельности (ОКВЭД),
-
отрасль,
-
выручка,
-
количество сотрудников,
-
контакты,
-
уставный капитал,
-
дата регистрации,
-
организационная форма,
-
используемые технологии,
-
статус,
-
товарные знаки,
-
лицензии,
-
статус в реестре МСП.
Молниеносный и удобный интерфейс. Все действия выполняются быстро и без задержек. Поиск по фильтрам занимает всего 2-3 секунды. Выбираете критерии, нажимаете поиск, и данные уже готовы для выгрузки.
Простота и доступность. Интерфейс интуитивно понятен любому человеку вне зависимости от его уровня компетенции.
Дополнительные фичи. Мы внедрили функции, которые делают работу с сервисом ещё удобнее:
-
Экспорт данных: выгружайте полную информацию о компаниях (контакты, лицензии, технологии и многое другое) в форматах Excel, CSV, XML, JSON.
-
Формирование списков компаний: сохраните компании, с которыми хотите работать, или отслеживайте изменения в их данных.
-
История взаимодействий: доступ ко всем ранее открытым контактам, с возможностью экспорта и работы с ними.
-
Индивидуальные страницы компаний: каждая компания имеет собственный профиль, где собрана вся доступная информация.
Важный момент. Все данные, предоставляемые в сервисе собраны законным путем и являются общедоступными.
Потенциальные кейсы
Чтобы лучше понять, как наш сервис может быть полезен, давайте рассмотрим несколько конкретных сценариев его применения. Мы опустим очевидные примеры вроде «стоматологии в Москве» — с этим всё понятно, а вот интересные и более сложные кейсы заслуживают внимания.
Кейс 1: Поиск клиентов для разработчиков плагинов
Представьте: команда программистов создала новый плагин для WordPress, который оптимизирует сайты. Для справки: около половины сайтов в РФ работают на WordPress, так что аудитория огромна. Однако задача не просто найти клиентов, а максимально сузить выбор, чтобы сразу выйти на релевантные компании.
Ситуация усложняется тем, что зарубежные аналоги (например, WP Rocket или LiteSpeed) сейчас сложно оплачивать из-за ограничений, и пользователи активно ищут замену. Здесь наш сервис решает задачу:
1. Поиск клиентов, использующих зарубежные плагины. В фильтрах указываем компании, использующие WP Rocket и LiteSpeed.
2. Фильтрация по платежеспособности. Задаём фильтр по выручке: от 5 млн рублей. Это исключает мелкие компании, которые, вероятно, не заинтересованы в платных решениях.
3. Контакты для email-рассылки. Включаем фильтр «С Email», чтобы в списке остались только компании с доступными почтовыми адресами.
4. Экспорт готовой базы. После применения фильтров видим список компаний. Открываем нужное количество контактов, экспортируем в удобном формате — всё готово для email-рассылки или других маркетинговых активностей.
Результат: за несколько минут команда получает целевую базу потенциальных клиентов, готовых к диалогу.
Кейс 2: Лиды для компании по регистрации товарных знаков
Допустим, московская компания специализируется на помощи в регистрации товарных знаков. Их целевая аудитория — средние предприятия, а планируемый способ связи — холодные звонки.
С нашим сервисом подбор подходящих клиентов занимает буквально пару минут:
1. Товарные знаки. Выбираем только компании без товарных знаков, чтобы не попасть на тех, кто уже не нуждается в этих услугах. Не забудем – компания из Москвы – поэтому хотелось бы и клиентов рядом. Ставим в географии Москву.
2. Фильтруем компаний по размеру. Требуются компании средних размеров. Хорошо. Выбираем выручку от 50 млн до 500 млн, количество сотрудников от 10 до 40 и форму компании – «Юридическое лицо».
3. Дополнительные параметры. Размер компании также можно выбрать по уставному капиталу или статусу в реестре МСП – нам нужны средние предприятия:
4. Телефон. Включаем фильтр «С телефоном», чтобы в списке остались компании, доступные для холодных звонков.
5. Выгрузка данных. После применения всех фильтров получаем готовый список компаний. Открываем контакты, экспортируем в удобном формате и начинаем работу.
Заключение
Наш сервис упрощает поиск клиентов для бизнеса, экономит время и помогает анализировать рынок. Мы уверены, что он станет полезным инструментом для b2b-компаний. В том числе для начинающих бизнесов. В первую очередь, именно для них.
Будем рады вашим отзывам, предложениям и конструктивной критике! Поделитесь своими мыслями в комментариях — нам важно любое ваше мнение.
Спасибо за внимание!
Автор: ya-vnik