Imagen del scraper Meta Ad LibraryFacebook & Instagram

Meta Ad Library Scraper.

Recopila los anuncios de Facebook e Instagram de tus competidores. Busca ofertas y mensajes repetidos y úsalos para preparar tus propias pruebas creativas.

Ejecutar en Apify

Cómo puedes usar este scraper.

Prueba estos ejemplos para marketing, crecimiento y análisis de la competencia.

01

Prepara un informe creativo de competidores

Si tu marca vende suscripciones, sigue cinco competidores cada lunes. Agrupa los anuncios por problema, promesa, prueba y oferta. Elige tres enfoques para tu siguiente ronda de tests.

Tendrás una hoja con enlaces creativos, categorías de ganchos, tus notas y una prueba propuesta.

02

Sigue una promoción estacional

Recopila anuncios a diario durante una promoción. Compara nuevos ID y cambios de texto para ver cuándo aparecen descuentos, packs o promesas de entrega.

Conserva una cronología de lanzamientos y biblioteca de ofertas con tus notas.

03

Descubre anunciantes que no seguías

Busca una categoría como running shoes para descubrir más anunciantes. Revisa los resultados antes de añadirlos a tu seguimiento habitual.

Amplía tu lista de competidores y decide a quién investigar primero.

DE LA PRIMERA EJECUCIÓN A UN FLUJO RECURRENTE

Tu primera ejecución, paso a paso.

  1. Abre el Actor en Apify, entra en Input y cambia al editor JSON para pegar una configuración.
  2. En el editor JSON, sustituye toda la entrada por el ejemplo. Cambia ZARA por el nombre o ID numérico de tu página. En el formulario, borra también el pageID prellenado para no recopilar otro anunciante.
  3. Empieza con un país, anuncios activos y un límite de 50. Mantén activado el proxy residencial. Deja las fechas vacías en esta prueba y añade un periodo cuando confirmes la página.
  4. Inicia la ejecución y revisa el registro. Comprueba qué objetivos y filtros se interpretaron antes de concluir que no hay datos.
  5. Abre Storage → Dataset, revisa varios registros y exporta JSON para datos anidados o CSV para una primera revisión en una hoja.
Configuración inicial
{
  "pageIDs": ["ZARA"],
  "country": "GB",
  "activeStatus": "active",
  "maxAds": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

Pégalo en el editor JSON del Actor. Cambia los ejemplos por tus propios objetivos antes de ejecutar.

Consulta el formulario actual en Apify

Elige cómo buscar.

Elige una página si conoces al anunciante, o una palabra clave para descubrir anuncios sobre un tema. Son búsquedas separadas: una palabra clave no limita automáticamente todas las páginas introducidas.

Método de búsquedaCuándo usarloQué cambia
Nombre del anunciante o marcaCuándo usarloTienes una lista de competidores.Qué cambiaIntroduce IDs numéricos, nombres, usuarios o enlaces de Facebook. Se priorizan coincidencias verificadas; varios nombres exactos no verificados pueden generar varias páginas.
Búsqueda por palabras claveCuándo usarloQuieres encontrar resultados relevantes antes de elegir objetivos concretos.Qué cambiaVarias búsquedas temáticas con país, fechas y coincidencia comunes. Comparten maxAds y los resultados repetidos se eliminan.
URLs de la biblioteca de anunciosCuándo usarloYa configuraste la búsqueda en el sitio de origen.Qué cambiaPega URLs de páginas, búsquedas o anuncios individuales. Los filtros de la URL prevalecen sobre los globales; una URL de anuncio lo obtiene sin esos filtros.

La diferencia importante

Inicio de la ventana de difusión en YYYY-MM-DD. Pueden coincidir anuncios anteriores aún activos. Fechas inicial y final iguales se amplían un día.

Compara el scraper relacionado

Todos los parámetros, explicados.

Usa estos nombres exactos en JSON. En el formulario de Apify, introduce cada elemento de las listas por separado y mantén números y booleanos en su tipo correcto.

Default y prefill son distintos. El valor por defecto se aplica si omites un ajuste; el prellenado es un ejemplo introducido en el formulario de Apify. Revisa objetivos y límites antes de cada ejecución. Algunos ajustes no tienen valor por defecto en el esquema. Debes indicar al menos un objetivo admitido.

Objetivos y búsquedas6
adLibraryUrls
Lista

Pega URLs de páginas, búsquedas o anuncios individuales. Los filtros de la URL prevalecen sobre los globales; una URL de anuncio lo obtiene sin esos filtros.

adLibraryUrl
Texto

Versión para una sola URL de adLibraryUrls. Usa un campo u otro para mayor claridad. Los enlaces normales de Facebook usan los filtros globales.

pageIDs
Lista

Introduce IDs numéricos, nombres, usuarios o enlaces de Facebook. Se priorizan coincidencias verificadas; varios nombres exactos no verificados pueden generar varias páginas.

pageID
TextoEjemplo precargado: 15087023444

Una página, con los mismos formatos que pageIDs. Borra la página precargada si solo buscas por palabra clave; de lo contrario se recopilan ambos objetivos.

keyword
Texto

Busca anuncios sobre un tema entre anunciantes. Es independiente de la búsqueda de páginas y se añade a los objetivos que hayas dejado.

keywords
Lista

Varias búsquedas temáticas con país, fechas y coincidencia comunes. Comparten maxAds y los resultados repetidos se eliminan.

Mercados, fechas y filtros5
searchType
TextoPor defecto: keyword_unordered

keyword_unordered admite cualquier orden; keyword_exact_phrase exige la frase seguida y en ese orden. Solo afecta a palabras clave; search_type de la URL prevalece.

Valores JSON sugeridos
keyword_unordered keyword_exact_phrase
minDate
Texto

Inicio de la ventana de difusión en YYYY-MM-DD. Pueden coincidir anuncios anteriores aún activos. Fechas inicial y final iguales se amplían un día.

maxDate
Texto

Final incluido de la ventana de difusión. Con minDate selecciona anuncios que se mostraron en el periodo, no solo creados en él.

activeStatus
TextoPor defecto: allEjemplo precargado: active

active recoge anuncios activos; inactive, detenidos; all incluye el archivo. El formulario precarga active, pero omitir el campo utiliza all.

Valores JSON sugeridos
all active inactive
country
TextoPor defecto: ALL

Un código o nombre de país, o ALL para todos. Los países no reconocidos pasan a ALL con un aviso; revisa el registro si el filtro parece demasiado amplio.

Valores JSON sugeridos
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
Límites, detalles y proxies6
proxyConfiguration
ObjetoPor defecto: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}Ejemplo precargado: {"useApifyProxy":true,"apifyProxyGroups":["RESIDENTIAL"]}

Usa un proxy residencial de Apify. Los de centros de datos suelen bloquearse. Mantén useApifyProxy true y apifyProxyGroups en RESIDENTIAL.

maxConcurrency
EnteroPor defecto: 4

Entre 1 y 6 sesiones paralelas. Varios objetivos y periodos grandes pueden ejecutarse juntos. Usa 1 para mantener el orden o si hay captchas; el valor predeterminado es 4.

maxAds
EnteroEjemplo precargado: 100

Límite de anuncios únicos de toda la ejecución, incluidos todos los objetivos y mercados. Empieza con 50. Si lo dejas vacío, una búsqueda amplia puede crecer mucho.

maxPages
Entero

Limita páginas en cada fragmento de fechas, no en toda la ejecución. Sirve para probar; elimínalo para mayor cobertura. Cero o vacío significa sin límite.

delayMs
EnteroPor defecto: 300

Pausa entre solicitudes de páginas, en milisegundos. Auméntala si la fuente limita solicitudes; reducirla no elimina la latencia ni sus límites.

pageSize
EnteroPor defecto: 30

Tamaño solicitado del lote, no un total garantizado. Meta devuelve aproximadamente 10 anuncios por página; aumentarlo no elimina ese límite.

Ajustes avanzados y recuperación8
raw
Verdadero o falsoPor defecto: false

Devuelve la estructura de la fuente en lugar de la presentación normalizada. Mantén false para columnas consistentes y usa true para depuración o transformaciones propias.

proxyRotations
EnteroPor defecto: 3

Reintenta solicitudes rechazadas con una sesión proxy nueva. Más intentos pueden superar bloqueos temporales, pero añaden tiempo y tráfico. Mantén el valor predeterminado salvo que el registro indique un motivo para cambiarlo.

resume
Verdadero o falsoPor defecto: true

Guarda el progreso aproximadamente cada 30 segundos para continuar tras un reinicio o migración. Déjalo activado.

continueFromLastRun
Verdadero o falsoPor defecto: false

Continúa el trabajo pendiente de la ejecución anterior con la misma entrada. Los resultados anteriores quedan en su dataset. Usa false para una colección nueva o periódica.

shardSplitThreshold
EnteroPor defecto: 1500

Divide periodos grandes si superan este número de anuncios. Solo funciona con maxConcurrency mayor que 1. Mantén 1500 salvo ajustes de archivos grandes; menos de 100 se convierte en 100.

docId
Texto

Sobrescribe un documento interno de solicitud. Déjalo vacío: el Actor actualiza IDs obsoletos automáticamente. No es un ID de anunciante ni de anuncio.

proxySessionId
Texto

Fija una sesión proxy para depuración. Déjalo vacío en uso normal. Los trabajos paralelos necesitan sesiones propias y pueden ignorar esta sesión fija.

impersonate
TextoPor defecto: chrome146

Identidad de navegador utilizada en las solicitudes. Conserva el valor predeterminado salvo que investigues bloqueos inmediatos. Cambia la huella de la solicitud, no los datos solicitados.

Esta referencia sigue los campos del Actor. Revisa el formulario actual antes de cambiar un flujo de producción. Consulta el formulario actual en Apify.

Configuraciones listas para copiar.

Cada ejemplo es una ejecución independiente. Empieza con poco, revisa los resultados y amplía después. Adapta objetivos, países y fechas a tu pregunta.

Seguimiento semanal de competidores

Recopila anuncios activos de dos marcas en Reino Unido, con 100 anuncios únicos en total. Programa una ejecución nueva cada semana, añade la fecha en Sheets y compara los IDs con la semana anterior.

Seguimiento semanal de competidores
{
  "pageIDs": ["ZARA", "H&M"],
  "country": "GB",
  "activeStatus": "active",
  "maxAds": 100,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

Encuentra una oferta repetida

Busca anuncios de EE. UU. con la frase «free shipping». Es una búsqueda temática entre anunciantes. Cambia la frase por tu oferta y borra cualquier página prellenada antes de ejecutar.

Encuentra una oferta repetida
{
  "keywords": ["free shipping"],
  "searchType": "keyword_exact_phrase",
  "country": "US",
  "activeStatus": "active",
  "maxAds": 50,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

Revisa un periodo de campaña anterior

Usa este ejemplo de septiembre de 2026 para revisar anuncios difundidos en un periodo. Cambia ambas fechas. Los filtros se basan en la coincidencia de difusión, por lo que un anuncio puede haberse creado antes de la fecha inicial.

Revisa un periodo de campaña anterior
{
  "pageIDs": ["ZARA"],
  "country": "GB",
  "activeStatus": "all",
  "minDate": "2026-09-01",
  "maxDate": "2026-09-30",
  "maxAds": 100,
  "maxConcurrency": 4,
  "proxyConfiguration": {
    "useApifyProxy": true,
    "apifyProxyGroups": ["RESIDENTIAL"]
  }
}

Ejecuta, revisa, exporta y repite.

Usa IDs de página y anuncio para unir datos y guarda enlaces, texto, medios y fechas de difusión. En anuncios comerciales es normal que falten gasto o alcance; no hay resultados de conversión. Guarda muestras semanales en BigQuery, aplana medios con dbt y muestra nuevos anuncios en Looker Studio.

  1. Revisa el dataset y el registro SUMMARY. Compara el total con tu límite, revisa entradas fallidas u omitidas y verifica algunos enlaces originales.
  2. Conserva los IDs originales y añade collected_at y run_id al guardar. Usa CSV para columnas planas y JSON para arrays o detalles anidados.
  3. Guarda la configuración probada como Apify Task y prográmala. Para capturas periódicas, deja continueFromLastRun en false. Elimina duplicados por ID conservando la fecha de cada observación.
  4. En Make o n8n, espera una ejecución correcta, obtiene el dataset y mapea campos a Sheets o tu almacén. Alimenta Looker Studio mediante una tabla de informes y usa dbt para transformar y validar modelos.
  5. El mismo JSON sirve con la API de Actors de Apify. En Claude con Apify MCP, indica este Actor, pide que revise el esquema y define objetivos, mercados y límites antes de ejecutar.

Reanudar no es obtener una captura nueva

resume protege la ejecución actual si Apify la reinicia. continueFromLastRun continúa una anterior con la misma configuración; sus registros siguen en el dataset anterior. Une ambos datasets y aumenta un límite ya alcanzado. Empieza de nuevo si quieres ver qué ha cambiado hoy.

Sigue las guías para Sheets, Claude, Looker y BigQuery
Ejecuta este Actor con la API

Guarda una configuración anterior como input.json. Define APIFY_TOKEN con tu token de Apify en la terminal y envía el archivo como cuerpo de la solicitud.

Inicia la ejecución
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

La respuesta contiene un ID de ejecución y defaultDatasetId, no resultados finales. Espera a que termine con éxito, define DATASET_ID con ese ID y recupera los elementos. Para datasets grandes, usa limit y offset para paginar.

Recupera el dataset
curl --fail-with-body \
  --url "https://api.apify.com/v2/datasets/$DATASET_ID/items?format=json" \
  --header "Authorization: Bearer $APIFY_TOKEN"

Referencia de la API de ejecución y exportación de Apify
Opciones de exportación del dataset

Cuando los resultados no cuadran.

Cambia un ajuste cada vez, mantén un límite bajo y revisa el resumen antes de ampliar.

Los resultados pertenecen a otro anunciante.

Introduce IDs numéricos, nombres, usuarios o enlaces de Facebook. Se priorizan coincidencias verificadas; varios nombres exactos no verificados pueden generar varias páginas.

La fuente devuelve páginas vacías o errores de acceso.

Usa un proxy residencial de Apify. Los de centros de datos suelen bloquearse. Mantén useApifyProxy true y apifyProxyGroups en RESIDENTIAL.

¿Debo cambiar los ajustes avanzados de las solicitudes?

Sobrescribe un documento interno de solicitud. Déjalo vacío: el Actor actualiza IDs obsoletos automáticamente. No es un ID de anunciante ni de anuncio.

La ejecución terminó sin resultados

El éxito indica que el Actor terminó, no que la fuente devolviera datos. Revisa SUMMARY.inputProblem, SUMMARY.problem y el registro: pueden faltar objetivos, haber filtros inválidos o solicitudes rechazadas. Prueba un objetivo conocido con menos filtros.

Menos registros de lo esperado

Revisa límites globales, por búsqueda y por página, cobertura y duplicados. Varias búsquedas pueden encontrar el mismo registro. El total de la fuente puede incluir datos no disponibles públicamente. Revisa los trabajos pendientes antes de dar el dataset por completo.

Usa los resultados en tus herramientas.

Google Sheets

Usa Make o n8n para añadir registros tras cada ejecución correcta. Elimina duplicados con ad_archive_id y añade collected_at. Reserva columnas para ganchos, notas de ofertas y próximos tests.

Leer la guía
Claude + MCP

Pide a Claude anuncios limitados de una página, agrupación por tema y citas de ad_archive_id. Revisa las creatividades originales antes de usar el informe.

Leer la guía
Looker Studio

Lleva los campos necesarios a una hoja o BigQuery. Grafica anuncios por anunciante, fecha de inicio y plataforma. Etiqueta las cifras como observaciones de la biblioteca.

Leer la guía
BigQuery + dbt

Guarda JSON original de cada ejecución con fecha. Usa dbt para descomponer snapshot y una tabla creativa separada por ad_archive_id.

Leer la guía
Copiar un prompt para Claude
Prompt para Claude + Apify MCP
Usa jmlp/meta-ad-library-scraper para recopilar hasta 50 anuncios activos de ZARA en GB. Comprueba primero el esquema del Actor. Agrupa mensajes por gancho y oferta, cita ID originales y propón tres hipótesis de campaña comprobables. No deduzcas gasto ni conversiones.

Los campos que obtendrás.

Conserva la hora de recopilación y los ID originales. Los necesitarás para comprobar el origen de un resultado o compararlo con otra ejecución.

Antes de sacar conclusiones

Los anuncios comerciales normalmente no publican gasto ni alcance. Meta lo hace sobre todo para anuncios políticos y sociales. Un anuncio duradero merece estudio, pero su edad no revela conversión, rentabilidad ni ROAS.

ad_archive_id
ID estable para eliminar duplicados y enlazar la biblioteca original.
page_id / page_name
Anunciante del registro.
is_active / start_date / end_date
Actividad y fechas observadas; las fechas están en segundos Unix.
publisher_platform
Facebook, Instagram y otros canales de Meta indicados.
snapshot
Texto, título, CTA, página de destino y medios de la creatividad.
collation_id / collation_count
ID y recuentos de variantes de anuncios relacionados.

Preguntas frecuentes.

¿Puedo usarlo sin iniciar sesión en Facebook?

Sí. Lee la biblioteca pública, así que no requiere cuenta de Facebook. Necesitas una cuenta de Apify para ejecutarlo.

¿Puedo saber qué anuncios funcionan mejor?

Puedes estudiar mensajes recurrentes y creatividades duraderas. La biblioteca no aporta conversiones para declarar ganador a un anuncio.

Fuente y detalles actuales del producto: Actor Meta Ad Library de JMLP en Apify.

Otros scrapers
que podrían servirte.

Hablemos de
tu proyecto.

Cuéntame qué necesitas recopilar o entender. Puedo ayudarte con un scraper a medida, un pipeline o el análisis.

Hablemos de tu proyecto