Иллюстрация скрапера Google SearchОрганические результаты поиска

Скрапер Google Search.

Регулярно повторяйте поисковые запросы. Сравнивайте сайты, позиции, заголовки и сниппеты, чтобы найти пробелы в контенте и новых конкурентов.

Запустить на Apify

Как использовать этот скрапер.

Попробуйте эти сценарии для маркетинга, роста и изучения конкурентов.

01

Следите за важными для покупателей запросами

Команда B2B может еженедельно отслеживать десять запросов, например best CRM for small teams, на одном рынке. Отмечайте новых конкурентов, изменения позиций и обещания в заголовках.

Ведите еженедельный обзор выдачи с наблюдаемой позицией своего сайта и изменениями у конкурентов.

02

Выберите контент для следующего исследования

Сгруппируйте повторяющиеся заголовки по намерению: сравнения, цены, инструкции или альтернативы. Найдите темы, где вашего контента нет или он отвечает на другой вопрос.

Расставьте приоритеты идей контента и свяжите их с исходными результатами поиска.

03

Найдите компании конкретной ниши

Найдите узкую категорию и проверьте домены выдачи. Просмотрите сайты, затем передайте список в Website Contacts для дальнейшего исследования компаний.

Сохраните список компаний с поисковыми источниками и вручную проверенными сайтами.

ОТ ПЕРВОГО ЗАПУСКА К РЕГУЛЯРНОЙ РАБОТЕ

Первый запуск, шаг за шагом.

  1. Откройте Actor на Apify, выберите Input и перейдите в редактор JSON, чтобы вставить конфигурацию.
  2. Замените пример своим запросом. В queries каждый поиск должен быть отдельной строкой. Кавычки, site: и исключения работают как в Google; не объединяйте весь список в один длинный запрос.
  3. Явно задайте country и language, затем начните с maxItems 20 на запрос. Actor использует группу прокси GOOGLE_SERP Apify; перед запуском убедитесь, что у вашей учётной записи есть доступ.
  4. Запустите Actor и посмотрите журнал. Проверьте распознанные цели и фильтры, прежде чем считать пустой результат отсутствием данных.
  5. Откройте Storage → Dataset, проверьте несколько записей и экспортируйте вложенные данные в JSON или таблицу для первого просмотра в CSV.
Конфигурация первого запуска
{
  "queries": ["web scraping tools"],
  "country": "US",
  "language": "en",
  "maxItems": 20
}

Вставьте это в редактор JSON Actor. Перед запуском замените примеры своими целями.

Посмотреть актуальные параметры на Apify

Выберите способ поиска.

Этот скрапер возвращает органические результаты Google. Используйте обычные запросы или поисковые операторы и сохраняйте одинаковые страну, язык и лимит при сравнении запусков. Платная реклама и AI Overviews не собираются.

Способ поискаКогда использоватьЧто меняется
Поиск по ключевым словамКогда использоватьВы хотите найти подходящие результаты, прежде чем выбрать конкретные цели.Что меняетсяВводите запросы отдельными элементами. Работают кавычки, site: и исключения с минусом. Ссылка Google передаёт текст запроса, а не все URL-фильтры.
Ссылки на страницы поискаКогда использоватьВы уже настроили поиск на исходном сайте.Что меняетсяОдин запрос вместе с queries или вместо него. Для нескольких тем используйте queries, сохраняя контекст ранжирования каждого поиска.
Выбор рынкаКогда использоватьВам нужны данные по конкретной стране или рынку.Что меняетсяРынок поиска как двухбуквенный код или название страны. Меняет географическое ранжирование и отличается от языка и страны прокси.

Важное различие

Максимум органических результатов на запрос, а не на весь запуск. Два запроса с maxItems 20 могут дать 40 строк. Google выдаёт 10 результатов на страницу.

Сравнить с похожим скрейпером

Все параметры с объяснениями.

Используйте точные имена полей ниже в JSON. В форме Apify вводите элементы списков отдельно и соблюдайте числовые и логические типы.

Значение по умолчанию и предзаполнение различаются. Первое действует при пропуске настройки; второе является примером в форме Apify. Проверяйте цели и лимиты перед каждым запуском. У некоторых настроек нет значения по умолчанию в схеме. Всё равно нужно указать хотя бы одну поддерживаемую цель.

Цели и поисковые запросы2
queries
СписокПример в форме: ["web scraping tools"]

Вводите запросы отдельными элементами. Работают кавычки, site: и исключения с минусом. Ссылка Google передаёт текст запроса, а не все URL-фильтры.

query
Текст

Один запрос вместе с queries или вместо него. Для нескольких тем используйте queries, сохраняя контекст ранжирования каждого поиска.

Рынки, даты и фильтры4
country
Текст

Рынок поиска как двухбуквенный код или название страны. Меняет географическое ранжирование и отличается от языка и страны прокси.

language
ТекстПо умолчанию: en

Язык интерфейса Google, например en, de или pt-BR. Не гарантирует, что все найденные страницы написаны на этом языке.

timeRange
ТекстПо умолчанию: any

Фильтрует актуальность в Google: hour, day, week, month, year или any. Не восстанавливает прошлые позиции или историческую выдачу.

Рекомендуемые значения JSON
any hour day week month year
safeSearch
Истина или ложьПо умолчанию: false

Включает SafeSearch Google. Сохраняйте одинаковую настройку между запусками, чтобы не принять изменения фильтра за изменения позиций.

Лимиты, подробности и прокси5
maxItems
Целое числоПо умолчанию: 10

Максимум органических результатов на запрос, а не на весь запуск. Два запроса с maxItems 20 могут дать 40 строк. Google выдаёт 10 результатов на страницу.

maxConcurrency
Целое числоПо умолчанию: 3

От 1 до 10 параллельных запросов. Страницы внутри запроса обходятся последовательно. Начните с 3 и небольшого числа результатов.

delayMs
Целое числоПо умолчанию: 800

Пауза между запросами страниц в миллисекундах. Увеличивайте при ограничениях источника; уменьшение не устраняет задержки сети и лимиты запросов.

maxPagesPerQuery
Целое число

Лимит страниц на запрос. На странице 10 органических результатов. При maxItems 100 и maxPagesPerQuery 2 получится не больше примерно 20 на запрос.

proxyConfiguration
ОбъектПо умолчанию: {"useApifyProxy":true,"apifyProxyGroups":["GOOGLE_SERP"]}

Actor всегда использует группу GOOGLE_SERP Apify; другие не дают пригодных результатов. Учитывается только страна прокси. Ваш тариф должен поддерживать эту группу.

Дополнительные настройки и восстановление4
proxyRotations
Целое числоПо умолчанию: 3

Повторяет отклонённые запросы с новой прокси-сессией. Дополнительные попытки помогают при временных блокировках, но увеличивают время и трафик. Меняйте стандартное значение только при необходимости по журналу.

resume
Истина или ложьПо умолчанию: true

Сохраняет прогресс примерно каждые 30 секунд для продолжения после перезапуска или миграции Apify. Обычно оставляйте включённым.

continueFromLastRun
Истина или ложьПо умолчанию: false

Продолжает незавершённую работу предыдущего запуска с теми же входными данными. Старые результаты остаются в его dataset. Для нового или регулярного сбора оставляйте false.

impersonate
ТекстПо умолчанию: chrome131

Идентификатор браузера для запросов. Сохраняйте стандарт Actor, кроме диагностики мгновенных блокировок. Он меняет отпечаток запроса, а не запрашиваемые данные.

Справочник соответствует параметрам Actor. Перед изменением рабочего процесса проверьте актуальную форму. Посмотреть актуальные параметры на Apify.

Готовые конфигурации.

Каждый пример рассчитан на отдельный запуск. Начните с малого, проверьте результаты и затем расширяйте охват. Измените цели, страны и даты под свою задачу.

Повторяемая проверка видимости в поиске

Три запроса с maxItems 20 могут вернуть до 60 строк. Еженедельно используйте ту же конфигурацию и сохраняйте запрос, позицию и дату сбора. Для сравнения рынков запустите отдельно другую страну.

Повторяемая проверка видимости в поиске
{
  "queries": [
    "web scraping tools",
    "competitor ad tracking",
    "marketing data pipeline"
  ],
  "country": "US",
  "language": "en",
  "maxItems": 20,
  "safeSearch": false
}

Изучение контента одного домена

Используйте site: и фразы в кавычках для поиска проиндексированных страниц домена. Результаты отражают индекс Google, а не полный обход сайта. Замените apify.com и фразы своими целями.

Изучение контента одного домена
{
  "queries": ["site:apify.com \"ad library\"", "site:apify.com \"google search\""],
  "country": "GB",
  "language": "en",
  "maxItems": 10
}

Поиск недавно проиндексированного контента

Используйте week для поиска свежих материалов. Фильтр относится к давности в индексе; он не восстанавливает позиции прошлой недели и не подтверждает дату первой публикации.

Поиск недавно проиндексированного контента
{
  "queries": ["dbt BigQuery tutorial", "marketing analytics SQL"],
  "country": "US",
  "language": "en",
  "timeRange": "week",
  "maxItems": 20
}

Запускайте, проверяйте, экспортируйте, повторяйте.

Каждая строка относится к запросу и позиции. Ссылка может быть восстановлена из пути, показанного Google; проверьте url_is_exact и сомнительные адреса перед обходом или объединением с конкретной страницей. Сохраняйте снимки с датой. Данных об объёме поиска, платной рекламе и исторических позициях нет.

  1. Проверьте набор данных и запись SUMMARY. Сравните количество с лимитом, изучите ошибки и пропущенные входные данные, проверьте несколько исходных ссылок.
  2. Сохраняйте исходные ID и добавляйте collected_at и run_id. Используйте CSV для простых столбцов, JSON для списков и вложенных подробностей.
  3. Сохраните проверенную конфигурацию как Apify Task и задайте расписание. Для регулярных снимков оставьте continueFromLastRun false. Убирайте дубликаты по ID, сохраняя даты наблюдений.
  4. В Make или n8n дождитесь завершения запуска, получите dataset и сопоставьте поля с Sheets или хранилищем. Передавайте данные в Looker Studio через таблицу отчётов; преобразуйте и проверяйте модели с dbt.
  5. Этот же JSON работает с API Actors Apify. В Claude с Apify MCP назовите Actor, попросите проверить схему и заранее задайте цели, рынки и лимиты результатов.

Продолжение не создаёт новый снимок

resume защищает текущий запуск при перезапуске Apify. continueFromLastRun продолжает предыдущий запуск с той же конфигурацией; старые записи остаются в старом dataset. Объедините оба набора и увеличьте достигнутый лимит. Для наблюдения сегодняшних изменений начните новый сбор.

Открыть инструкции для Sheets, Claude, Looker и BigQuery
Запуск Actor через API

Сохраните одну из конфигураций выше в input.json. Задайте в терминале APIFY_TOKEN своим токеном Apify и отправьте файл как тело запроса.

Запустить сбор
curl --fail-with-body --request POST \
  --url "https://api.apify.com/v2/actors/jmlp~google-search-scraper/runs" \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header "Content-Type: application/json" \
  --data-binary @input.json

Ответ содержит ID запуска и defaultDatasetId, а не готовые результаты. Дождитесь успешного завершения, задайте DATASET_ID идентификатором набора и получите записи. Для больших наборов используйте limit и offset для постраничной выгрузки.

Получить набор данных
curl --fail-with-body \
  --url "https://api.apify.com/v2/datasets/$DATASET_ID/items?format=json" \
  --header "Authorization: Bearer $APIFY_TOKEN"

Документация API Apify для запуска и экспорта
Параметры экспорта набора данных

Если результаты выглядят неверно.

Меняйте по одному параметру, сохраняйте небольшой лимит и проверяйте сводку перед расширением сбора.

Источник возвращает пустые страницы или ошибки доступа.

Actor всегда использует группу GOOGLE_SERP Apify; другие не дают пригодных результатов. Учитывается только страна прокси. Ваш тариф должен поддерживать эту группу.

Можно ли считать каждую ссылку точным адресом страницы?

Каждая строка относится к запросу и позиции. Ссылка может быть восстановлена из пути, показанного Google; проверьте url_is_exact и сомнительные адреса перед обходом или объединением с конкретной страницей. Сохраняйте снимки с датой. Данных об объёме поиска, платной рекламе и исторических позициях нет.

Выбранная страна не даёт полезных результатов.

Рынок поиска как двухбуквенный код или название страны. Меняет географическое ранжирование и отличается от языка и страны прокси.

Запуск завершился успешно, но данных нет

Успешный статус означает завершение работы Actor, а не наличие данных у источника. Проверьте SUMMARY.inputProblem, SUMMARY.problem и журнал: возможны отсутствующие цели, неподдерживаемые фильтры или отклонённые запросы. Попробуйте известную цель с меньшим числом фильтров.

Записей меньше, чем ожидалось

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

Используйте результаты в своих инструментах.

Google Sheets

Добавляйте query, position, title, url, url_is_exact и collected_at. Выделите домен в отдельную колонку и фильтруйте свой сайт и постоянных конкурентов.

Читать инструкцию
Claude + MCP

Попросите Claude сгруппировать намерения и сравнить темы заголовков, указывая запрос и позицию. Одной выдачи недостаточно для оценки полного содержания или качества страницы.

Читать инструкцию
Looker Studio

Отслеживайте позицию и частоту появления конкурентов в таблице с датами. Сохраняйте одинаковые страну и язык между запусками.

Читать инструкцию
BigQuery + dbt

Разбейте наблюдения по дате сбора, сохраняя запрос, страну и язык. Сравнивайте позиции подтверждённых доменов в SQL. Проверьте восстановленные URL перед использованием как точных ID страниц.

Читать инструкцию
Скопировать запрос для Claude
Запрос для Claude + Apify MCP
Проверь jmlp/google-search-scraper и собери до 20 органических результатов для best CRM for small teams на английском US. Сгруппируй темы заголовков и домены, укажи query и position, отметь восстановленные URL и предложи вопросы для контента. Не выдумывай частотность запросов.

Какие поля вы получите.

Сохраняйте время сбора и исходные ID: они нужны для проверки источника результата и сравнения с последующими запусками.

Прежде чем делать выводы

Скрапер возвращает органическую выдачу. Частотность и данные платных ключевых слов требуют другой базы. Выдача меняется по рынкам и времени. Часть URL восстановлена: проверяйте url_is_exact и ссылки перед обходом или объединением данных по странице.

query / position
Поисковый запрос и органическая позиция, начиная с единицы.
title / snippet
Заголовок и описание, показанные в результате.
url
URL, полученный из показанного результата.
url_is_exact
Показывает, был ли URL точным или восстановлен из навигационной цепочки.
displayed_url
Исходный URL или текст навигационной цепочки Google.

Частые вопросы.

Он возвращает частотность или сложность ключевых слов?

Нет. Он возвращает органические результаты, позиции, заголовки, URL и сниппеты. Для частотности и сложности нужна другая база.

Все ли URL точные?

Нет. Если Google показывает навигационную цепочку, скрапер может восстановить URL. Поле url_is_exact отмечает это различие.

Источник и актуальные сведения: Actor Google Search от JMLP на Apify.

Другие скраперы,
которые могут пригодиться.

Поговорим о
вашем проекте.

Расскажите, что нужно собрать или понять. Я помогу со скрапером на заказ, конвейером или анализом.

Обсудить проект