Сбор B2B-базы из Яндекс.Карт и 2GIS: как формализовать процесс, чтобы не платить за списки от агрегаторов
Менеджер по продажам тратит 3-4 часа на сбор холодной базы из открытых карт. Заходит в Яндекс.Карты, копирует контакты в Excel, повторяет в 2GIS, чистит дубли руками. На задании «50 компаний из ниши X в районе Y» уходит полдня. Ниже - как описать процесс так, чтобы поручить его машине, и что для этого должно быть готово.

Разбираю на примере малого B2B - сегмента, где квалифицированный лид стоит от 800 рублей у агрегаторов и 0 рублей при самостоятельной сборке через открытые источники. Без программных деталей - только организационная часть: какой регламент нужен, какие условия должны сойтись внутри, чтобы сбор можно было передать на автомат.
Что отнимало время
Задача типовая: руководитель отдела продаж присылает в чат «давайте по стоматологиям в Бирюлёво, нужно человек 50», менеджер уходит выполнять. За эти 3-4 часа он:
Открывает Яндекс.Карты, ищет нишу в районе, прокручивает выдачу до конца.
Каждую карточку открывает по одной, копирует название, телефон, адрес в Excel.
Открывает 2GIS, делает то же самое для того же района.
Сводит два списка, ищет повторы глазами, объединяет дубли.
Чистит «мусорные» записи: компании без телефона, повторы под разными названиями, давно закрытые точки.
В цифрах: на одну выгрузку 50 компаний уходит 3-4 часа работы менеджера. При стабильном потоке холодных продаж набегает 60-80 часов в месяц - один человек только кликает по карточкам. В это время он не разговаривает с клиентами, не закрывает сделки и не ведёт CRM.
> *Главная проблема не в скорости, а в том, что человек не должен делать работу, для которой не нужны человеческие навыки. Скорость - следствие.*
До технологий - четыре условия, без которых ничего не получится.
1. Описанный шаблон задачи. У отдела продаж должен быть формализованный запрос. Не «давайте по стоматологиям», а три обязательных параметра:
Ниша - точная формулировка («стоматологическая клиника», а не «зубные»).
Локация - район, город или метро. Чем уже - тем чище выборка.
Лимит - сколько компаний ожидается (10 / 30 / 50 / 100 / 200).
Если эти три поля не описаны - автоматизация не запустится: на вход машине нечего подать.
2. Правила объединения дублей. Та же компания в Яндекс.Картах и 2GIS - один лид, не два. Регламент должен описать, по каким признакам две записи считать одной. *На практике рабочий комплект:*
Одинаковый телефон в формате `+7XXXXXXXXXX` (с нормализацией - убираем пробелы, скобки, заменяем «8» на «+7»).
Совпадение координат до четырёх знаков после запятой (это окно около 11 метров на местности).
Совпадение по любому из ключей - запись объединяется, пустые поля из одной дозаполняются из второй.
Без этих правил выгрузка получается с 30-40% дублей: оба источника знают один и тот же объект, но называют его по-разному.
3. Что считать «годным» контактом. Не любая карточка - лид. *Минимально:*
Есть телефон в рабочем формате (не «звонить через ВКонтакте»).
Не закрытая точка (поле «Закрыто навсегда» в Яндекс.Картах - отбрасываем).
Не дубль с уже отработанной базой (если она ведётся в CRM, нужна сверка по тому же ключу телефона).
4. Куда складывать результат. XLSX-файл с разнесением по листам:
Лист 1: что нашли в Яндекс.Картах (как есть, без обработки).
Лист 2: что нашли в 2GIS.
Лист 3 (Companies_Merged): объединённый список после удаления повторов - именно с ним работает отдел продаж.
Регламент должен прописать, кто получает файл (директор по продажам, в общий чат, на почту), как этот файл попадает в CRM (через ручную загрузку или автоматический парсер), как ставится отметка «отработано» на каждой строке.
Что нужно технически
Архитектура устроена просто и стоит копейки. Три компонента:
n8n - оркестратор процесса. Принимает запрос («стоматологии в Бирюлёво, до 50»), запускает сбор, отдаёт результат. Ставится на собственный сервер за 5 долларов в месяц.
Apify - сервис, который умеет ходить в Яндекс.Карты и 2GIS как настоящий пользователь и доставать данные карточек. Оплата по факту: около 30-50 копеек за запрос на 30+30 компаний.
Telegram-бот - простая обёртка для общения с менеджером. Менеджер отправляет в бот три параметра (ниша / город / лимит) и получает XLSX через 2 минуты.
Всё связывается между собой одним сценарием. На сборку с нуля у понимающего n8n человека уходит вечер. На разбор готового шаблона - 2-3 часа.
> *Простая схема: бот спрашивает три параметра - оркестратор зовёт два парсера параллельно - дедуп по нашим правилам - готовый XLSX обратно в чат. Скорости двух источников складываются, время сбора - максимум из двух, а не сумма.*
Цифры результата
На реальной выгрузке «стоматологии в Бирюлёво, до 30 точек из каждого источника»:
2 минуты 7 секунд - полное время от запроса до получения XLSX.
16 уникальных компаний - после удаления повторов.
7 из 16 - с указанным ИНН (берём из юридической справки 2GIS, поле появилось недавно).
16 из 16 - с телефоном.
~0,5 рубля - себестоимость одного прогона по тарифу Apify.
На больших объёмах - единицы рублей за тысячу компаний с телефонами и ИНН. Это в разы дешевле любой покупной базы и без вопросов «откуда у них наши данные» - всё с публичных карточек, которые компании сами разместили в открытом доступе.
Что было сложно
При первом запуске поймали пять технических ошибок за полтора часа. Почти все - из-за того, что свежие версии нод n8n разошлись с форматами параметров. На что обратить внимание:
Лимит длины ячейки XLSX. Apify возвращает массивы отзывов и категорий, которые после сериализации в строку могут превысить лимит 32 767 символов на ячейку. Без обрезки сборщик файла падает.
Параллельные пути в сценарии. Если у сценария два входа - через веб-запрос и через вызов из бота, нужно явно помечать поток метаданными и расставлять условные узлы. Иначе обращение к не-запускавшемуся узлу даёт ошибку.
Дедуп по координатам. Округление до четырёх знаков работает почти всегда. Сбой даёт случай, когда в одном здании на одном этаже сидят две организации с разными телефонами. Если такие коллизии важны - округлять до пяти знаков (точность примерно 1 метр).
Сценарий подходит везде, где локальный B2B ищется через карты:
Стоматологии, ветклиники, салоны красоты, фитнес-залы - сегментация «ниша + район метро».
Сервисы для бизнеса (юристы, бухгалтеры, кадры) - выборка по районам мегаполисов.
Холодные продажи в отраслях с географической привязкой - производство, общепит, розница.
Анализ конкурентов перед открытием своей точки - сколько в радиусе километра, какие рейтинги.
Не подходит для рынков, где компании в картах не представлены: e-commerce без физических точек, IT-аутсорс, удалённые услуги.
Открытый шаблон
Сценарий выложен в трёх зеркалах открытого репозитория - сценарий n8n, документация по нодам, пример выгрузки:
В репозитории есть `workflow.json` для импорта в свой n8n, `docs/architecture.md` с пошаговым разбором каждого узла, `.env.example` для токена доступа к Apify.
Импорт занимает минут пять: загрузить файл, привязать токен, активировать сценарий. Дальше к сценарию подключается свой Telegram-бот через `@BotFather` или прямой веб-запрос из CRM.
Если в команде нет человека, который сможет это собрать - регламент сбора B2B-базы из открытых источников всё равно полезен. Менеджер по-прежнему тратит 3-4 часа на контакты, но делает это по понятным правилам, а не «как получится».
Информации об авторе
Этот пост написан блогером Трибуны. Вы тоже можете начать писать: сделать это можно .
Начать дискуссию