README.md

n8n-сценарий парсинга Яндекс.Карт и 2ГИС с дедупом и Telegram-уведомлениями

Готовый workflow для n8n, который собирает контакты компаний параллельно из двух источников через Apify, дедуплицирует по композитному ключу phone + geohash, и отдаёт XLSX с тремя листами (Yandex / 2GIS / Merged). Сценарий двухтриггерный — работает и как HTTP-endpoint, и как sub-workflow для бот-обёртки.

Технические характеристики

  • Версия n8n: ≥ 1.50 (использует только встроенные ноды — никаких community-пакетов)
  • Внешние зависимости: Apify (платный или бесплатный план с лимитом 5 USD/мес)
  • Использованные ноды: Webhook, executeWorkflowTrigger, HTTP Request × 2, Set × 5, Merge, Code, Switch, Respond to Webhook
  • Логика дедупа: композитный ключ normalizePhone + geohash(lat, lon, precision=4)
  • Формат выгрузки: XLSX с тремя листами через xlsx@latest (встроен в Code-sandbox n8n)
  • Время выполнения: ~2 минуты на 500 контактов на одной запросе (узкое место — синхронный вызов Apify)

Установка

# 1. Импорт workflow.json
# UI: Workflows → Import from File → выбрать workflow.json

# 2. Создание HTTP Header Auth credential в n8n:
#    Имя: Apify Bearer
#    Заголовок: Authorization
#    Значение: Bearer apify_api_<ваш-токен>

# 3. Привязка credential к двум Apify-нодам
#    n8n предложит привязать при первом открытии после импорта

# 4. Активация workflow (тумблер в правом верхнем углу UI)

Тестовый вызов

curl -X POST "https://<n8n-host>/webhook/<path>" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "автосервисы Санкт-Петербург",
    "limit": 200
  }' \
  -o leads.xlsx

В ответе — бинарь XLSX. В нём три листа: исходные строки от Я.Карт, от 2ГИС, и объединённый список после дедупа.

Стек

Компонент Зачем Замена
n8n оркестратор можно собрать на Node + cron, но дольше писать
Apify акторы для Я.Карт и 2ГИС свой парсер на Playwright/Selenium (2–7 дней работы, постоянная поддержка)
HTTP Header Auth передача Bearer-токена можно вшить в URL, но безопасность хуже
Code-нода с xlsx сборка Excel n8n имеет встроенный Convert to File для XLSX без кода, но без контроля над структурой

Структура репозитория

Путь Что внутри
workflow.json сценарий, очищенный от инстанс-ID, готов к импорту
docs/architecture.md разбор по нодам, формат payload Apify, логика дедупа
.env.example переменные для запуска
LICENSE MIT

Каноничный кейс-стади

С разбором всех багов которые вылезли при сборке (5 штук — с инкорпорацией ИНН, нестабильным ответом Apify при больших limit, проблемой кодировки в XLSX) и финальным workflow по шагам — на delai.agency/avtomatizacii/leadgen-yandex-maps-2gis.

Pull Request приветствуется

  • Адаптация под другие источники (HH, Авито, отраслевые каталоги)
  • Альтернативные ключи дедупа (по ИНН, доменам сайтов)
  • Поддержка других форматов выгрузки (CSV, JSON, прямая запись в Google Sheets)
  • Метрики через Prometheus / OpenTelemetry
Описание
Maps Leadgen — Core
Конвейеры
0 успешных
0 с ошибкой
Разработчики