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

Представьте, что вы пытаетесь собрать огромное число поисковых фраз под Google. Если их десяток — несложно. Но когда речь идёт о тысячах и даже десятках тысяч ключевых слов, любой SEO-практик ощутит давление: стандартные инструменты уже не справляются, а привычная связка Key Collector, Google Ads и пара прокси-серверов выглядит как анахронизм. Мир меняется, и сегодня без обращения к официальному API жизнь кажется значительно сложнее.

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

Однако пусть это не пугает. Если вы готовы немного окунуться в технические дебри, настроить авторизацию и потанцевать с документами Google, то сможете получить доступ к Keyword Planner API. Это не просто полезный инструмент, а настоящий ключ к богачеству семантических данных. В этом материале вы найдёте чёткую инструкцию, как вместо дорогущих сторонних сервисов (часто от 300 долларов в месяц!) создать собственный «парсер» на базе Google Ads API. Приступим!

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

Почему вам стоит получить доступ к Keyword Planner API

Когда перед вами задача собрать масштабное семантическое ядро поисковых фраз под Google, пару десятков запросов не спасут. Классический Key Collector когда-то был надёжным товарищем, но времена изменились: теперь, особенно для российских аккаунтов, стандартный подход буксует. В итоге приходится смотреть на платные решения вроде Keyword Tool, которые выкачивают серьёзные суммы, но по сути транслируют те же данные, что вы могли бы взять из Google Ads напрямую. Хочется ведь не только работать без посредников, но и настраивать процесс под себя, верно?

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

Да, Key Collector всё ещё может сослужить службу для уже собранных массивов: он хорош в сортировке, чистке, группировке. Сервисы для распознавания капчи или прокси тут не обязательны, а инструменты вроде KeySo могут пригодиться для организации данных. Но в целом, если вы нацелены на самостоятельную интеграцию и не готовы выкладывать кучу денег за посредников, пора поворачивать в сторону Google Ads API. Это даст свободу настраивать всё под свои нужды, не зависеть от тарифов посредников и наконец выстроить собственный автоматизированный процесс.

С чего начинается путь к созданию своего Google-парсера через API

Хотите собрать более 40 тысяч ключевиков? Это реально, но сначала надо уладить формальные моменты. Придётся немного «поиграть по правилам»: без официального рекламного аккаунта Google Ads вы не получите доступ к Keyword Planner. Вам нужен действующий аккаунт с потраченным рекламным бюджетом — без реальных расходов Планировщик ключевых слов просто не будет доступен.

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

Когда у вас есть работающий рекламный аккаунт, следующий шаг — создание управляющей учётной записи (Manager Account, он же MCC). Зайдите на страницу Manager Accounts, зарегистрируйте новый управляющий аккаунт и затем в левом меню найдите раздел «Центр API». Там вы найдёте свой Developer token — запишите его.

Google Cloud Console: получаем Client ID и Client Secret для будущего парсинга

Чтобы ваш скрипт мог обращаться к Google Ads API, ему нужно пройти авторизацию по протоколу OAuth. Для этого понадобится зарегистрировать приложение в Google Cloud Console.

Парсинг Google по ключевым запросам: детальный план создания собственного бесплатного парсера
  • Войдите в Google Cloud Console под тем же аккаунтом, который привязан к вашему рекламному кабинету.
  • Создайте новый проект с любым названием.
  • Перейдите в раздел APIs & Services → Library, найдите Google Ads API и активируйте его.
  • Затем в APIs & Services → Credentials создайте новые учетные данные: выберите «OAuth client ID».
  • Тип приложения: Web application. Название произвольное, например “my-ads-api”.

В разделе Authorized redirect URIs добавьте:

http://localhost:8081/ http://localhost:8081
  • Нажмите «Create» — вы получите два важных параметра: Client ID и Client Secret.

Поясню насчёт двух почти одинаковых адресов: экспериментальным путём выяснено, что у некоторых срабатывает вариант со слэшем, у других — без него. Подстрахуйтесь, указав оба.

Получаем refresh_token для автоматической работы вашего Google-парсера

Для постоянного доступа вашего кода к API нужен refresh_token. Он обеспечивает автоматическое обновление сессионных ключей без вашего вмешательства.

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

Процесс следующий:

Установите библиотеку:

pip install google-ads

Создайте файл get_refresh_token.py со следующим кодом:

import logging from google.auth.transport.requests import Request from google_auth_oauthlib.flow import InstalledAppFlow logging.basicConfig(level=logging.DEBUG) def generate_refresh_token(client_id, client_secret): scopes = ["https://www.googleapis.com/auth/adwords"] flow = InstalledAppFlow.from_client_config( { "installed": { "client_id": client_id, "client_secret": client_secret, "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "redirect_uris": ["http://localhost:8081/"] } }, scopes, ) auth_url, state = flow.authorization_url( access_type="offline", include_granted_scopes="true", prompt='consent' ) print(f"URL для авторизации: {auth_url}") credentials = flow.run_local_server(port=8081, state=state) print(f"Ваш Refresh Token: {credentials.refresh_token}") generate_refresh_token( "Client ID", "Client secret" )

Подставьте свои Client ID и Client Secret. Запустите:

python get_refresh_token.py

Откройте в браузере ссылку, появившуюся в консоли. Авторизуйтесь в нужном рекламном аккаунте. По завершении скрипт выведет ваш refresh_token. Сохраните его!

Настройка файла google-ads.yaml — фундамент для вашего парсера

Все собранные ключи (developer_token, client_id, client_secret, refresh_token, login_customer_id) нужно свести в единый конфигурационный файл:

developer_token: "ВАШ_ТОКЕН_РАЗРАБОТЧИКА" client_id: "ВАШ_CLIENT_ID" client_secret: "ВАШ_CLIENT_SECRET" refresh_token: "ВАШ_REFRESH_TOKEN" login_customer_id: "ВАШ_МЕНЕДЖЕРСКИЙ_ID"

Обратите внимание, login_customer_id — это номер рекламного аккаунта, где идёт реальная реклама, а не вашего MCC. Убедитесь, что использовали нужный ID без дефисов.

Получение базового доступа к API: без этого ваш парсер останется тыквой

Несмотря на все подготовительные действия, по умолчанию у вас Test Access, и доступ к поисковым метрикам ключевых фраз будет ограничен. Нужен Basic Access. Для этого:

  • Перейдите в «Центр API» вашего MCC.
  • Напротив Test Access выберите «Подать заявку на базовый доступ».
  • Укажите, что собираетесь использовать API для собственного анализа или внутренней автоматизации.
  • Обычно ответ приходит за пару дней. При одобрении вы сможете свободно получать ключевые данные.

Важно: ваш MCC-аккаунт должен быть связан с рекламным. Если ещё нет, добавьте рекламный аккаунт в разделе «Аккаунты» и подтвердите связь.

Наконец, сам процесс парсинга: Python-скрипт для сбора семантики из Google

Приведённый ниже код — готовое решение. Он читает фразы из CSV, порциями по 10 ключей запрашивает их статистику у Keyword Planner API и записывает результаты в новый CSV. Настройка страны, языка и другие параметры поддаются изменениям по вашему желанию.

import csv import time from google.ads.googleads.client import GoogleAdsClient def chunk_list(lst, n): for i in range(0, len(lst), n): yield lst[i:i+n] def main(): client = GoogleAdsClient.load_from_storage("google-ads.yaml") keyword_plan_idea_service = client.get_service("KeywordPlanIdeaService") customer_id = "ВАШ_CUSTOMER_ID" # без дефисов keywords = [] with open("keywords.csv", "r", encoding="utf-8") as f: reader = csv.DictReader(f) for row in reader: kw = row['keyword'].strip() if kw: keywords.append(kw) chunk_size = 10 with open("keyword_data.csv", "w", newline="", encoding="utf-8") as outfile: writer = csv.writer(outfile) writer.writerow([ "keyword", "avg_monthly_searches", "competition", "low_top_of_page_bid_micros", "high_top_of_page_bid_micros" ]) for chunk in chunk_list(keywords, chunk_size): request = client.get_type("GenerateKeywordIdeasRequest") request.customer_id = customer_id request.geo_target_constants.append("geoTargetConstants/2250") # Франция request.language = "languageConstants/1010" # Французский язык request.keyword_seed.keywords.extend(chunk) response = keyword_plan_idea_service.generate_keyword_ideas(request=request) for idea in response.results: text = idea.text metrics = idea.keyword_idea_metrics avg_searches = metrics.avg_monthly_searches if metrics.avg_monthly_searches else 0 competition = metrics.competition.name if metrics.competition else "UNSPECIFIED" low_bid = metrics.low_top_of_page_bid_micros or 0 high_bid = metrics.high_top_of_page_bid_micros or 0 writer.writerow([ text, avg_searches, competition, low_bid, high_bid ]) time.sleep(1) if __name__ == "__main__": main()

Как это работает и дополнительные тонкости

  • Файл keywords.csv должен содержать столбец «keyword».
  • Скрипт разбивает ключи на порции по 10, чтобы не превысить лимиты API.
  • На каждом запросе вы можете настроить страну, язык и другие параметры. Например, код «2250» — это Франция, а «1010» — французский. Чтобы узнать коды нужных вам языков и регионов, используйте справочную документацию или небольшой скрипт ниже.

Чтобы определить языковые коды, можно выполнить GAQL-запрос:

from google.ads.googleads.client import GoogleAdsClient def main(): client = GoogleAdsClient.load_from_storage("google-ads.yaml") ga_service = client.get_service("GoogleAdsService") customer_id = "ВАШ_CUSTOMER_ID" query = """ SELECT language_constant.id, language_constant.code, language_constant.name, language_constant.targetable FROM language_constant ORDER BY language_constant.id """ response = ga_service.search_stream(customer_id=customer_id, query=query) for batch in response: for row in batch.results: lang = row.language_constant print(f"ID: {lang.id}, Code: {lang.code}, Name: {lang.name}, Targetable: {lang.targetable}") if __name__ == "__main__": main()

Запустите — в консоли вы увидите список доступных языков с их ID, которые можно использовать в вашем парсере.

Про лимиты и разные уровни доступа

  • С базовым доступом у вас есть квота примерно в 15 000 запросов к API в сутки. Так как в одном запросе можно обрабатывать до 10 фраз, это даёт возможность анализировать до 150 000 ключевых слов за день.

  • На стандартном уровне лимиты фактически снимаются, но для получения такого доступа придётся убедить Google в вашем серьёзном подходе: соблюдать ограничения, не злоупотреблять ресурсами и тратить солидные суммы на рекламу.

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

В завершение

Главный барьер в создании своего бесплатного парсера через Google Ads API — это получение базового уровня доступа. Без него даже самый изящный код не будет приносить пользу. Но если у вас есть реальный рекламный аккаунт, и вы чётко следуете инструкциям, всё, как правило, проходит гладко.

Надеюсь, этот материал поможет вам отказаться от дорогих посредников и даёт инструмент, с которым вы сможете самостоятельно формировать свои семантические базы. Следите за лимитами, оформляйте заявки на доступ аккуратно и пользуйтесь тем, что предлагает официальное API. Пусть ваши эксперименты будут продуктивными, а показатели поиска — понятными и точными!

Начать дискуссию