Иллюстрация скрапера Meta Ad LibraryFacebook & Instagram

Скрапер Meta Ad Library.

Соберите рекламу конкурентов в Facebook и Instagram. Найдите повторяющиеся предложения и сообщения и используйте их для своих тестов креативов.

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

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

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

01

Подготовьте бриф по креативам конкурентов

Если у вас подписочный бренд, каждый понедельник следите за пятью конкурентами. Группируйте рекламу по проблеме, обещанию, доказательству и предложению. Выберите три подхода для следующих тестов.

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

02

Следите за сезонной акцией

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

Ведите хронологию запуска и библиотеку предложений с заметками.

03

Найдите рекламодателей, которых раньше не отслеживали

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

Расширьте список конкурентов и решите, кого изучать первым.

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

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

  1. Откройте Actor на Apify, выберите Input и перейдите в редактор JSON, чтобы вставить конфигурацию.
  2. В редакторе JSON полностью замените входные данные примером. Вместо ZARA укажите название страницы или её числовой ID. В форме также удалите предзаполненное поле pageID, чтобы не собрать рекламу другого рекламодателя.
  3. Начните с одной страны, активных объявлений и лимита 50. Оставьте residential-прокси включённым. Для первой проверки не задавайте даты; добавьте период после проверки страницы.
  4. Запустите Actor и посмотрите журнал. Проверьте распознанные цели и фильтры, прежде чем считать пустой результат отсутствием данных.
  5. Откройте Storage → Dataset, проверьте несколько записей и экспортируйте вложенные данные в JSON или таблицу для первого просмотра в CSV.
Конфигурация первого запуска
{
  "pageIDs": ["ZARA"],
  "country": "GB",
  "activeStatus": "active",
  "maxAds": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

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

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

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

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

Способ поискаКогда использоватьЧто меняется
Название рекламодателя или брендаКогда использоватьУ вас есть список конкурентов для наблюдения.Что меняетсяУкажите числовые ID страниц, названия, имена пользователей или ссылки Facebook. Приоритет у проверенных совпадений; несколько точных непроверенных совпадений могут дать несколько страниц.
Поиск по ключевым словамКогда использоватьВы хотите найти подходящие результаты, прежде чем выбрать конкретные цели.Что меняетсяНесколько тематических запросов с общими страной, датами и типом совпадения. Они используют общий maxAds, повторные результаты удаляются.
Ссылки из библиотеки рекламыКогда использоватьВы уже настроили поиск на исходном сайте.Что меняетсяВставляйте ссылки на страницы, поиск или отдельные объявления. Фильтры поисковой ссылки важнее общих; ссылка на объявление получает его без этих фильтров.

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

Начало периода показа в YYYY-MM-DD. Объявления, запущенные раньше, тоже могут подходить. При одинаковых датах период расширяется на один день.

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

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

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

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

Цели и поисковые запросы6
adLibraryUrls
Список

Вставляйте ссылки на страницы, поиск или отдельные объявления. Фильтры поисковой ссылки важнее общих; ссылка на объявление получает его без этих фильтров.

adLibraryUrl
Текст

Вариант adLibraryUrls для одной ссылки. Для ясности используйте одно из этих полей. Обычные ссылки на страницы Facebook используют общие фильтры.

pageIDs
Список

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

pageID
ТекстПример в форме: 15087023444

Одна страница в форматах pageIDs. При поиске только по ключевым словам удалите предзаполненную страницу, иначе будут собраны обе цели.

keyword
Текст

Ищет объявления по одной теме у разных рекламодателей. Это отдельный поиск, который выполняется вместе с указанными страницами.

keywords
Список

Несколько тематических запросов с общими страной, датами и типом совпадения. Они используют общий maxAds, повторные результаты удаляются.

Рынки, даты и фильтры5
searchType
ТекстПо умолчанию: keyword_unordered

keyword_unordered допускает любой порядок слов; keyword_exact_phrase требует точную последовательность. Только для ключевых слов; search_type в ссылке имеет приоритет.

Рекомендуемые значения JSON
keyword_unordered keyword_exact_phrase
minDate
Текст

Начало периода показа в YYYY-MM-DD. Объявления, запущенные раньше, тоже могут подходить. При одинаковых датах период расширяется на один день.

maxDate
Текст

Включительная конечная дата периода показа. Вместе с minDate выбирает объявления, показывавшиеся в этот период, а не только созданные тогда.

activeStatus
ТекстПо умолчанию: allПример в форме: active

active собирает активные объявления, inactive остановленные, all включает архив. В форме указан active, но при отсутствии параметра действует all.

Рекомендуемые значения JSON
all active inactive
country
ТекстПо умолчанию: ALL

Код или название одной страны, ALL для всех рынков. Неизвестная страна заменяется на ALL с предупреждением; проверяйте журнал при слишком широких результатах.

Рекомендуемые значения JSON
ALL US GB DE FR ES IT BR MX CA AU IN AF AX AL DZ AS AD AO AI AQ AG AR AM AW AC AT AZ BH BD BB BY BE BZ BJ BM BT BO BQ BA BW BV IO VG BN BG BF BI KH CM CV KY CF TD CL CN CX CC CO KM CK CR HR CU CW CY CZ CD DK DJ DM DO EC EG SV GQ ER EE SZ ET FK FO FM FJ FI GF PF TF GA GM GE GH GI GR GL GD GP GU GT GG GN GW GY HT HM HN HK HU IS ID IR IQ IE IM IL CI JM JP JE JO KZ KE KI XK KW KG LA LV LB LS LR LY LI LT LU MO MG MW MY MV ML MT MH MQ MR MU YT MD MC MN ME MS MA MZ MM NA NR NP NL NC NZ NI NE NG NU NF KP MK MP NO OM PK PW PS PA PG PY PE PH PN PL PT PR QA CG RE RO RU RW BL KN LC MF PM VC WS SM ST SA SN RS SC SL SG SX SK SI SB SO ZA GS KR SS LK SH SD SR SJ SE CH SY TW TJ TZ TH BS TL TG TK TO TT TN TR TM TC TV UG UA AE UM VI UY UZ VU VA VE VN WF EH YE ZM ZW
Лимиты, подробности и прокси6
proxyConfiguration
ОбъектПо умолчанию: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}Пример в форме: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}

Используйте residential-прокси Apify. Адреса дата-центров часто блокируются. Оставляйте useApifyProxy true и apifyProxyGroups RESIDENTIAL.

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

От 1 до 6 параллельных сессий для нескольких целей и больших периодов. Выбирайте 1 для строгого порядка или при капчах; по умолчанию 4.

maxAds
Целое числоПример в форме: 100

Жёсткий лимит уникальных объявлений на весь запуск, включая все цели и рынки. Начните с 50. Без этого лимита широкий поиск может стать значительно больше.

maxPages
Целое число

Ограничивает страницы каждого временного сегмента, а не всего запуска. Полезно для тестов; для полного охвата уберите ограничение. Ноль или пустое поле означает без лимита.

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

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

pageSize
Целое числоПо умолчанию: 30

Запрашиваемый размер порции, а не гарантированное число записей. Meta выдаёт примерно 10 объявлений на страницу; увеличение параметра не снимает это ограничение.

Дополнительные настройки и восстановление8
raw
Истина или ложьПо умолчанию: false

Возвращает исходную структуру вместо нормализованного представления. Оставляйте false для стабильных столбцов анализа; true используйте для диагностики или собственных преобразований.

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

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

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

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

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

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

shardSplitThreshold
Целое числоПо умолчанию: 1500

Делит большие периоды при превышении этого числа объявлений. Работает только при maxConcurrency больше 1. Обычно оставляйте 1500; значения ниже 100 повышаются до 100.

docId
Текст

Переопределяет внутренний идентификатор запроса. Оставляйте пустым: Actor сам обновляет устаревшие ID. Это не ID рекламодателя или объявления.

proxySessionId
Текст

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

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

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

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

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

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

Еженедельное наблюдение за конкурентами

Соберите активную рекламу двух брендов в Великобритании с общим лимитом 100 уникальных объявлений. Каждую неделю запускайте новый сбор, добавляйте дату в Sheets и сравнивайте ID креативов с прошлой неделей.

Еженедельное наблюдение за конкурентами
{
  "pageIDs": ["ZARA", "H&M"],
  "country": "GB",
  "activeStatus": "active",
  "maxAds": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

Поиск повторяющегося предложения

Найдите рекламу США с фразой «free shipping». Это поиск по теме среди разных рекламодателей. Замените фразу своим предложением и удалите предзаполненные страницы перед запуском.

Поиск повторяющегося предложения
{
  "keywords": ["free shipping"],
  "searchType": "keyword_exact_phrase",
  "country": "US",
  "activeStatus": "active",
  "maxAds": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

Анализ прошлого периода кампании

Пример для сентября 2026 года собирает объявления, показывавшиеся в заданный период. Измените обе даты. Фильтр учитывает пересечение периода показа: объявление могло быть создано раньше начальной даты.

Анализ прошлого периода кампании
{
  "pageIDs": ["ZARA"],
  "country": "GB",
  "activeStatus": "all",
  "minDate": "2026-09-01",
  "maxDate": "2026-09-30",
  "maxAds": 100,
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

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

Используйте ID страниц и креативов для объединения, сохраняйте исходные ссылки, тексты, медиа и даты показов. У коммерческой рекламы расходы и охват часто отсутствуют; конверсии библиотека не предоставляет. Храните недельные снимки в BigQuery, раскрывайте массивы медиа через dbt и показывайте новые креативы в Looker Studio.

  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~meta-ad-library-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 для запуска и экспорта
Параметры экспорта набора данных

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

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

Результаты относятся к другому рекламодателю.

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

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

Используйте residential-прокси Apify. Адреса дата-центров часто блокируются. Оставляйте useApifyProxy true и apifyProxyGroups RESIDENTIAL.

Нужно ли менять расширенные настройки запросов?

Переопределяет внутренний идентификатор запроса. Оставляйте пустым: Actor сам обновляет устаревшие ID. Это не ID рекламодателя или объявления.

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

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

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

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

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

Google Sheets

Добавляйте записи через Make или n8n после успешного запуска. Удаляйте дубли по ad_archive_id и добавляйте collected_at. Оставьте колонки для зацепок, заметок и следующих тестов.

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

Попросите Claude собрать ограниченное число объявлений страницы, сгруппировать темы и указать ad_archive_id. Проверьте исходные креативы перед использованием обзора.

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

Поместите нужные поля в таблицу или BigQuery. Постройте числа объявлений по рекламодателю, дате начала и платформе. Подпишите их как наблюдения из библиотеки.

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

Сохраняйте исходный JSON каждого запуска с датой. Разворачивайте snapshot через dbt и ведите отдельную таблицу креативов по ad_archive_id.

Читать инструкцию
Скопировать запрос для Claude
Запрос для Claude + Apify MCP
Используй jmlp/meta-ad-library-scraper для сбора до 50 активных объявлений ZARA в GB. Сначала проверь схему Actor. Сгруппируй сообщения по зацепке и предложению, укажи исходные ID и предложи три проверяемые гипотезы кампании. Не делай выводов о расходах и конверсиях.

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

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

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

Коммерческая реклама обычно не раскрывает расходы и охват. Meta публикует их в основном для политической и общественной рекламы. Долгий срок работы заслуживает изучения, но не показывает конверсию, прибыльность или ROAS.

ad_archive_id
Стабильный ID рекламы для удаления дублей и ссылок на исходную библиотеку.
page_id / page_name
Рекламодатель записи.
is_active / start_date / end_date
Наблюдаемая активность и даты показа; даты в секундах Unix.
publisher_platform
Facebook, Instagram и другие указанные каналы Meta.
snapshot
Текст, заголовок, CTA, посадочная страница и медиа креатива.
collation_id / collation_count
ID и количество связанных вариантов рекламы.

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

Можно использовать без входа в Facebook?

Да. Скрапер читает открытую библиотеку без аккаунта Facebook. Для запуска всё равно нужен аккаунт Apify.

Можно определить самые успешные объявления?

Можно изучить повторяющиеся сообщения и долго работающие креативы. Библиотека не даёт данных о конверсиях для определения победителя.

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

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

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

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

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