Как парсить отзывы Google Maps: Places API, Python или API данных
Places API возвращает не более 5 отзывов на место. Мы протестировали три способа, посчитали их стоимость за 1 000 отзывов и делимся экспортёром в CSV на Python.

У стоматологической клиники в Остине (Техас) в карточке Google Maps рейтинг 4.6 звезды. Средняя оценка её 200 последних отзывов составляет 4.305 звезды, а 13% из них поставили одну звезду. В официальном Places API этого разрыва не видно: он возвращает не более пяти отзывов на место, отобранных по релевантности. 2 ноября 2026 года мы проверили три способа получить компании и отзывы из Google Maps. Это официальный Places API, самописный парсер на Python и API данных с оплатой за каждый вызов. В руководстве показано, что возвращает каждый способ, сколько он стоит за 1 000 отзывов и где перестаёт работать.

Данные из отзывов с каждым месяцем становятся важнее. 8 октября 2026 г. Google опубликовал первые подборки Fan-Favorite Dining Lists, составленные на основе отзывов, оценок и запросов на построение маршрута [18]. 21 октября 2026 г. в Google Maps появились диалоги с Gemini в Apple CarPlay [19]. Search Engine Land приводит данные Google: Ask Maps может использовать отзывы более чем 500 миллионов авторов [20].
Всё больше людей поручают ИИ читать отзывы и выдавать ответ. Поэтому важно, какие отзывы читает ИИ и что говорится в свежих отзывах. Именно поэтому в этом руководстве самые новые отзывы и отзывы, отсортированные по релевантности, рассматриваются отдельно.
Сначала определитесь, что вам нужно
Люди, которые ищут, как парсить Google Maps, решают очень разные задачи. Отделу продаж нужны название, телефон, сайт и рейтинг каждой стоматологии в агломерации. Владельцу франшизы нужны все отзывы о 40 точках, чтобы быстро отвечать на жалобы. Продуктовой команде нужны отзывы о конкуренте с оценкой в одну звезду за последний квартал.
Исследователю нужно распределение оценок 500 ресторанов в одном районе. Только первая задача сводится к списку компаний. Для остальных трёх нужны отзывы, и подходящий способ определяют количество отзывов, диапазон дат и владелец карточки.
Поэтому, прежде чем сравнивать цены, ответьте на три вопроса. Первый: сколько отзывов вам нужно на одно место и хватит ли пяти? Второй: являются ли эти места вашими собственными подтверждёнными точками в Google Business Profile? Третий: готов ли кто-то в вашей команде годами поддерживать браузерный парсер и пул прокси? Блок-схема ниже разделяет способы по этим трём вопросам. В каждом следующем разделе один способ проверяется реальными запросами или построчным разбором официальной документации.
Business Profile API включён в схему, потому что о нём забывают многие команды. Владельцам подтверждённых точек Google предоставляет API, который выдаёт все их отзывы [11]. Отзывы можно сортировать по оценке или времени обновления; на одной странице выводится до 50 отзывов [12]. Для работы нужны согласие пользователя через OAuth и подтверждённая точка.
Читать отзывы о конкурентах он не умеет. В таблице ниже четыре подхода сравниваются бок о бок. Каждая ячейка — факт, который мы проверяем или сверяем далее в этом руководстве.
| Подход | Отзывов на место | Порядок и пагинация | Стоимость за 1 000 отзывов | Основная издержка |
|---|---|---|---|---|
| Официальный Places API (Place Details) | До 5 | Только по релевантности, без пагинации | $0 в пределах бесплатного лимита, затем около $5,00 | Жёсткий лимит, обязательно указывать авторство |
| Business Profile API | Все отзывы, но только для ваших точек | По оценке или времени обновления, 50 на страницу | $0 | Только ваши подтверждённые точки |
| Самописный парсер на Python с браузером | Столько, сколько показывает страница | Имитация прокрутки | Серверы и прокси оплачиваются дополнительно | Изменения страницы, риск нарушения условий |
| API данных EveryInfra | 400 записей для каждого порядка сортировки, 100 за вызов | Сначала новые или по релевантности, токены страниц | $0,01389 при 100 отзывах за вызов | Оплата за вызов, асинхронно после 200 записей |
Путь 1: что даёт официальный Places API
Начнём с самого Google. В Places API (New) у ресурса Place есть поле reviews. В справочнике оно описано как список отзывов о месте, отсортированный по релевантности. Там же сказано, что может быть возвращено не более пяти отзывов [1]. Ограничение не зависит от тарифного уровня. Токена страницы для отзывов тоже нет. Мы сделали скриншот этой строки и выделили её бирюзовой рамкой.

Запрос простой. Place Details (New) — это GET-запрос с ID места в пути и обязательной маской полей в заголовке [2]. Маска полей сообщает Google, какие поля вам нужны. Ниже — пример конфигурации на основе официальной документации. С ключом Google мы его не запускали.
# Configuration example (not run): rating, review count and up to 5 reviews for one place
curl -s "https://places.googleapis.com/v1/places/ChIJl6T2cnbMRIYR7eD538S3oWU" \
-H "X-Goog-Api-Key: $GOOGLE_MAPS_API_KEY" \
-H "X-Goog-FieldMask: displayName,rating,userRatingCount,reviews"От маски полей зависит стоимость запроса. Google тарифицирует каждый запрос по SKU самого дорогого поля в маске. Поле reviews относится к SKU Place Details Enterprise + Atmosphere, поэтому любой запрос, в котором запрашиваются отзывы, оплачивается по этой ставке [3][5]. 1 марта 2025 г. Google заменил прежний ежемесячный кредит в размере $200 бесплатными лимитами для каждого SKU.
Месячные лимиты составляют 10 000 вызовов для SKU Essentials, 5 000 для Pro и 1 000 для Enterprise [4]. Мы сверялись с прайс-листом 2 ноября 2026 года. На странице обзора биллинга указано, что она последний раз обновлялась 2026-10-30 [4]. В таблице приведены позиции, важные для этого руководства, в долларах США за 1 000 запросов.
| SKU (Places API New) | Бесплатно в месяц | До 100 тыс. | 100–500 тыс. | 500 тыс.–1 млн | 1–5 млн | Свыше 5 млн |
|---|---|---|---|---|---|---|
| Place Details Pro | 5,000 | $17.00 | $13.60 | $10.20 | $5.10 | $1.28 |
| Place Details Enterprise | 1,000 | $20.00 | $16.00 | $12.00 | $6.00 | $1.51 |
| Place Details Enterprise + Atmosphere (с отзывами) | 1,000 | $25.00 | $20.00 | $15.00 | $7.50 | $2.28 |
| Text Search Pro | 5,000 | $32.00 | $25.60 | $19.20 | $9.60 | $2.40 |
| Text Search Enterprise + Atmosphere | 1,000 | $40.00 | $32.00 | $24.00 | $12.00 | $3.40 |
По этой таблице один вызов Place Details стоит $0.025 и возвращает не более пяти отзывов. На первом платном уровне это $5.00 за 1 000 отзывов. При объёме свыше пяти миллионов вызовов в месяц ставка снижается до $2.28 за 1 000 вызовов, но это всё равно $0.456 за 1 000 отзывов. Бесплатный лимит тоже важен. Если вам нужно по пять отзывов для каждого из 1 000 мест в месяц, официальный API ничего не стоит. Мы вернёмся к этому случаю в разделе о том, когда лучше выбрать официальный API.
Что можно хранить и показывать, определяют ещё три правила использования. Во-первых, согласно правилам Places API, рядом с каждым отзывом нужно показывать атрибуцию автора: фото, имя и ссылку на профиль [7]. Во-вторых, ID места можно хранить долго, но большую часть остального контента кешировать нельзя. Значит, собственную долговременную базу отзывов из результатов официального API построить не получится [7]. Google также рекомендует обновлять ID мест старше 12 месяцев [8]. В-третьих, отзывы всегда сортируются по релевантности.
Третье правило чаще всего вызывает жалобы на форумах разработчиков. В вопросе на Stack Overflow 2016 года спрашивают, как получить из Places API больше пяти отзывов [39]. В вопросе 2019 года спрашивают, как получить самые свежие отзывы [40]. Оба обсуждения упираются в одно и то же ограничение в пять отзывов. В обсуждении в сабреддите r/learnpython новичок задаёт тот же вопрос [41]. С новой версией API ответ не изменился.
С 8 мая 2025 года Places API может также возвращать сводку отзывов, которую пишет Gemini [9][10]. Сводка не является сырыми данными, поэтому подсчитать по ней звёзды нельзя.
Путь 2: собственный парсер на Python и где он перестаёт работать
Многие руководства о том, как парсить Google Maps на Python, начинают с requests и BeautifulSoup. Мы попробовали этот первый шаг 2 ноября 2026 года в 00:19:50 SGT. Мы отправили один обычный HTTP GET средствами стандартной библиотеки Python на страницу ресторана в Сингапуре в Google Maps. Статус был 200, страница весила 210 679 байт и содержала 12 тегов script.
Заголовок страницы был просто «Google Maps». Название ресторана встречалось только в повторе нашего собственного URL. Количества отзывов (8 226) на странице не было. Не было на ней и ни одного из 20 фрагментов отзывов, полученных через API.
Значит, отзывы загружаются только после выполнения JavaScript в браузере. Собственному парсеру нужна автоматизация браузера, например Playwright [37]. Набросок ниже показывает типичную структуру. Он открывает страницу места, нажимает вкладку «Отзывы», прокручивает панель отзывов и считывает текст из элементов страницы. Мы его не запускали, потому что массовый автоматический парсинг страниц Google Maps нарушает условия использования сервиса. Мы приводим его только для того, чтобы показать объём работы.
# Configuration example (not run): the usual structure of a browser review scraper
from playwright.sync_api import sync_playwright
PLACE_URL = "https://www.google.com/maps/place/?q=place_id:ChIJl6T2cnbMRIYR7eD538S3oWU&hl=en"
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page(locale="en-US")
page.goto(PLACE_URL, wait_until="networkidle")
page.get_by_role("tab", name="Reviews").click() # breaks when the label changes
panel = page.locator("div[role='feed']") # a guessed selector that changes often
for _ in range(30): # about 10 more reviews per scroll
panel.evaluate("el => el.scrollBy(0, el.scrollHeight)")
page.wait_for_timeout(1200)
texts = page.locator("[data-review-id] span").all_inner_texts()
print(len(texts))
browser.close()Каждая строка этого наброска делает ставку на то, что страница не изменится. Название вкладки, селектор панели, число отзывов за одну прокрутку и язык страницы могут измениться. Один релиз фронтенда у Google или одна страница проверки для вашего IP-адреса, и скрипт перестаёт работать. Чтобы оценить затраты на поддержку, мы изучили один из самых популярных по числу звёзд open-source-парсеров Google Maps на GitHub [32]. На 2 ноября 2026 г. у него было 7 148 звёзд, 1 112 форков и лицензия MIT, а последний push был 21 октября 2026 г.
С 13 июля по 20 сентября 2026 года проект выпустил восемь релизов: от v1.16.3 до v1.18.1 [36]. После 1 августа в разделе Issues открыли пятнадцать тем. В таблице приведены темы, связанные с отзывами или сбоями задач. Заголовки пересказаны, а ссылки приведены в списке источников [33][34][35].
| Дата | Issue | Что сообщили пользователи | Статус |
|---|---|---|---|
| 2026-09-01 | #327 | Опция дополнительных отзывов возвращает всего около 10 отзывов, а внутренний эндпоинт отзывов возвращает ошибку 403 (v1.17.4) | Открыт |
| 2026-09-23 | #331 | Много ошибок движка парсинга во время запусков | Закрыт |
| 2026-10-05 | #337 | После обновления до v1.18.0 список задач в веб-интерфейсе остаётся пустым, а кнопка запуска ничего не делает | Открыт |
| 2026-10-06 | #338 | Все задачи парсинга падают, потому что страница или контекст браузера закрылись | Открыт |
| 2026-10-09 | #341 | Заголовок: «300 Reviews per place» | Открыт |
| 2026-10-22 | #346 | Веб-задача зависает в рабочем состоянии, потому что контекст браузера не закрывается | Открыт |
Это не оценка качества кода. Проект с 7 000 звёзд и восемью релизами за десять недель всё равно каждые несколько недель сталкивается с проблемами «только 10 отзывов» и «все задачи падают». Причина в изменениях на стороне Google, а не в слабом коде. Задачи (issues) #337 и #346 [42][43] показывают издержки другого рода. Они никак не связаны с Google и вызваны самой автоматизацией браузера.
Парсер отзывов, который работает месяцами, — это небольшой сервис с дежурным инженером, а не скрипт на выходные. Нужно управлять запуском и остановкой браузеров, памятью, параллельными запросами, таймаутами, прокси и выходными IP-адресами. Если вы пишете свой парсер, вы к тому же теряете сообщество, которое первым находит проблемы. Заложите эту работу в бюджет, прежде чем сравнивать её с ценой за вызов.
Собственные парсеры также игнорируют robots.txt. Тогда же мы скачали google.com/robots.txt [16]. В строке 86 указано Disallow: /maps/, а в строке 74 — Disallow: /maps?. В файле также есть строки Allow для /maps/place/ и /maps/search/.
Согласно RFC 9309, побеждает самое длинное совпадающее правило, поэтому обычные пути страниц мест разрешены. Другие пути под /maps/ без строки Allow попадают под запрет [17]. RFC 9309 также указывает, что правила robots не являются формой авторизации доступа [17]. Реальное ограничение задают условия использования.
Условия использования, судебные дела и персональные данные
Начнём с договора. Если вы клиент Google Maps Platform, раздел 3.2.3(a) условий платформы называется «No Scraping». В нём сказано, что клиенты не будут экспортировать, извлекать или иным образом парсить контент Google Maps для использования вне сервисов [13]. Для обычных пользователей дополнительные условия Google Maps запрещают массовое скачивание и пакетные выгрузки контента [14]. Последний раз Google изменил эти условия 27 января 2026 года. Они также запрещают использовать Google Maps для создания или дополнения других картографических наборов данных, и базы данных компаний входят в этот список [14].
Итак, ни официальный API, ни собственный парсер не позволяют создать копию контента Google. Суды США рассматривали более широкий вопрос. 18 апреля 2022 года Апелляционный суд девятого округа постановил в деле hiQ Labs v. LinkedIn, что парсинг публичных веб-данных, скорее всего, не является доступом «без авторизации» по смыслу Computer Fraud and Abuse Act [21].
23 января 2024 года Окружной суд Северного округа Калифорнии вынес решение в порядке упрощённого судопроизводства (summary judgment) в пользу компании по сбору данных, на которую подала в суд Meta Platforms (дело 3:23-cv-00077). Суд установил, что Meta не доказала, что её условия запрещали парсинг публичных данных без входа в аккаунт [22].
На эти два решения часто ссылаются, чтобы утверждать, что парсинг публичных данных законен. Но они отвечают на конкретные правовые вопросы о конкретных формулировках договоров. Они не говорят, что нарушение условий ничем не грозит, и не применяются за пределами США. Это руководство не является юридической консультацией. Перед коммерческим использованием проконсультируйтесь с юристом.
Далее — персональные данные. Имена, фото и ссылки на профили авторов отзывов являются персональными данными. В Калифорнии закон California Consumer Privacy Act (CCPA) даёт потребителям права на данные, которые собирают компании. Генеральный прокурор штата обновил свою страницу о CCPA 28 августа 2026 года [23]. В Европейском союзе действует GDPR [24].
В Сингапуре действует Personal Data Protection Act [25][26], а Мексика 20 марта 2025 года опубликовала новый федеральный закон о защите данных [27]. Для большинства задач анализа личность автора отзыва не нужна. Сохраняйте оценку, дату, текст и ответ владельца, а имена и фото отбрасывайте. Наш экспортёр в CSV ниже так и делает.
Если вы копируете отзывы о других компаниях на свою страницу, на вас также распространяются правила Google в отношении фиктивной активности в пользовательском контенте [15].
Путь 3: API данных с оплатой за вызов
Третий путь — API данных с оплатой за каждый вызов. Вы отправляете один запрос, а сервис возвращает структурированные данные о компаниях или отзывах. Он сам справляется с браузерами, прокси и изменениями страниц и берёт плату за каждый вызов. На этом рынке есть несколько моделей оплаты. Распространены облачные платформы парсинга с оплатой за результат, API поисковой выдачи с оплатой за запрос и API данных с оплатой за вызов. EveryInfra использует последнюю модель.
Это практическое руководство, а не таблица цен поставщиков. Оно посвящено тому, как выполнять вызовы, как выглядят данные и в каких случаях возникают сбои. Стоимость и единица тарификации EveryInfra указаны на странице API для парсинга отзывов Google Maps.
API для парсинга отзывов Google Maps на EveryInfra включает четыре возможности. google_maps_reviews/search находит места по ключевому слову и местоположению. google_maps_reviews/profile возвращает сведения об одном месте. google_maps_reviews/reviews возвращает отзывы об одном месте. google_maps_reviews/contributor_reviews возвращает отзывы, написанные одним автором.
Мы сверились с публичным каталогом 2 ноября 2026 года в 00:14:03 SGT. Вызов любой из четырёх возможностей стоит $0,001389. Поиск возвращает до 50 мест за вызов и до 120 записей на всех страницах. Запрос отзывов возвращает до 100 отзывов за вызов и до 400 записей на всех страницах.
Синхронный запрос доходит до 200-й записи, для более глубоких страниц нужна асинхронная задача. Для отзывов есть два порядка сортировки: newest и relevance. Параметр since ограничивает результаты отзывами после указанной даты, а lang задаёт язык отзывов.
Вот один запрос отзывов для клиники в Остине. Самый надёжный идентификатор места — URL его страницы в Google Maps, содержащий ID места.
curl -s https://api.everyinfra.com/api/v1/social \
-H "Authorization: Bearer $EVERYINFRA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"platform":"google_maps_reviews","action":"reviews",
"params":{"url":"https://www.google.com/maps/search/?api=1&query=Swish%20Dental%20-%20Domain&query_place_id=ChIJl6T2cnbMRIYR7eD538S3oWU",
"sort":"newest","limit":100}}'Мы отправили этот запрос в 00:20:36 SGT. Он вернул 100 отзывов, а billing.charged_usd составил 0.001389. Поле pagination.has_more в ответе имело значение true, также был возвращён next_page_token. Чтобы получить следующую страницу, отправьте тот же запрос, передав этот токен в page_token без изменений. На скриншоте ниже показан реальный ответ для ресторана в Сингапуре в 00:15 SGT, имена авторов отзывов скрыты.

Каждая запись отзыва содержит поля из каталога. В таблице приведены наиболее важные для анализа поля и подсчёты по 200 последним отзывам о клинике в Остине. Два из них, detailed_rating и owner_response, отсутствуют в объекте отзыва официального Places API.
| Поле | Описание | В 200 последних отзывах о клинике в Остине |
|---|---|---|
rating | От 1 до 5 звёзд | 200 из 200 |
posted_at | Время публикации в UTC | 200 из 200 |
text | Текст отзыва, может быть пустым | 130 с текстом (65%) |
owner_response и owner_response_at | Ответ владельца и время ответа | 146 (73%) |
detailed_rating | Частные оценки, например за еду или обслуживание | 0 у этой клиники |
image_urls | Фото, прикреплённые к отзыву | 3 |
is_local_guide и reviewer_review_count | Признак Local Guide и число отзывов автора | 58 от Local Guides |
like_count | Голоса «Полезно» | 200 из 200 |
id, url и place_id | Идентификаторы отзыва и места | 200 из 200 |
Вызов профиля google_maps_reviews/profile в 00:20:02 SGT вернул данные клиники: 4,6 звезды, 1 659 отзывов, адрес, телефон, сайт, часы работы и координаты. Вызов поиска google_maps_reviews/search в 00:17:10 SGT выполнялся с ключевым словом «dentist» и местоположением «Austin, TX». Страница 1 вернула 50 мест.
Страница 2 начиналась с записи 51, поэтому синхронный запрос в 00:23:59 SGT вернул ошибку 422 с требованием перейти в асинхронный режим. Асинхронная задача в 00:24:22 SGT вернула ещё 50 мест. После дедупликации по place ID у нас осталось 100 разных клиник, и у 99 из них адрес в Остине. Для списка лидов для продаж больше ничего не нужно. Если вы объединяете результаты нескольких поисков, пригодится наше руководство по дедупликации по place ID.
Тест 1: стоматологическая клиника в Остине — рейтинг в карточке и оценки в новых отзывах
Этот тест отвечает на один вопрос покупателя из США. Говорит ли рейтинг в карточке о том, как обстоят дела у клиники сейчас? Мы выгрузили 200 самых новых отзывов о Swish Dental в районе Domain в Остине с двух страниц, в 00:20:36 и 00:23:41 SGT. В карточке указан рейтинг 4,6 звезды на основе 1 659 отзывов.
Средняя оценка 200 самых новых отзывов — 4,305 звезды, это примерно на 0,3 звезды ниже рейтинга в карточке. Отзывов на пять звёзд 156, на четыре 7, на три 5, на две 6 и на одну 26. Отзывы на одну звезду составляют 13% выборки. Клиника ответила на 146 из 200 отзывов, так что отзывами явно кто-то занимается.
Для пациента, инвестора или конкурента 200 самых новых отзывов говорят больше, чем общий рейтинг. Рейтинг в карточке учитывает отзывы за многие годы. Скопление новых отзывов на одну звезду может означать изменения в составе персонала, работе регистратуры или выставлении счетов. Официальный Places API не может показать такое скопление, потому что возвращает пять отзывов, отобранных по релевантности.
Анализ текста показывает другую картину. Из 26 отзывов на одну звезду текст есть у 24 (92%), медианная длина составляет 361,5 символа. Из 156 отзывов на пять звёзд текст есть только у 89 (57%), медиана — 119 символов. Недовольные пациенты объясняют, почему поставили низкую оценку.
Довольные пациенты часто ставят только оценку в звёздах. Если вы изучаете только отзывы с текстом, то придаёте негативным отзывам больший вес. Если вы изучаете только оценки в звёздах, то упускаете полезные подробности из жалоб.
Тест 2: пять релевантных отзывов против 300 свежих
Второй тест показывает, как ограничение в пять отзывов влияет на ваше представление о месте. Мы взяли ресторан Song Fa Bak Kut Teh по адресу 11 New Bridge Road в Сингапуре. В его карточке указаны 4,4 звезды, 8 226 отзывов и 18 685 фотографий. В 00:16:10 SGT мы выгрузили 100 самых релевантных отзывов.
Мы также выгрузили 300 самых новых отзывов с трёх страниц. Страницы 1 и 2 получили синхронными вызовами в 00:15:29 и 00:16:42 SGT, а страницу 3 — с помощью асинхронной задачи в 00:18:27 SGT. Первые пять отзывов по релевантности здесь заменяют пять отзывов, которые возвращает официальный API.
Средняя оценка топ-5 — 4,8 звезды. У всех пяти есть текст и фото, медианная длина текста — 517 символов. Все пять авторов — Local Guides, даты отзывов — с апреля по июль 2026 года. Средняя оценка топ-100 по релевантности — 4,5 звезды, у всех есть текст, медианная длина — 357 символов. Их даты — с 2016 года по сентябрь 2026 года. Средняя оценка 300 самых новых — 4,65 звезды, текст есть только у 63%, медианная длина — 67 символов.
Google не раскрывает свой метод ранжирования по релевантности. По данным видно, что при отборе предпочтение отдаётся длинным отзывам с фотографиями от активных авторов, а такие отзывы, как правило, положительные. Если судить о месте по пяти отзывам из официального API, вы увидите самые показательные положительные отзывы, а не мнение среднего клиента за последнее время. У топ-100 по релевантности и 300 самых новых совпадает только 21 отзыв, поэтому это почти две разные выборки.
Отзывы без текста легко упустить. Среди 300 самых новых у 111 отзывов есть звёзды, но нет слов, это 37%. Для анализа ключевых слов или тональности эти 37% пусты. Для тренда оценок эти 37% — та часть выборки, которую не искажают авторы длинных отзывов. Двум видам анализа нужны разные данные, поэтому API отзывов должен возвращать и звёзды, и текст, а не только сводку.
Тест 3: такерия в Мехико и ловушка с местоположением
Третье место — Tacos Chupacabras в Койоакане, Мехико. В карточке указано 4,2 звезды, 18 361 отзыв и ценовой диапазон от 100 до 200 MXN. Мы выгрузили 200 самых новых отзывов с lang: es419 в 00:23:05 и 00:23:24 SGT. Их средняя оценка — 4,275 звезды, близко к рейтингу в карточке. Отзывов на пять звёзд 121, на четыре 42, на три 21, на две 3 и на одну 13. Текст есть только у 55,5%, медианная длина — 69 символов, и владелец не ответил ни на один отзыв.
Если сравнить три места, распределения оценок окажутся разными. У стоматологии много отзывов на пять и на одну звезду и мало в середине. У такерии больше отзывов на три и четыре звезды, это типичная картина «отличная еда, длинная очередь». Одно среднее значение скрывает оба распределения.
Поиски в Мехико также выявили проблему с параметром местоположения. В 00:17:32 SGT мы искали «taquería» с местоположением «Ciudad de México». Все 50 результатов были в Мексике, но только 1 из них в Мехико. Остальные 49 находились в 11 других штатах: 14 в Сакатекасе, 7 в Нуэво-Леоне, 6 в Чиуауа и 6 в Халиско.
В 00:19:39 SGT мы указали место в ключевом слове: «taquería en Coyoacán, Ciudad de México». Все 50 результатов оказались в Мехико, из них 47 в Койоакане. В поиске по Остину использовалось местоположение «Austin, TX». Там 99 из 100 результатов были в Остине, а последний — в соседнем Уэст-Лейк-Хиллз.
Причину мы пока не знаем. Два запроса различаются сразу по нескольким признакам. Вызов для Мехико также передавал language: es, а местоположение для Остина включало код штата. Одна пара тестов не позволяет определить, какое именно различие важно. Пока причина неизвестна, указывайте город и даже район в ключевом слове. Сначала запустите поиск одной страницы и посчитайте, сколько результатов попало в нужный город.
Сортировка по новизне не строго хронологическая
Команды, которые отслеживают отзывы, часто пишут один и тот же цикл. Они сортируют по новизне, читают одну страницу и останавливаются на первом отзыве старше последнего сохранённого отзыва. Мы проверили каждую запись в трёх наборах, отсортированных по новизне. Запись нарушает порядок, если время её публикации позже, чем у записи над ней. В Сингапуре таких записей было 6 из 300, в Мехико — 18 из 200, а в Остине — 50 из 200, то есть 25%. В сингапурском наборе среди отзывов за 2026 год также оказались два отзыва за 2023 год.
Так ведёт себя сам Google Maps, а не API. Отредактированные отзывы и отзывы с новыми ответами владельца могут нарушать хронологический порядок. Эффект реальный: цикл «остановиться на первом старом отзыве» может пропустить данные. Есть два рабочих решения. Прочитайте ещё одну страницу перед остановкой или используйте since, чтобы API возвращал только отзывы после указанной даты. Затем отсортируйте данные по posted_at сами. Экспортёр в CSV ниже последним шагом сортирует данные заново.
Сбои и возврат средств: как выглядят реальные ошибки
Главное опасение при оплате за вызов — списание за неудачный вызов. Во время тестов мы получили шесть типов ошибок: некоторые вызвали намеренно, а некоторые — случайно. В таблице они приведены в том виде, в каком их вернул API. Все отметки времени указаны в SGT за 2 ноября 2026 года.
| Время (SGT) | Что мы сделали | Ответ | Списание | Следующий шаг в ответе |
|---|---|---|---|---|
| 00:15:56 | Запросили страницу 2 сразу после страницы 1, превысив лимит в 10 запросов в минуту | 429 rate_limited, retry_after 4 секунды | Нет | Подождать и повторить попытку |
| 00:16:03 | Отправили пустой токен страницы | 422 invalid_page_token | Нет | Передавать next_page_token в том виде, в каком он получен |
| 00:17:00 | Запросили страницу 3 отзывов в синхронном режиме (после 200-й записи) | 422 async_required | Нет | Добавить "mode":"async" и проверять статус задачи |
| 00:20:55 | Задали в since будущую дату 2026-11-30 | 200, 0 отзывов, empty_result_refunded | Возврат средств, $0 | Нет |
| 00:21:38 | Отправили URL, который не является страницей карты | 503, можно повторить, retry_after 20 секунд | Возврат средств, $0 | Указано, что это сбой 1 из 3 |
| 00:22:07 | Задали для sort значение oldest | 422 invalid_value, допустимые значения newest и relevance | Нет | Изменить только sort и отправить снова |
Одну из этих ошибок стоит улучшить. Неверный URL возвращает 503 с возможностью повтора, а не 422 с указанием неверного параметра. Вы ничего не платите, но клиент, который трижды повторяет каждый 503, около минуты ждёт и ничего не получает. Остальные пять ошибок соответствуют документации. Ошибки параметров и превышение лимита запросов бесплатны, за пустые результаты средства возвращаются, а каждое сообщение об ошибке перечисляет допустимые значения и следующий шаг.
Для случая с URL достаточно проверки в вашем коде. Все ссылки на места в этом руководстве начинаются с https://www.google.com/maps/:
if not url.startswith("https://www.google.com/maps/"):
raise ValueError("not a Google Maps place link")Обратите внимание, когда списываются средства за асинхронные задачи. Списание происходит при отправке задачи, а не при получении результата. Мы отправили асинхронную задачу для страницы 3 по Сингапуру в 00:18:27 SGT, и ответ на отправку уже показывал значение charged_usd 0,001389. Статус задачи сменился с running на finalizing, а затем на succeeded, и задача вернула 100 отзывов. Если асинхронная задача завершается сбоем, средства по тому же ID списания возвращаются.
Как выгрузить отзывы из Google Maps в CSV на Python
Код ниже — короткий ответ на вопрос, как парсить отзывы Google Maps. Вы передаёте ему одну ссылку на место в Google Maps. Он читает самые новые отзывы постранично и записывает их в CSV. Код использует только стандартную библиотеку Python. Он учитывает лимиты запросов, обрабатывает токены страниц и получает страницы за пределами синхронного лимита через асинхронные задачи. В конце он сортирует отзывы по времени публикации и не записывает в файл имена авторов.
"""Export Google Maps reviews of one place to CSV via EveryInfra.
usage: EVERYINFRA_API_KEY=... python3 export_reviews_csv.py "<google maps place url>" reviews.csv [max_pages]
"""
import csv, json, os, sys, time, urllib.request, urllib.error
API = "https://api.everyinfra.com"
KEY = os.environ["EVERYINFRA_API_KEY"]
FIELDS = ["id", "place_name", "rating", "posted_at", "text", "owner_response",
"owner_response_at", "like_count", "is_local_guide", "reviewer_review_count", "url"]
def call(method, path, body=None):
req = urllib.request.Request(API + path, method=method,
data=json.dumps(body).encode() if body else None,
headers={"Authorization": f"Bearer {KEY}", "Content-Type": "application/json",
"User-Agent": "reviews-csv/1.0"})
try:
with urllib.request.urlopen(req, timeout=120) as r:
return r.status, json.load(r)
except urllib.error.HTTPError as e:
return e.code, json.load(e)
def fetch_page(params):
body = {"platform": "google_maps_reviews", "action": "reviews", "params": params}
for attempt in range(4):
status, data = call("POST", "/api/v1/social", body)
err = (data.get("error") or {})
if status == 429 or (err.get("retryable") and status >= 500):
time.sleep(err.get("retry_after", 20)); continue
if err.get("code") == "async_required": # deep pages run as a job
body["mode"] = "async"; continue
if status == 202 and data.get("poll_url"):
billing, poll = data.get("billing"), data["poll_url"] # async jobs are charged at submit
while data.get("status") in ("queued", "running", "finalizing"):
time.sleep(5); status, data = call("GET", poll)
data["billing"] = data.get("billing") or billing
return data
if err:
raise SystemExit(f"stop: {err.get('code')} {err.get('message')}")
return data
raise SystemExit("stop: retries used up")
def main():
url, out = sys.argv[1], sys.argv[2]
max_pages = int(sys.argv[3]) if len(sys.argv) > 3 else 2
params = {"url": url, "sort": "newest", "limit": 100}
seen, rows, spent = set(), [], 0.0
for page in range(max_pages):
data = fetch_page(params)
spent += (data.get("billing") or {}).get("charged_usd") or 0
for r in data.get("results") or []:
if r["id"] in seen:
continue
seen.add(r["id"])
rows.append({k: r.get(k, "") for k in FIELDS})
token = data.get("next_page_token")
print(f"page {page + 1}: {data.get('count')} rows, total {len(rows)}")
if not token or not (data.get("pagination") or {}).get("has_more"):
break
params["page_token"] = token
rows.sort(key=lambda r: r["posted_at"] or "", reverse=True) # "newest" is not strictly ordered
with open(out, "w", newline="", encoding="utf-8-sig") as f:
w = csv.DictWriter(f, fieldnames=FIELDS)
w.writeheader(); w.writerows(rows)
print(f"wrote {len(rows)} reviews to {out}; charged: ${spent:.6f}")
if __name__ == "__main__":
main()Мы запускали его трижды для такерии в Мехико, каждый раз на три страницы. Первый запуск начался в 00:32:39 SGT. Страницы 1 и 2 отработали, а страница 3 переключилась на асинхронную задачу. Затем цикл опроса упал, потому что в ответе на опрос нет poll_url, а код читал это поле на каждой итерации. Второй запуск с этим исправлением начался в 00:33:18 SGT. Страница 3 вернулась без записей, потому что у задачи есть состояние finalizing, а код принял его за завершение.
Третий запуск начался в 00:35:21 SGT и завершился в 00:36:21 SGT. Он прочитал три страницы по 100 отзывов, записал 300 отзывов с 300 уникальными ID и списал $0,004167. CSV сохраняется в utf-8-sig, поэтому Excel открывает его без битых символов. Переносы строк внутри текста отзывов остаются внутри ячеек, поэтому в файле 374 строки на 300 записей, и это нормально. Варианты диалектов описаны в документации модуля csv для Python [38].
Обе ошибки были незаметны при чтении документации и очевидны при реальном запуске. Мы сохранили логи всех трёх запусков. Тестируйте любой новый асинхронный API на месте с большим числом отзывов. Дойдите до страницы 3 и выводите каждое значение статуса.
После экспорта: пять шагов очистки данных
Получить данные — это половина работы. Остальное занимает очистка. В наших 700 отзывах о трёх местах проблемы разделились на пять групп. Для каждой группы есть простое решение. Добавьте эти исправления в первый же скрипт анализа, а не после того, как цифры не сойдутся.
Первая группа проблем связана со временем. posted_at и owner_response_at содержат время в UTC с суффиксом часового пояса. Остин зимой живёт по UTC−6, а летом — по UTC−5, поэтому отзыв, оставленный в 9 вечера по местному времени, в UTC уже относится к следующему дню.
Если вы считаете отзывы по дням, сначала переведите время в часовой пояс, в котором находится место. Иначе границы суток сдвинутся на несколько часов, а эффект выходных исчезнет. Наш CSV хранит исходную строку в UTC, а при анализе время переводится отдельно для каждого города.
Вторая группа — пустой текст. У самых новых отзывов о наших трёх местах текста нет в 35–45% записей. Для анализа тональности или ключевых слов исключите пустые записи и укажите знаменатель в отчёте. Для анализа динамики оценок оставьте их. Проведите оба вида анализа на одних и тех же данных и сравните результаты. Цифры по Остину выше показывают, насколько сильно могут расходиться эти две группы.
Третья группа — язык ключей оценок по отдельным критериям. Ключи в detailed_rating зависят от языка отзыва. С lang: es419 в Мехико ключами были comida, servicio и ambiente. В англоязычных отзывах из Сингапура ключами были food, service и atmosphere.
Если вы объединяете данные нескольких стран в одну таблицу, сначала приведите ключи к одному набору. Иначе одна и та же оценка обслуживания окажется в двух столбцах. В списке полей каталога это не указано. Мы заметили это, когда сравнили два ответа.
Четвёртая группа — дубликаты. Один отзыв может попасть на две страницы, чаще всего при повторном запуске через несколько часов. Новые отзывы сдвигают старые вниз, и границы страниц перекрываются. Удаляйте дубликаты по id отзыва, как это делает экспортёр. Дубликаты мест удаляйте по ID места, потому что одно место в разных поисках может появляться под разными названиями. Не используйте url отзыва как ключ: в нём есть параметр языка, например hl=en.
Пятая группа — поля места. Значения state и city в результатах поиска — это отображаемый текст, а не нормализованные коды. В поиске по Мехико с параметром местоположения один штат может быть записан двумя способами. У Сакатекаса 13 записей со значением «Zacatecas» и 1 со значением «Zac.». У Кинтана-Роо 2 записи со значением «Quintana Roo» и 2 со значением «Q.R.». У Нуэво-Леона, Халиско и Табаско тоже встречаются сокращения.
49 записей за пределами Мехико содержат 16 разных значений state, хотя относятся только к 11 штатам. В поиске с местом в ключевом слове state равен «Cd. de México» в 42 записях и «CDMX» в 8. В поиске по Сингапуру у 2 из 50 записей нет city. Если группировать по исходному значению state, один штат разделится на две строки. Перед группировкой сопоставьте сокращения с полными названиями или определите регион по широте и долготе.
| Проблема | Что мы увидели | Как исправить |
|---|---|---|
| Часовые пояса | posted_at в UTC | Перевести в местное время перед подсчётом по дням |
| Пустой текст | 35–45% самых новых записей | Удалять для анализа текста, оставлять для трендов оценок |
| Ключи оценок по отдельным критериям | food на английском, comida на испанском | Привести ключи к одному набору перед объединением |
| Дубликаты | Границы страниц перекрываются между запусками | Удалять дубликаты по id отзыва и ID места |
| Поля места | «Zac.» и «Zacatecas», «CDMX» и «Cd. de México» | Привести сокращения к одному названию перед группировкой |
Стоимость по сценариям использования
Цены за единицу проще оценить на реальных задачах. Цифры ниже основаны на ценах за единицу из наших тестов и прайс-листа Google. В них не учтены серверы, время сотрудников и прочие расходы.
Первая задача — список лидов для продаж: все стоматологические клиники Остина с названием, телефоном, сайтом, рейтингом и количеством отзывов, без текстов отзывов. Поиск EveryInfra возвращает 50 мест за вызов по цене $0.001389. Наши две страницы дали 100 разных клиник за $0.002778. Для списка из 1 000 клиник нужно около 20 вызовов, то есть $0.028.
По одному ключевому слову пагинация отдаёт не более 120 записей, поэтому разбейте город на районы или меняйте ключевое слово. Официальный SKU Text Search Pro даёт 5 000 бесплатных вызовов в месяц, а дальше стоит $32 за 1 000 [3][6]. При таком объёме бесплатный лимит покрывает всю задачу. Разница в правилах кэширования и отображения официальных результатов [7].
Вторая задача — мониторинг отзывов. У сети 50 точек, и раз в неделю она проверяет каждую точку на новые отзывы. Если точки ваши, бесплатный Business Profile API подойдёт лучше всего [12]. Если это точки франчайзи или агентства либо вы ведёте мониторинг для клиента, вам нужен API данных.
Один вызов на место в неделю при 52 неделях и 50 местах дают 2 600 вызовов, или около $3.61 в год. Официальный Places API с этой задачей не справится. Он не возвращает самые новые отзывы, а его пять лучших отзывов могут не меняться месяцами.
Третья задача: исследование. В районе 500 ресторанов, и вам нужны 100 последних отзывов каждого, то есть всего 50 000 отзывов. С API данных это 500 вызовов для отзывов плюс около 15 поисковых вызовов, примерно $0.72. Официальный Places API даёт не более 2 500 отзывов (500 мест по 5), причём это отобранная выборка.
В нашем тесте по Сингапуру средняя оценка такой выборки была на 0,15 звезды выше, чем у недавних отзывов, а текст отзывов из выборки был в среднем более чем в семь раз длиннее текста недавних отзывов. Теоретически с задачей справится и собственный парсер. Судя по трекеру задач проекта с открытым исходным кодом, на полпути можно столкнуться с проблемой «только 10 отзывов» [33].
| Задача | Официальный Places API | API данных EveryInfra |
|---|---|---|
| 1 000 клиник в Остине, только список | В рамках бесплатного лимита Text Search | Около 20 вызовов API, $0,028 |
| 50 точек, новые отзывы каждую неделю в течение года | Невозможно, нет сортировки по новизне | 2 600 вызовов, около $3.61 |
| 500 ресторанов, по 100 последних отзывов о каждом | Не более 2 500 отобранных отзывов | Около 515 вызовов API, около $0,72 |
Как выбрать парсер Google Maps: шесть проверок
Тем, кто ищет лучший парсер Google Maps, не нужен самый известный инструмент. Им нужен инструмент, который надёжно возвращает их данные по приемлемой цене. Мы перечисляем проверки по категориям, а не по брендам. Каждую проверку можно провести небольшим пробным запуском за несколько центов.
| Проверка | Как проверить | Наше эталонное значение |
|---|---|---|
| Количество отзывов для каждого места и пагинация по дате | Выберите место с более чем 1 000 отзывов и перейдите на страницу 3 | Официальный API — 5 записей; EveryInfra — по 400 записей для каждого порядка сортировки |
| Единица тарификации и списания при неудачных вызовах API | Отправьте запрос с неверным параметром и датой из будущего в since | За вызовы API, вернувшие коды 422 и 429, плата не взимается. Средства за вызовы без результатов и вызовы, завершившиеся ошибкой, возвращаются |
| Реальная стоимость за 1 000 отзывов | Списанная сумма, делённая на число полученных записей и умноженная на 1 000 | $0,01389 при 100 отзывах за вызов |
| Поля | Проверьте наличие ответов владельцев, оценок по отдельным критериям и фотографий | owner_response, detailed_rating, image_urls |
| Точность местоположения | Выполните поиск по одному городу с двумя способами указания местоположения | Мехико: параметр — 1 из 50, ключевое слово — 50 из 50 |
| Использование в ИИ-инструментах | Проверьте наличие MCP-сервера или определений инструментов для вызова функций | Да, удалённый MCP-сервер |
Вторую строку покупатели пропускают чаще всего. Инструменты с оплатой за результат обычно не берут плату за пустые результаты, но правила для незавершённых задач различаются. У API с оплатой за вызов проверьте, возвращаются ли средства за пустые результаты и сбои. Тест стоимостью несколько центов даст ответ.
С третьей строкой похожая ситуация. Не доверяйте цене из прайса. Делите реальное списание на реальное число записей. Многие цены за 1 000 рассчитаны на полные страницы, а у вашего места может быть всего несколько десятков отзывов.
Когда лучше выбрать официальный API или собственный парсер
API данных подходит не всегда. В трёх случаях мы советуем другой путь. Во-первых, если вам нужно пять репрезентативных отзывов на место для менее чем 1 000 мест в месяц, вам хватит бесплатного лимита официального Places API. К тому же вы можете легально показывать эти отзывы в своём приложении, если указываете авторов.
Во-вторых, если отзывы касаются ваших собственных точек, используйте Business Profile API. Он возвращает все отзывы, позволяет отвечать на них и предоставляется бесплатно — ни один сторонний сервис не может предложить того же.
В-третьих, если вам нужен только список компаний одного города, начните с открытых государственных данных. В Сингапуре есть набор данных о лицензированных заведениях общественного питания, в нём более 36 000 записей [28]. Singapore Food Agency обновило свою страницу с историей проверок 1 ноября 2026 года [29]. В Мексике есть справочник DENUE [30], а у Бюро переписи населения США есть County Business Patterns [31]. В этих наборах нет оценок и отзывов. Распространённое сочетание — государственная базовая таблица плюс свежие отзывы о нужных вам местах.
Собственный парсер оправдан только в одном случае: ваша задача очень специфична, например нужен элемент, который показывает только браузер, и команда готова взять на себя долгосрочную поддержку. Вы также должны принять, что парсер может сломаться в любой момент, а его использование может нарушать условия предоставления услуг. Если единственная цель — сэкономить, цифры в этом руководстве говорят об обратном. При цене $0,001389 за 100 отзывов даже одно исправление скрипта инженером обойдётся дороже, чем вызовы API за целый год.
У EveryInfra тоже есть ограничения, и мы увидели их в этих тестах. При одном порядке сортировки выдача останавливается на 400 записях. Для места с 8 226 отзывами полную историю получить нельзя. Вы получите 400 самых новых и 400 самых релевантных отзывов, и эти наборы пересекаются.
Для записей после 200-й нужны асинхронный режим и цикл опроса. В Мехико параметр местоположения дал только 1 из 50 результатов в пределах города, и причину мы пока не знаем.
FAQ
Можно ли парсить Google Maps бесплатно?
Есть два легальных бесплатных способа. Официальный Places API даёт 1 000 бесплатных вызовов Place Details с отзывами в месяц, до пяти отзывов на вызов [3][4]. Для ваших собственных локаций Business Profile API бесплатно читает все отзывы [11]. «Бесплатным парсером» обычно называют ПО с открытым исходным кодом: скачать его можно бесплатно, но серверы, прокси и поддержка стоят денег.
Как парсить отзывы Google Maps на Python?
Обычный HTTP-запрос не возвращает отзывы. В нашем тесте на странице не нашлось ни одного из 20 фрагментов отзывов, поэтому нужна автоматизация браузера или API данных. В этом руководстве два примера кода. Первый — набросок автоматизации браузера, который мы не запускали. Второй — полноценный экспортёр, который вызывает API данных и который мы запускали трижды. Тот же вопрос задавал пользователь Reddit в r/learnpython [41].
Законно ли парсить Google Maps?
Условия Google запрещают массовое скачивание и парсинг контента [13][14]. Решения судов США по делу hiQ v. LinkedIn и по иску Meta к компании по сбору данных были в пользу парсинга публичных данных. Однако эти решения касаются конкретных правовых вопросов, а нарушение условий всё равно может иметь последствия [21][22].
Данные авторов отзывов также подпадают под действие таких законов, как CCPA и GDPR. Это руководство не является юридической консультацией.
Почему Places API возвращает только пять отзывов и как получить самые свежие?
Пять отзывов — ограничение, заложенное в дизайн API. В документации указано, что возвращается не более пяти отзывов, отсортированных по релевантности, а токена пагинации нет [1]. Для ваших собственных точек используйте сортировку по времени обновления в Business Profile API [12]. Для других мест используйте API данных или парсер. Ответы на вопросы Stack Overflow 39223719 и 55235501 упираются в то же ограничение [39][40].
Какой парсер Google Maps лучший?
Единого ответа нет. Всё зависит от того, сколько отзывов вам нужно, нужна ли пагинация по дате и какую модель оплаты вы готовы принять. В этом руководстве шесть проверок, каждую можно провести за несколько центов. Они охватывают число отзывов на место, списания при ошибках, реальную стоимость за 1 000 отзывов, поля, точность определения местоположения и использование из ИИ-инструментов.
Сколько стоит парсинг отзывов Google Maps?
В EveryInfra один вызов возвращает до 100 отзывов за $0.001389, так что 1 000 отзывов стоят около $0.01389. Все тесты в этом руководстве заняли 36 запросов и 26 оплаченных вызовов, всего на $0.036113. В официальном Places API 1 000 отзывов сверх бесплатного лимита стоят около $5.00.
С чего начать
Откройте Быстрый старт, чтобы создать аккаунт и API-ключ. Новые аккаунты получают пробные кредиты, актуальные условия указаны на странице тарифов. Изучите бесплатный каталог по GET /api/v1/social/catalog и проверьте параметры и цену google_maps_reviews. Отправьте curl-запрос из этого руководства для знакомого вам места. Убедитесь, что поля соответствуют вашим задачам. Сохраните экспортёр в CSV, запустите его на двух страницах и добавляйте страницы по мере необходимости.
Чтобы сравнить платформы отзывов, посмотрите API данных Yelp и API данных Tripadvisor. Полное пошаговое описание разработки приведено в нашем руководстве по API отзывов Google Maps.
Методика и ограничения
Все вызовы EveryInfra мы выполнили 2 ноября 2026 г. с 00:14 до 00:36 по SGT. У тестового ключа был лимит 10 запросов в минуту. В каждом из трёх городов мы взяли одно заведение, поэтому выборки состоят из отзывов об этих заведениях на тот момент, а не обо всех компаниях. Результаты по релевантности и по новизне со временем меняются.
Цены и лимиты Places API взяты со страниц Google по состоянию на 2 ноября 2026 г. Мы не вызывали Places API с ключом. Код автоматизации браузера мы не запускали. К странице Maps был отправлен только один обычный HTTP-запрос.
Показатель «за 1,000 отзывов» мы рассчитывали так. Для EveryInfra брали charged_usd из каждого ответа, делили на число отзывов в этом ответе и умножали на 1 000. На всех девяти страницах было по 100 отзывов, поэтому каждая дала $0.01389. У места, где меньше 100 отзывов, или при меньшем limit цена за отзыв выше, поскольку оплата идёт за каждый вызов.
Для Places API мы делили цену тарифного уровня на пять, то есть исходили из пяти отзывов на вызов. Ни в одном из расчётов не учтены бесплатные лимиты и пробные кредиты. Помесячное число отзывов колебалось так, что объяснить это мы не можем, поэтому график тренда строить не стали.
В таблице перечислены все платные вызовы из этого руководства. Все значения времени указаны по SGT и относятся к 2 ноября 2026 г.
| Время (SGT) | Возможность | Объект | Получено | Списание |
|---|---|---|---|---|
| 00:14:43 | google_maps_reviews/search | Сингапур, бак кут тех | 50 заведений | $0.001389 |
| 00:15:07 | google_maps_reviews/profile | Song Fa Bak Kut Teh | 1 заведение | $0.001389 |
| 00:15:29, 00:16:42 | google_maps_reviews/reviews | Song Fa, сначала новые, страницы 1 и 2 | по 100 | по $0,001389 |
| 00:16:10 | google_maps_reviews/reviews | Song Fa, по релевантности | 100 | $0.001389 |
| 00:18:27 | google_maps_reviews/reviews, асинхронно | Song Fa, сначала новые, страница 3 | 100 | $0.001389 |
| 00:17:10, 00:24:22 | google_maps_reviews/search | Стоматология в Остине, две страницы | по 50 | по $0,001389 |
| 00:20:02 | google_maps_reviews/profile | Swish Dental | 1 заведение | $0.001389 |
| 00:20:36, 00:23:41 | google_maps_reviews/reviews | Swish Dental, две страницы | по 100 | по $0,001389 |
| 00:17:32, 00:19:39 | google_maps_reviews/search | Мехико, два способа указать место | по 50 | по $0,001389 |
| 00:22:35 | google_maps_reviews/profile | Tacos Chupacabras | 1 заведение | $0.001389 |
| 00:23:05, 00:23:24, 00:34:37 | google_maps_reviews/reviews | Chupacabras, три страницы | по 100 | по $0,001389 |
| с 00:32:39 до 00:36:21 | google_maps_reviews/reviews | Три запуска экспорта в CSV | 9 платных вызовов | $0.012501 |
Итого: 26 платных вызовов на сумму $0,036113. Ещё за два вызова сделали возврат средств: один дал пустой результат, а второй завершился ошибкой. Пять ошибок из-за неверных параметров или превышения лимита запросов ничего не стоили.
Источники
- Google Maps Platform, «Places API (New) REST reference, Place resource». https://developers.google.com/maps/documentation/places/web-service/reference/rest/v1/places
- Google Maps Platform, «Place Details (New)». https://developers.google.com/maps/documentation/places/web-service/place-details
- Google Maps Platform, прайс-лист основных сервисов. https://developers.google.com/maps/billing-and-pricing/pricing
- Google Maps Platform, обзор оплаты и цен, обновлено 2026-10-30. https://developers.google.com/maps/billing-and-pricing/overview
- Google Maps Platform, «Places API usage and billing». https://developers.google.com/maps/documentation/places/web-service/usage-and-billing
- Google Maps Platform, «Text Search (New)». https://developers.google.com/maps/documentation/places/web-service/text-search
- Google Maps Platform, правила использования Places API. https://developers.google.com/maps/documentation/places/web-service/policies
- Google Maps Platform, «Place IDs». https://developers.google.com/maps/documentation/places/web-service/place-id
- Google Maps Platform, сводки отзывов. https://developers.google.com/maps/documentation/places/web-service/review-summaries
- Google Maps Platform, примечания к выпускам Places API. https://developers.google.com/maps/documentation/places/web-service/release-notes
- Google Business Profile APIs, работа с данными отзывов. https://developers.google.com/my-business/content/review-data
- Google Business Profile APIs, accounts.locations.reviews.list. https://developers.google.com/my-business/reference/rest/v4/accounts.locations.reviews/list
- «Google Maps Platform Terms of Service», раздел 3.2.3(a). https://cloud.google.com/maps-platform/terms
- «Google Maps and Google Earth Additional Terms of Service». https://www.google.com/help/terms_maps/
- Правила Google Maps для пользовательского контента, запрещённый контент. https://support.google.com/contributionpolicy/answer/7400114
- robots.txt сайта google.com, скачан 2026-11-02. https://www.google.com/robots.txt
- IETF, RFC 9309 «Robots Exclusion Protocol». https://www.rfc-editor.org/rfc/rfc9309.html
- Блог Google, «Fan-Favorite Dining List», 8 октября 2026 г. https://blog.google/products-and-platforms/products/maps/google-maps-fan-favorite-dining-list/
- 9to5Google, Gemini в Google Maps на CarPlay, 21 октября 2026 г. https://9to5google.com/2026/10/21/google-maps-carplay-gemini/
- Search Engine Land, Google Ask Maps и локальный бизнес. https://searchengineland.com/google-ask-maps-make-your-business-easier-to-recommend-496672
- Апелляционный суд девятого округа США, дело hiQ Labs v. LinkedIn, 18 апреля 2022 г. https://cdn.ca9.uscourts.gov/datastore/opinions/2022/04/18/17-16783.pdf
- Окружной суд США по Северному округу Калифорнии, дело Meta Platforms 3:23-cv-00077, постановление от 23 января 2024 г. https://www.govinfo.gov/app/details/USCOURTS-cand-3_23-cv-00077/USCOURTS-cand-3_23-cv-00077-7
- Генеральный прокурор Калифорнии, «California Consumer Privacy Act». https://oag.ca.gov/privacy/ccpa
- Европейский союз, Регламент (ЕС) 2016/679 (GDPR). https://eur-lex.europa.eu/eli/reg/2016/679/oj
- PDPC Сингапура, обзор PDPA. https://www.pdpc.gov.sg/about/the-legislation/pdpa-overview
- PDPC Сингапура, «Personal Data Protection Act». https://www.pdpc.gov.sg/overview-of-pdpa/the-legislation/personal-data-protection-act
- Мексика, федеральный закон о защите персональных данных, находящихся у частных лиц, DOF 2025-03-20. https://www.ordenjuridico.gob.mx/Documentos/Federal/html/wo125102.html
- data.gov.sg, предприятия общепита с лицензией NEA. https://data.gov.sg/datasets/d_227473e811b09731e64725f140b77697/view
- Singapore Food Agency, «Track records», обновлено 1 ноября 2026 г. https://www.sfa.gov.sg/tools-and-resources/track-records
- INEGI, DENUE, национальный справочник экономических единиц. https://www.inegi.org.mx/app/mapa/denue/default.aspx
- Бюро переписи населения США, «County Business Patterns». https://www.census.gov/programs-surveys/cbp.html
- GitHub, open-source-проект парсера Google Maps, 7 148 звёзд. https://github.com/gosom/google-maps-scraper
- Issue 327 на GitHub, 1 сентября 2026 г. https://github.com/gosom/google-maps-scraper/issues/327
- Issue 338 на GitHub, 6 октября 2026 г. https://github.com/gosom/google-maps-scraper/issues/338
- Issue 341 на GitHub, 9 октября 2026 г. https://github.com/gosom/google-maps-scraper/issues/341
- Релизы на GitHub, с v1.16.3 по v1.18.1. https://github.com/gosom/google-maps-scraper/releases
- Playwright for Python, установка. https://playwright.dev/python/docs/intro
- Документация Python, модуль csv. https://docs.python.org/3/library/csv.html
- Stack Overflow, как получить больше 5 отзывов из Places API. https://stackoverflow.com/questions/39223719/to-get-more-than-5-reviews-from-google-places-api
- Stack Overflow, как получить последние отзывы через Places API. https://stackoverflow.com/questions/55235501/how-to-get-latest-reviews-using-google-places-api
- Reddit r/learnpython, как получить отзывы о заведениях. https://www.reddit.com/r/learnpython/comments/1c94ejb/how_can_i_get_places_reviews/
- Issue 337 на GitHub, 5 октября 2026 г. https://github.com/gosom/google-maps-scraper/issues/337
- Issue 346 на GitHub, 22 октября 2026 г. https://github.com/gosom/google-maps-scraper/issues/346
Справка BL-70