Как вытащить тысячи контактов из Google Maps с помощью google-maps-scraper
Когда мне впервые понадобилось собрать базу локальных заведений для клиентского проекта, я сразу пошел в официальный Google Places API. Через пару часов энтузиазм угас. Официальный API оказался слишком дорогим для объемной выгрузки. К тому же он жестко урезает выдачу до шестидесяти результатов на один квадрат поиска. Писать собственный парсер с нуля тоже сомнительное удовольствие. Разметка карт меняется регулярно, селекторы ломаются, а система защиты быстро вешает капчу.
Недавно наткнулся на открытый проект omkarcloud/google-maps-scraper, который набрал больше 3 тысяч звезд на GitHub. Автор упаковал парсинг карт в десктопную утилиту и открыл API для Python и Node.js. Давайте разберем, как это устроено и насколько инструмент удобен в реальной работе.

Что умеет этот скрейпер
Основная задача утилиты простая: вы вводите поисковый запрос (например, кофейни в Риме или автосервисы в Варшаве) и получаете чистую таблицу. Инструмент собирает не базовые три строчки, а до пятидесяти полей данных.
В итоговую выгрузку попадают:
- Название заведения, адрес и точные координаты на карте.
- Телефон, сайт и рабочий график на всю неделю.
- Рейтинг заведения, количество оценок и полный текст отзывов.
- Социальные сети и проверенные email адреса через встроенный модуль обогащения.

Если хотите увидеть приложение в действии, автор подготовил короткое минутное демо:
Стратегии поиска и работа с сеткой
Интерфейс Google Maps не выдаст вам 15 тысяч ресторанов мегаполиса одной длинной простыней. При обычной прокрутке страница упрется в лимит около ста пятидесяти точек. Чтобы вытащить максимум контактов, разработчики разбили сбор на несколько стратегий сканирования.
В приложении есть четыре основных режима работы с картой:
- Быстрый режим (Fast). Собирает от 120 до 1600 результатов на город за пару минут. Подходит для обзорного сбора по целой стране.
- Сверхбыстрый (Fastest). Экономит около тридцати секунд на город, но упускает часть редких карточек.
- Детальный поиск (Detailed). Сканирует город по мелким квадратам. Оптимален для глубокой проработки отдельного мегаполиса.
- Поиск по зуму (Zoom 15-18). Zoom 18 спускается до уровня отдельных улиц. Сбор крупного города в таком режиме займет три часа, зато отдаст свыше 10 000 точек.

Также можно очертить область поиска произвольным полигоном или передать точные координаты широты и долготы. Это выручает, когда нужно собрать данные строго внутри одного микрорайона или вдоль конкретной трассы.
Установка и запуск
Скрейпер доступен в виде сборок для macOS, Windows и Linux. Для корректной работы на компьютере должен стоять Google Chrome, так как утилита управляет браузером в фоновом режиме.

На Ubuntu 24.04 и новее запускать программу нужно через терминал:
googlemapsextractor --no-sandbox
В репозитории есть пятиминутное обучающее видео с разбором фильтров и форматов экспорта:
Интеграция в код через Python и Node.js
Десктопный интерфейс хорош для разовых выгрузок. Когда процесс нужно встроить в бэкенд, на помощь приходят библиотеки botasaurus-api для Python и botasaurus-desktop-api для Node.js.
Установка Python-пакета выполняется через стандартный менеджер:
pip install botasaurus-api
Пример отправки задачи на сбор данных из Python:
from botasaurus_api import Api
# Подключаемся к локальному экземпляру скрейпера
api = Api("http://localhost:8000")
# Запускаем сбор
task = api.create_task(
scraper="google_maps_scraper",
data={
"query": "coworking in London",
"max_results": 200,
"search_strategy": "fast"
}
)
# Забираем готовые данные
results = task.get_results()
print(f"Успешно выгружено записей: {len(results)}")
Такая связка дает возможность поднять скрейпер на виртуальной машине в AWS или GCP и отправлять запросы по расписанию через cron или вебхуки.
Обогащение контактов
Телефонные номера в профилях карт часто ведут на общую стойку регистрации. Чтобы найти прямые контакты владельцев или маркетологов, в инструмент интегрировали модуль обогащения данных (Enrichment).
Процесс устроен следующим образом:
- Скрейпер берет адрес сайта из карточки Google Maps.
- Сервис обходит страницы сайта и извлекает корпоративные email адреса с проверкой доставляемости.
- Модуль подтягивает ссылки на страницы компании в социальных сетях.
- Проверяется тип телефонного номера, чтобы отсеять городские стационарные линии от мобильных.


После включения опции таблица результатов заполняется дополнительными колонками:

Тарифы и условия
В проекте действует гибридная модель. Базовый тариф дает 200 бесплатных поисковых сессий в месяц без ввода платежных данных. С учетом того, что один поиск отдает сотни контактов, этого объема хватает примерно на двадцать тысяч лидов ежемесячно.
Сетка тарифов выглядит так:
- Бесплатный план включает 200 поисков каждый месяц.
- План Starter за $16 в месяц расширяет лимит до 5 000 поисков.
- План Unlimited за $48 в месяц снимает ограничения на объем запросов.
- Студентам и начинающим предпринимателям с ограниченным бюджетом автор открывает 12 месяцев бесплатного доступа по прямому запросу на почту или в WhatsApp.
На платных тарифах возврат средств оформляется в два клика прямо из личного кабинета:
Для связи с разработчиками автор оставил прямые каналы поддержки:
Кому пригодится утилита
Инструмент решает прикладную задачу, когда платить за дорогие облачные платформы парсинга вроде Apify не хочется, а писать собственный браузерный обходчик некогда.
Проект оценят:
- Разработчики, собирающие локальные датасеты для своих сервисов.
- Основатели стартапов, которым нужны первые B2B клиенты в конкретном городе.
- Аналитики данных для оценки плотности инфраструктуры и конкурентной среды.
- Маркетологи, формирующие базы прямых контактов для холодных рассылок.
Исходный код и документация по развертыванию доступны в репозитории проекта. Попробовать сбор можно локально буквально за пять минут.





