A partir del 10 de junio de 2025, a fin de mejorar el rendimiento general de la API, ya no se devolverá el valor de reach para las consultas estándar que apliquen desgloses (breakdowns) y usen fechas de inicio (start_date) de más de 13 meses de antigüedad. (Las respuestas a estas consultas omitirán reach y los campos relacionados, como frequency y cpp).
Para aplicar desgloses (breakdowns) y recuperar igualmente valores de reach de más de 13 meses de antigüedad, puedes usar trabajos asíncronos para realizar hasta 10 solicitudes al día por cuenta publicitaria. Comprueba el encabezado x-Fb-Ads-Insights-Reach-Throttle para supervisar lo cerca que estás de ese límite de frecuencia. Ten en cuenta que, cuando superes el límite de frecuencia, las solicitudes omitirán reach y los campos relacionados.
Cuando se supere el límite de frecuencia para cada desglose relacionado con el alcance, se devolverá el siguiente mensaje de error:
Reach-related metric breakdowns are unavailable due to rate limit threshold.
Gracias la API de insights de Facebook, se pueden obtener datos sobre el rendimiento de las campañas de marketing de la plataforma. A fin de proteger el rendimiento y la estabilidad del sistema, disponemos de medidas de protección para distribuir los recursos del sistema de forma equitativa entre las aplicaciones. Todas las políticas que se describen a continuación están sujetas a cambios.
Utilizamos los límites de datos por llamada para evitar que una consulta recupere demasiados datos (más de los que el sistema sea capaz de gestionar). Hay dos tipos de límites de datos:
Estos límites se aplican tanto a las llamadas de /insights síncronas como asíncronas, y se devuelve un error:
error_code = 100, CodeException (error subcode: 1487534)
action_target_id o product_id, e intervalos de fechas más amplios, como la duración total./insights directamente con objetos de anuncios de nivel inferior para recuperar datos detallados de ese nivel. Por ejemplo, en primer lugar usa la consulta de nivel de cuenta para recuperar la lista de identificadores de objeto de nivel inferior con los parámetros level y filtering. En este ejemplo se recuperan todas las campañas que han registrado impresiones:curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
-d 'level=campaign' \
-d 'filtering=[{field:"ad.impressions",operator:"GREATER_THAN",value:0}]' \
'https://graph.facebook.com/v2.7/act_<ACCOUNT_ID>/insights'
/<campaign_id>/insights con cada valor devuelto para consultar y agrupar por lotes las solicitudes de insights de estas campañas en una sola llamada:curl \
-F 'access_token=<ACCESS_TOKEN>' \
-F 'batch=[ \
{ \
"method": "GET", \
"relative_url": "v24.0/<CAMPAIGN_ID_1>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \
}, \
{ \
"method": "GET", \
"relative_url": "v24.0/<CAMPAIGN_ID_2>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \
}, \
{ \
"method": "GET", \
"relative_url": "v24.0/<CAMPAIGN_ID_3>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \
} \
]' \
'https://graph.facebook.com'
filtering únicamente para recuperar insights de los objetos de anuncios con datos. El valor del campo que se especifica en filtering utiliza la notación de punto para indicar los campos del objeto. Ten en cuenta que filtrar con STARTS_WITH y CONTAIN no cambia los datos del resumen. En este caso, usa el operador IN. A continuación, se incluye un ejemplo de una solicitud con filtering:curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
-d 'level=ad' \
-d 'filtering=[{field:"ad.impressions",operator:"GREATER_THAN",value:0},]' \
'https://graph.facebook.com/v24.0/act_<ACCOUNT_ID>/insights'date_preset. En nuestro sistema, los intervalos de fechas personalizados ofrecen una eficacia menor.Cambiamos el límite de frecuencia a nivel de cuenta publicitaria pasados noventa días desde el lanzamiento de la versión 3.3 y con vigencia en todas las versiones públicas para reflejar mejor el volumen de llamadas a la API necesarias. Para obtener información sobre cómo calculamos la cuota del límite de frecuencia en tu nivel de acceso a la API de marketing y en la empresa a la que pertenece la aplicación, consulta Acceso y autenticación. Este cambio se aplica a todos los extremos de la API de insights de anuncios: GET {adaccount_ID}/insights, GET {campaign_ID}/insights, GET {adset_ID}/insights, GET {ad_ID}/insights, POST {adaccount_ID}/insights, POST {campaign_ID}/insights, POST {adset_ID}/insights y POST {ad_ID}/insights.
Utilizamos límites de carga con el fin de ofrecer una experiencia óptima. Medimos la frecuencia de las llamadas a la API, así como los recursos que requieren. Permitimos un límite de carga fijo por segundo y por aplicación. Cuando superes el límite, se producirá un error en las solicitudes.
Consulta el encabezado HTTP x-fb-ads-insights-throttle en cada respuesta de la API para saber lo cerca que está la aplicación del límite, así como para estimar el tamaño aproximado que tendrá una consulta concreta. Las llamadas de insights también están sujetas a los límites predeterminados de las cuentas publicitarias que se muestran en el encabezado HTTP x-ad-account-usage. Encontrarás más información aquí: Prácticas recomendadas de la API de marketing.
Cuando una aplicación alcanza su límite, la llamada recibe una respuesta de error con error_code = 4, CodedException. Lo ideal es mantenerte alejado del límite. Si una aplicación alcanza su límite permitido, solo se completa un porcentaje concreto de solicitudes, en función de la consulta y la frecuencia.
Aplicamos limitación de frecuencia a todas las aplicaciones que envían llamadas de /insights síncronas y asíncronas combinadas. Los dos límites de parámetros principales se fijan por aplicación y por cuenta publicitaria.
A continuación, se muestra un ejemplo de encabezado HTTP que incluye la puntuación acumulada de una aplicación expresada como un porcentaje de los límites:
X-FB-Ads-Insights-Throttle: { "app_id_util_pct": 100, "acc_id_util_pct": 10, "ads_api_access_tier": "standard_access" }El encabezado “x-fb-ads-insights-throttle” es un valor JSON que incluye la siguiente información:
app_id_util_pct: porcentaje utilizado de la capacidad asignada al identificador de aplicación asociado.acc_id_util_pct: porcentaje utilizado de la capacidad asignada al identificador de la cuenta publicitaria asociado.ads_api_access_tier: los niveles permiten que la aplicación acceda a la API de marketing. standard_access permite una limitación de frecuencia menor.En periodos en los que el extremo /insights reciba una carga global elevada, el sistema puede limitar las solicitudes para proteger el entorno de backend. Esto puede ocurrir de manera poco frecuente cuando se reciben demasiadas consultas de gran complejidad (intervalos de tiempo grandes, métricas complejas o cantidades elevadas de identificadores de objetos de anuncios) al mismo tiempo. Esto se manifestará como un error similar a este:
error_code = 4, CodeException (error subcode: 1504022), error_title: Too many API requests
En estos casos, se aconseja reducir las llamadas, esperar un periodo corto de tiempo y volver a realizar la consulta.
/insights espaciándolas con tiempos de espera en el trabajo./insights cuando estés cerca de alcanzar el 100 % de uso en la aplicación o en la cuenta publicitaria.ads_api_access_tier que te permite acceder a la API de marketing. De forma predeterminada, las aplicaciones están en el nivel development_access, y standard_access permite una limitación de frecuencia menor. Para obtener un límite de frecuencia mayor y llegar al nivel estándar, puedes solicitar “acceso avanzado” a la función Acceso estándar a la administración de anuncios.Recupera las estadísticas de varios objetos, fíltralas y ordénalas. El proceso asíncrono ahora resulta mucho más sencillo:
POST al extremo <AD_OBJECT>/insights, que responderá con el id de una ejecución de un informe de anuncios.{
"report_run_id": 6023920149050,
}
No conserves el report_run_id para usarlo a largo plazo, ya que caducará pasados 30 días.
async_status. Sondea este campo hasta que async_status sea Job Completed y async_percent_completion sea 100.{
"id": "6044775548468",
"account_id": "1010035716096012",
"time_ref": 1459788928,
"time_completed": 1459788990,
"async_status": "Job Completed",
"async_percent_completion": 100
}
<AD_REPORT_RUN_ID>/insights para recuperar el resultado final.{
"data": [
{
"impressions": "9708",
"date_start": "2009-03-28",
"date_stop": "2016-04-04"
},
{
"impressions": "18841",
"date_start": "2009-03-28",
"date_stop": "2016-04-04"
}
],
"paging": {
"cursors": {
"before": "MAZDZD",
"after": "MQZDZD"
}
}
}
Este trabajo obtiene todas las estadísticas de la cuenta y devuelve un identificador de trabajo asíncrono:
curl \ -F 'level=campaign' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0/<CAMPAIGN_ID>/insights curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0/1000002 curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v24.0/1000003/insights
| Estado | Descripción |
|---|---|
| El trabajo todavía no se ha iniciado. |
| El trabajo se ha iniciado, pero todavía no se está ejecutando. |
| Se ha iniciado la ejecución del trabajo. |
| El trabajo se ha completado correctamente. |
| Se ha producido un error en el trabajo. Revisa la consulta y vuelve a intentarlo. |
| El trabajo ha caducado y se ha omitido. Vuelve a enviar el trabajo e inténtalo de nuevo. |
Ponemos a disposición un extremo para exportar <AD_REPORT_RUN_ID> a un formato legible localizado.
Nota: Ten en cuenta que este extremo no forma parte de las versiones de nuestra API Graph, por lo que no sigue su política sobre cambios de última hora. Los scripts y programas no deben depender del formato resultante, ya que este podría cambiar sin previo aviso.
curl -G \ -d 'report_run_id=<AD_REPORT_RUN_ID>' \ -d 'name=myreport' \ -d 'format=xls' \ 'https://www.facebook.com/ads/ads_insights/export_report/'
| Nombre | Descripción |
|---|---|
Cadena | Nombre del archivo descargado. |
Enumeración{csv,xls} | Formato del archivo. |
Entero | ID del informe que se va a ejecutar. |
Cadena | Permisos que ha concedido el usuario que ha iniciado sesión. Proporciónalo para exportar informes para otros usuarios. |