Die Facebook Insights API stellt Performance-Daten aus Facebook-Marketingkampagnen bereit. Um die System-Performance und -stabilität zu gewährleisten, bieten wir Schutzmaßnahmen an, damit wir Systemressourcen gleichmäßig auf Apps aufteilen können. Änderungen an allen im Folgenden von uns beschriebenen Richtlinien sind vorbehalten.
Wir begrenzen die Daten pro Aufruf, um zu verhindern, dass eine Abfrage zu viele Daten abruft und das System somit überlastet. Es gibt zwei Arten von Datenbegrenzungen:
Diese Begrenzungen gelten sowohl für synchrone als auch für asynchrone /insights
-Aufrufe. Wenn sie überschritten werden, geben wir einen Fehler zurück:
error_code = 100, CodeException (error subcode: 1487534)
action_target_id
oder product_id
, sowie größere Zeiträume wie die Lebensdauer./insights
-Edge direkt mit Werbeobjekten einer niedrigeren Ebene, um genaue Daten für diese Ebene abzurufen. Verwende beispielsweise zunächst die Abfrage auf Kontoebene, um die Liste der Objekts-IDs der unteren Ebenen mit den Parametern level
und filtering
abzurufen. In diesem Beispiel rufen wir alle Kampagnen auf, die Impressionen aufgezeichnet haben: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
mit jedem zurückgegebenen Wert verwenden, um die Statistikanfragen für diese Kampagnen in einem einzelnen Aufruf abzufragen und in einem Batch zusammenzufassen:curl \ -F 'access_token=<ACCESS_TOKEN>' \ -F 'batch=[ \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_1>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ }, \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_2>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ }, \ { \ "method": "GET", \ "relative_url": "v21.0
/<CAMPAIGN_ID_3>/insights?fields=impressions,spend,ad_id,adset_id&level=ad" \ } \ ]' \ 'https://graph.facebook.com'
filtering
-Parameter nur zum Abrufen von Statistiken für Werbeobjekte mit Daten. Der beim filtering
angegebene Feldwert nutzt die DOT-Notation zur Angabe der Felder unter dem Objekt. Beachte, dass die Zusammenfassungsdaten durch Filtern mit STARTS_WITH
und CONTAIN
nicht verändert werden. Verwende in diesem Fall den IN
-Operator. Hier ist ein Beispiel für eine filtering
-Anfrage:curl -G \
-d 'access_token=<ACCESS_TOKEN>' \
-d 'level=ad' \
-d 'filtering=[{field:"ad.impressions",operator:"GREATER_THAN",value:0},]' \
'https://graph.facebook.com/v21.0
/act_<ACCOUNT_ID>/insights'
date_preset
. Benutzerdefinierte Datumsbereiche sind weniger effizient in unserem System.Neunzig Tage nach Veröffentlichung von Version 3.3 und der Gültigkeit für alle öffentlichen Versionen ändern wir die Durchsatzratenbegrenzung auf Anzeigenkontoebene, um die Menge der benötigten API-Aufrufe besser darstellen zu können. Wir berechnen die Durchsatzratenbegrenzungsquote für unsere Marketing API-Zugangs-Tier und das Unternehmen, dem deine App gehört. Siehe Zugriff und Authentifizierung. Diese Änderung gilt für alle Ads Insights API-Endpunkte: 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
, POST {ad_ID}/insights
.
Wir begrenzen die Last im Sinne einer optimalen Berichtsnutzung. Wir messen sowohl die Rate von API-Aufrufen als auch die erforderlichen Ressourcen. Dabei lassen wir eine feste Lastbegrenzung pro App pro Sekunde zu. Wenn diese Begrenzung überschritten wird, schlagen deine Anfragen fehl.
Prüfe den x-fb-ads-insights-throttle
-HTTP-Header in jeder API-Antwort, damit du immer weißt, wie nahe deine App an der Begrenzung ist, und einschätzen kannst, wie groß die Last einer Abfrage sein könnte. Insights-Aufrufe unterliegen ebenfalls den Standardbegrenzungen von Werbekonten gemäß dem x-ad-account-usage
-HTTP-Header. Weitere Details findest du hier: Marketing API, Best Practices
Wenn eine App die Begrenzung erreicht hat, erhält der Aufruf eine Fehlerantwort mit dem Code error_code = 4, CodedException
. Du solltest deutlich unter deiner Begrenzung bleiben. Wenn deine App die zulässigen Grenzwerte erreicht, wird nur ein bestimmter Prozentsatz der Anfragen weitergeleitet (je nach Abfrage und Rate).
Wir wenden die Durchsatzratenbegrenzung auf jede App an, die synchrone und asynchrone /insights
-Aufrufe zusammen sendet. Bei den Begrenzungen werden zwei Hauptparameter berücksichtigt: App und Werbekonto.
Hier folgt ein Beispiel für einen HTTP-Header, der in Prozent angibt, wie nahe die App an den Begrenzungen liegt:
X-FB-Ads-Insights-Throttle: { "app_id_util_pct": 100, "acc_id_util_pct": 10, "ads_api_access_tier": "standard_access" }
Der Header „x-fb-ads-insights-throttle“ ist ein JSON-Wert mit den folgenden Informationen:
app_id_util_pct
: Der Prozentsatz der belegten zugewiesenen Kapazität für die jeweilige app_id.acc_id_util_pct
: Der Prozentsatz der belegten zugewiesenen Kapazität für die jeweilige account_id des Werbekontos.ads_api_access_tier
: Stufen ermöglichen deiner App den Zugriff auf die Marketing API. standard_access
aktiviert eine niedrigere Durchsatzratenbegrenzung.In Zeiten mit erhöhter globaler Last für den /insights
-Endpunkt kann das System zum Schutz des Backends Anfragen drosseln. Dies kann in seltenen Fällen auftreten, wenn zu viele Abfragen hoher Komplexität (große Zeiträume, komplexe Kennzahlen und/oder eine hohe Anzahl von Werbeobjekt-IDs) gleichzeitig eingehen. Daraufhin wird ein Fehler wie der Folgende zurückgegeben:
error_code = 4, CodeException (error subcode: 1504022), error_title: Too many API requests
In solchen Zeiten ist es ratsam, die Anzahl der Aufrufe zu verringern, kurz zu warten und die Abfrage erneut zu senden.
/insights
-Abfragen zu verteilen, indem du Wartezeiten zwischen Abfragen im Job einrichtest./insights
-Abfragen langsamer zu senden oder anzuhalten, wenn du nahe an der 100 %-Grenze für deine App oder dein Werbekonto bist.ads_api_access_tier
, die dir den Zugriff auf die Marketing API ermöglicht. Standardmäßig befinden sich Apps in der Stufe development_access
und standard_access
aktiviert die niedrigere Durchsatzratenbegrenzung. Um eine höhere Ratenbegrenzung zu erhalten und in die Standardstufe zu gelangen, kannst du „erweiterten Zugriff“ auf die Funktion Standardzugriff für Anzeigenmanagement anfordern.Rufe Statistiken zu zahlreichen Objekten ab und filtere und sortiere die Daten. Dazu haben wir den asynchronen Workflow vereinfacht:
POST
-Anfrage an den <AD_OBJECT>/insights
-Endpunkt, der mit der id
einer Werbeanzeigen-Berichtsausführung antwortet.{ "report_run_id": 6023920149050, }
Speichere die report_run_id
nicht für die langfristige Nutzung, sie läuft nach 30 Tagen ab.
async_status
. Frage dieses Feld ab, bis async_status
= Job Completed
und async_percent_completion
= 100
ist. { "id": "6044775548468", "account_id": "1010035716096012", "time_ref": 1459788928, "time_completed": 1459788990, "async_status": "Job Completed", "async_percent_completion": 100 }
<AD_REPORT_RUN_ID>/insights
-Edge abfragen, um das endgültige Ergebnis abzurufen.{ "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" } } }
Dieser Job ruft alle Statistiken für das Konto ab und gibt die ID eines asynchronen Jobs zurück:
curl \ -F 'level=campaign' \ -F 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/<CAMPAIGN_ID>/insights curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/1000002 curl -G \ -d 'access_token=<ACCESS_TOKEN>' \ https://graph.facebook.com/v21.0
/1000003/insights
Status | Beschreibung |
---|---|
| Der Job wurde noch nicht gestartet. |
| Der Job wurde gestartet, wird aber noch nicht ausgeführt. |
| Die Jobausführung hat begonnen. |
| Der Job wurde erfolgreich abgeschlossen. |
| Der Job ist fehlgeschlagen. Prüfe deine Abfrage und versuche es erneut. |
| Der Job ist abgelaufen und wurde übersprungen. Sende den Job erneut. |
Wir bieten einen praktischen Endpunkt für den Export von <AD_REPORT_RUN_ID>
in ein lokalisiertes, für Menschen lesbares Format.
Hinweis: Dieser Endpunkt ist nicht Teil unserer versionierten Graph API und entspricht daher nicht der Benachrichtigungspolitik für funktionsgefährdende Änderungen. Skripte und Programme sollten sich nicht auf das Ergebnisformat verlassen, da dieses ohne Vorankündigung geändert werden kann.
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/'
Name | Beschreibung |
---|---|
String | Name der heruntergeladenen Datei |
enum{csv,xls} | Format der Datei |
Ganzzahl | ID des auszuführenden Berichts |
String | Vom angemeldeten Nutzer erteilte Berechtigungen. Gib dies an, um Berichte für einen anderen Nutzer zu exportieren. |