Dokumente
Strg+K Suchen Alt+[Alt+] Hilfslinien
API-Schlüssel abrufen

API · Anzeigenbibliothek

Meta-Anzeigenbibliothek

GET /api/v1/adlibrary searches Meta (Facebook / Instagram) ads with your API key. /api/adlibrary is a supported alias. Auth and metering match the API-Referenz. MCP equivalent: Facebook-Anzeigen suchen (and Gewinnerprodukte finden, Kreativ-Inspirationspaket) — see MCP · Werkzeugübersicht.

HOLEN /api/v1/adlibrary

curl -sS -G -H "X-API-Key: $WH_API_KEY" "{origin}/api/v1/adlibrary" \
  --data-urlencode "keyword=skincare" \
  --data-urlencode "searchkeyword=adtext" \
  --data-urlencode "countries=US" \
  --data-urlencode "sorting=reach" \
  --data-urlencode "page=0" \
  --data-urlencode "min=" --data-urlencode "max=" \
  --data-urlencode "from=" --data-urlencode "to=" \
  --data-urlencode "mediafilter=" --data-urlencode "scroll=" \
  --data-urlencode "scaling=" --data-urlencode "niches=" \
  --data-urlencode "fromlastseen=" --data-urlencode "tolastseen=" \
  --data-urlencode "activestatus="
{
  "data": [
    {
      "id": "1284756102394857",
      "page_name": "Glow Beauty Co.",
      "ad_creative_body": "This serum changed my skin in 14 days…",
      "ad_snapshot_url": "https://www.facebook.com/ads/library/?id=1284756102394857",
      "media_type": "video",
      "started": "2024-05-12",
      "reach": 184000,
      "ad_rank": 3
    }
  ],
  "total": 240,
  "scroll": "eyJwYWdlIjoxfQ=="
}

Der Aufruf der Meta-Anzeigenaufrufe in der App /api/fb-ads with the same query shape — copy a working request from your browser's network tab and swap the path to /api/v1/adlibrary.

Eingabewächter (erforderliche Abfrageschlüssel)

Der Endpunkt gibt seine Haupt-JSON-Daten nur dann zurück, wenn alle folgenden Schlüssel in der Abfragezeichenfolge vorhanden sind (eine leere Zeichenfolge ist zulässig):

Suchbegriff, Stichwort, min, Länder, von, zu, Sortieren, Medienfilter, Seite, max, scrollen, Skalierung, Nischen, seit dem letzten Besuch, zu sehen, Aktivitätsstatus

Falls welche fehlen, handelt es sich bei der Antwort nicht um die übliche Listen-Nutzlast (vermeiden Sie dies in Clients).

Außerdem muss das innere Tor Probe in der Abfrage festlegen oder a angemeldet / API-Schlüssel aufgelöst Sitzung. Mit einem gültigen X-API-Schlüssel, erfüllen Sie die Sitzungsvoraussetzung automatisch. Andernfalls lautet die Antwort:

{"error":"logged_out"}

Alle Abfrageparameter

Alles, was folgt, wird aus der Abfragezeichenfolge (gleiche Form wie /api/fb-ads (in der App).

isset Gate (muss vorhanden sein; eine leere Zeichenfolge ist zulässig)

Dieselbe Liste wie Eingangswache oben:
Suchbegriff, Stichwort, min, max, Länder, von, zu, Sortieren, Medienfilter, Seite, scrollen, Skalierung, Nischen, seit dem letzten Besuch, zu sehen, Aktivitätsstatus.

Bei jeder wärmstens empfohlen#

Der Handler liest Website, Sprachen, Seitentypfilter, Sortierrichtung, Appsund Themen ohne das durchzumachen isset Liste. Das Dashboard spiegeln und mindestens Website=Alle, Sprachen=Alle, pagetypefilter= (leer = alle Seitentypen), sortdirection=desc, Apps=Alle, Themen=Alle damit das Verhalten der Benutzeroberfläche entspricht und optionale Schlüssel immer definiert sind.

Snake_case aliases (MCP-parity names)

/api/v1/adlibrary (and the /api/adlibrary alias) also accepts the same snake_case argument names as the MCP Facebook-Anzeigen suchen tool, normalized server-side to the internal keys below (FacebookAdsFilterSpec::publicQueryAliases()). When both names are sent, the internal name wins. Highlights:

Alias Internal key
Land / Länder, Länder ausschließen Länder, Länder ausschließen
Nische / Nischen Nischen
Technologie / Technologien Website
Sprache / Sprachen, Sprachen ausschließen Sprachen, Sprachen ausschließen
Thema / Themen, Apps, exclude_apps Themen, Apps, excludeApps
Medientyp, Seitentyp, Bewertung, geringe Impressionen, Rangwachstumsfilter Medienfilter, Seitentypfilter, adscorefilter, geringe Impressionen, Rangwachstumsfilter
ad_created_from / ad_created_to von / zu
last_seen_from / last_seen_to seit dem letzten Besuch / zu sehen
product_created_from / product_created_to Herkunft des Produkts / Produkt_zu
page_created_from / page_created_to Seite von / Seite
min_duplicates / max_duplicates min / max
Mindestausgaben für Werbung / maximale Werbeausgaben, ad_spend_timeframe minadspend / maximale Werbeausgaben, Zeitraum für Werbeausgaben
min_reach / max_reach, reach_timeframe minreach / maxreach, Zeitraum
min_monthly_visits / max_monthly_visits mintraffic / maxtraffic
min_days_running / max_days_running Mindays / maxdays
min_active_ads / max_active_ads minactiveads / maxactiveads
min_active_ads_growth / max_active_ads_growth, active_ads_growth_period minactiveadsgrowth / maxactiveadsgrowth, activeadsgrowthperiod
min_reach_growth / max_reach_growth, reach_growth_period minreachgrowth / maxreachgrowth, reachgrowthperiod
min_ad_rank / max_ad_rank Minadrank / maxadrank
min_page_likes / max_page_likes, Mindestpreis / Höchstpreis, min_copy_length / max_copy_length, min_video_length / max_video_length, min_products_on_store / max_products_on_store minpagelikes / maxpagelikes, Mindestpreis / Höchstpreis, Minkopylänge / maximale Kopierlänge, Mindestlänge des Videos / maximale Videolänge, minproductsonstore / maxproductsonstore
sort_by / Sortierreihenfolge Sortieren / Sortierrichtung
active_status Aktivitätsstatus

On the API route the entry-guard keys are defaulted server-side (Dashboard::fbAdsPublicBaseQuery()), so a request like ?keyword=skincare&last_seen_from=2026-01-01&last_seen_to=2026-02-01 is valid without sending every isset-gate key. When Stichwort is set and Suchbegriff is empty, searchkeyword=All is applied automatically.

Auth / Sitzung /

Parameter Rolle
(keine) Mit X-API-Schlüssel… wird die Anfrage unter Ihrem Konto ausgeführt (das entspricht dem Effekt einer Anmeldung).
Probe Falls gesetzt (z. B. test=true), gelten die Regeln für anonyme Gewinnsucher; in Kombination mit Filtern für Seite ≠ 0 kann dies zu folgenden Ergebnissen führen {"message":"need_account"}.

Paginierung, Cursor,

Parameter Anmerkungen
Seite Seitenindex beginnend bei 0.
scrollen Cursor für die tiefe Paginierung aus der Suche; bei der ersten Anfrage leer, dann den scrollen Wert aus der vorherigen JSON-Antwort.
Das nächste Mal Unix Sekunden; wird verwendet, wenn Sortierung=Datum gefunden (Auf der Startseite wird häufig ein Anker-Zeitstempel aus der Benutzeroberfläche verwendet.)
Suchbegriff Optional [a-zA-Z0-9_-]+; Krawatten Anzeigen pro Marke Großbuchstaben bei der Tabulatortaste/Suche in der Sitzung.

Stichwortsuche

Parameter Zulässige / typische Werte
Stichwort Freitext; URL-kodiert; serverseitig in Kleinbuchstaben umgewandelt.
Suchbegriff '', Alle, Ziel-URL, Seitenname, Anzeigentext, Produktname (muss in diesem Satz enthalten sein, wenn Stichwort (ist nicht leer).

Aktive Anzeigen, Skalierung, Medien, Seitentyp, AdScore,

Parameter Werte (entsprechen den Filtern für Meta-Anzeigen in der App)
Aktivitätsstatus Zeichenkette richtig oder falsch (nur aktive vs. inklusive inaktiver).
Skalierung '' (keine), keine Verkleinerung, Hochskalierung, Herunterskalierung.
Medienfilter '' / Auslassung hat die Wirkung: alle Formate; andernfalls Videos, Bilder, Karussell, dco (entspricht Anzeigeformat (in ES).
Seitentypfilter '' = alle; Produkte, Kollektionen, Trichter, nofunnels.
adscorefilter '' = keine; siegreich (gegründet), Skalierung (hat Potenzial), Testen (Nicht festgelegt). Erfordert die entsprechende In-App-Stufe.
geringe Impressionen '' = Alle anzeigen; ausblenden = Zeilen mit sehr geringen Impressionen ausschließen (gleiche Funktionsweise wie der Dashboard-Filter).
Rangwachstumsfilter '' = keine; durch Kommas getrennte Teilmenge von steigend, stabil, abnehmend (Rang-Momentum vs. historisch) Rangverlauf; gleiche Semantik wie das Dashboard Rangwachstum Filter).
Minadrank, maxadrank Natürliche Zahlen — Werbeplatzierung innerhalb der Marke (je niedriger, desto stärker für diese Marke; Nr. 3 / N (in der Benutzeroberfläche). Leer = keine Bindung. Entspricht dem Dashboard Platzierung der Anzeige Filter.

Parameter Werte
Sortierrichtung asc oder Beschreibung (Wenn das Feld leer ist, wird standardmäßig Beschreibung).
Sortieren '' (Keine → zufällige Reihenfolge, wenn nicht gemischt), trending, Anzeigenbudget, zuletzt gesehen, Datum gefunden, mostrecent (ad start date / begonnen), adspend, am längsten laufend, Reichweite, monatliche Besuche, pageactiveads, Lauftage, Spitzenplatz (sofern dies für Ihre Bereitstellung aktiviert ist). Lauftage darf keinen speziellen Sortierzweig anwenden (verhält sich wie „None“, sofern sich das Produkt nicht ändert).

Ausgaben, Reichweite (mit Fenster), Traffic, Schaltdauer, Preis, Text, Videolänge, aktive Anzeigen auf

Parameter Anmerkungen
minadspend, maximale Werbeausgaben Ganzzahlen / numerische Zeichenfolgen. maxadspend=999999 wird bei der Überprüfung adspend als „keine Obergrenze“ behandelt. Für adspend aussagekräftige adspend ist möglicherweise eine höhere In-App-Stufe erforderlich.
Zeitraum für Werbeausgaben alle, 7, 30, 90 — Eingabefeld für adspend (ungültige Werte → alle).
minreach, maxreach Ganzzahlen. Erfordert möglicherweise eine höhere In-App-Stufe.
Zeitraum Gleiche zulässige Menge wie Zeitraum für Werbeausgaben.
mintraffic, maxtraffic Store monthly-visits range (absolute). May require a higher in-app tier.
minstorerevenue, maxstorerevenue Est. monthly store revenue range in USD (overlaps store_traffic.monthly_revenue_{min,max} on wlads). Same tier gate as traffic filters.
storebasedin Comma-separated ISO2 shop origin countries → store_traffic.shop_origin_country on wlads (same values as Explore Shops Mit Sitz in / stores metadata.country).
storevisitorcountrymain Comma-separated ISO2 — country tied for top visitor share (store_traffic.visitor_country_main).
storevisitorcountryamong Comma-separated ISO2 — country appears in traffic mix (store_traffic.top_countries).
storevisitorcountryexclude Comma-separated ISO2 — exclude ads whose store has traffic from that country.
trustpilotrating Trustpilot stars dash range on store_traffic.trustpilot.ratings (z. B. 4–5, 2,5–3,5). Same tier gate as traffic filters.
trustpilotreviews Trustpilot review-count dash range on store_traffic.trustpilot.total_reviews (z. B. 1000–10000, 100.000–1.000.000.000).
storecreated_from, storecreated_to Store creation window (J-M-T) on store_traffic.first_product_created_at. Same tier gate as traffic filters. UI chip param: datestorecreated (Lightpick display range).
mingrowth, maxgrowth, growthperiod Monthly visit growth range, as a signed % change in store traffic (UI values: 25 = 25%). growthperiod selects the window: 1 (default) or 3 months → ranges on store_traffic.monthly_visits_growth_{1,3}m (indexed at 1/100 of the UI %, e.g. 169516.95). Empty min/max = no bound; negatives select declining stores. Same in-app tier gate as mintraffic.
minactiveadsgrowth, maxactiveadsgrowth, activeadsgrowthperiod Page active ads % growth (Dashboard Active ads growth, Page tab). UI min/max are human percent (z. B. 25 = 25%; negatives allowed). activeadsgrowthperiod tokens: 1w, 14d, 1m, 3m (Standard 1m; legacy 7d1w, 2m14d, 30d1m, 90d3m). Server maps tokens to indexed baselines total_active_ads_on_page_growth_{1w,14d,1m,3m} and filters on ((\texttt{total_active_ads_on_page} - \texttt{baseline}) / \texttt{baseline} \times 100) (baseline is the prior-period active-ad count, not a precomputed pct field). Dashboard labels: 1 week1w (7d), 2 weeks14d (14d), 1 month1m (30d).
minreachgrowth, maxreachgrowth, reachgrowthperiod Ad cumulative EU reach % growth (Dashboard Ad EU Reach Growth, EU/UK tab). Same UI % and period semantics as ads growth. Ranges total_eu_views_growth_pct_{period} only (not reach_growth_pct_*, which is page-level reach). Same in-app tier gate as minreach / maxreach.
Mindays, maxdays Filter für die Anzahl der Tage in Folge; erfordert möglicherweise eine höhere In-App-Stufe.
Mindestpreis, Höchstpreis
Minkopylänge, maximale Kopierlänge
Mindestlänge des Videos, maximale Videolänge
minactiveads, maxactiveads Obergrenze für den Stil „Aktive Anzeigen auf der Seite“ (im Testablauf können minactiveads (serverseitig).
minpagelikes, maxpagelikes Facebook page likes range on indexed page_like_count (ads without the field are excluded when a min is set).
minigfollowers, maxigfollowers Instagram followers range on wlads tracking.igfollowers (denormalized at ingest; no pages-index join). Currently disabled in app (Ads::WLADS_IG_FOLLOWERS_FILTER_ENABLED); enable after field backfill + dashboard UI.

Data dependency — monthly visit growth. mingrowth/maxgrowth range on store_traffic.monthly_visits_growth_{1,3}m on the wlads index. The 1-month field is widely populated; 3-month may return no matches until the indexer backfills that scalar.

Data dependency — wlads % growth filters. minactiveadsgrowth erfordert total_active_ads_on_page plus total_active_ads_on_page_growth_{1w,14d,1m,3m} auf wlads (baselines must be prior counts, not deltas). minreachgrowth uses total_eu_views_growth_pct_{period} when backfilled. Sparse baselines reduce match counts; use broader ranges when testing.

Datumsangaben (Zeichenfolgen, in der Regel J-M-T)

Parameter Bedeutung
von, zu Anzeige Entstehung (begonnen).
seit dem letzten Besuch, zu sehen Zuletzt gesehen (aktualisiert am).
Herkunft des Produkts, Produkt_zu Fenster zur Produkterstellung.
Seite von, Seite Fenster zur Seitenerstellung.

Datumsbereiche ohne festgelegte Enddaten werden serverseitig normalisiert (z. B. nur von Einstellung → zu kann entsprechend angepasst werden von).

Katalog: Länder, Shops, Nischen, Sprachen, Apps, Themen,

Parameter Format
Länder Alle oder durch Kommas getrennt ISO 3166-1 Alpha-2 Codes (z. B. USA, Großbritannien).
Website Alle oder durch Kommas getrennte Filialcodes (z. B. SH = Shopify – siehe Website-Filter im Dashboard).
Nischen Alle oder durch Kommas getrennte Segmente (voreingestellte Codes, /Pfad/... Pfade aus dem Nischenkatalog oder numerische IDs – serverseitig normalisiert). Wenn die Liste Einkaufen, fügt der Server Produkt.
Sprachen Alle oder durch Kommas getrennte Sprachcodes (wie im Dashboard) #Sprache).
Apps Alle oder durch Kommas getrennt numerisch App-IDs (gleiche Werte wie beim Filter für In-App-Apps).
Themen Alle oder durch Kommas getrennte Themenzeichenfolgen (zu finden unter GET /api/themes).
Länder ausschließen, Websites ausschließen, Sprachen ausschließen, Nischen ausschließen, excludeApps Dieselben durch Kommas getrennten Muster wie auf der Einfüge-Seite; Nischen normalisiert wie Nischen.

Deep Links, Shuffle,

Parameter Anmerkungen
pageidfromurl Facebook -Seiten-ID – beschränkt die Anzeige auf die Anzeigen einer bestimmten Seite.
Produkt-ID Shopify -Produkt-ID.
Mischen Jeder nicht leere, wahrwertige Ausdruck → Shuffle-Modus (zufällige Sortierung; optionales Standardfenster für zuletzt angezeigte Elemente).
Anzeigen pro Marke 1, 2, 3, 5, 10 nur – maximale Anzahl an Anzeigen pro Marke, wenn die Logik zur Begrenzung pro Marke beim Mischen angewendet wird.

Validierung /

Ungültig min oder max (außerhalb von 0…90000000) kann zu {"error":"value_not_in_range_1"} oder _2oder ein Nicht-JSON falsch Körper in Ausnahmefällen.


Gültige Ergebnisse finden Nischen und Themen (kein API-Schlüssel für diese Routen)

Integrationen sollten die zulässigen Werte aus dem Discovery-JSON-Datensatz entnehmen und nicht durch Raten ermitteln:

Endpunkt Zweck
GET /api/niche-counts Rücksendungen { "niches": [ { "code": "…", "count": N }, … ], "total_with_niche": … } auf der Grundlage desselben Meta-Ads-Indexes erstellt, den das Produkt verwendet. Verwenden Sie den Code Zeichenfolgen (durch Kommas getrennt in Nischen / Nischen ausschließen) als Referenzdatensatz, der tatsächlich in den Werbedaten vorkommt. Optional: refresh=1 umgeht den Festplatten-Cache für eine einzelne Anfrage.
GET /api/themes Gibt ein JSON-Objekt mit einem Themen Liste (häufigste Werte + Häufigkeiten, im Cache gespeichert ~1 Stunde). Optionale Abfrage: q — wenn Länge ≥ 2, Teilstringsuche für die automatische Vervollständigung. Optional: Grenze (Standardwert 200, Maximalwert 500). Zurückgegebenes Design verwenden Namen/Schlüssel genau wie Themen= durch Kommas getrennte Werte in /api/adlibrary.

Voreingestellte Nischen-Shortcuts (UI-„Chips“): Die App stellt außerdem benutzerfreundliche Zweibuchstabencodes (z. B. CG, VON, SP) im Nischenfilter. Das sind gültige Segmente in Nischen= genauso, wie der Browser sie sendet.

Pfad / numerische Nischensegmente: Die Werte werden anhand des Nischenkatalogs des Servers aufgelöst (Pfade wie /Bekleidung/... und numerisch IDs (Zuordnung zu kanonischen Namen in der Suche). Ist ein Segment unbekannt, kann es unverändert weitergeleitet werden – bevorzugt /api/niche-counts anstatt sich Strings auszudenken.

Hinweis: /api/niche-counts und /api/themes sind Entdeckung Helfer und verbrauchen die Credits der Meta-Ad-Library-API nicht auf dieselbe Weise /api/adlibrary Das ist richtig. Für Ihre Bereitstellung sind möglicherweise weiterhin eine Anmeldung oder andere Richtlinien vor diesen Routen erforderlich.

Feature-Gates (JSON-Aktualisierung)

Bei Konten, die nicht über die erforderliche Produktstufe verfügen, liefern bestimmte Filter oder Sortiermodi 200 mit einem kleinen JSON-Body (die Aufforderung zum Upgrade lautet innerhalb des Frequenzbands(nicht immer HTTP 403):

Antwort Zustand (vereinfacht)
{"upgrade":"standard_adspend"} Filter für Werbeausgaben verwendet, oder adspend
{"upgrade":"standard_reach"} Reichweitenfilter oder Sortierung=Reichweite
{"upgrade":"standard_traffic"} Verkehrsfilter
{"upgrade":"standard_daysrunning"} Filter nach Anzahl der Tage in Folge oder Sortierung=Tage seit Start
{"upgrade":"standard_adscore"} adscorefilter Satz

Weitere bemerkenswerte

  • {"message":"need_account"} — Anonym Probe Anfragen, die über die zulässige Nutzung hinausgehen (Sicherheitsgrenzen für Testversionen).
  • Erfolgsdaten: JSON-Objekt mit folgenden Elementen Daten (Anzeigen), optional Nachricht (für Menschen lesbare Filterhinweise), insgesamt + total_relation (computed on every page for API-key / MCP requests; the dashboard UI fetches totals separately via count_only=1), scrollen (deep-pagination cursor), and free-tier credit fields when applicable. insgesamt can still be null for query shapes that post-filter in PHP (e.g. Rangwachstumsfilter). Each ad may include Anzeigenrang (Positionsnummer innerhalb der Marke/Seite) und Rangverlauf (Zeitreihen, die für die Momentum-/Rangwachstumsfilterung im Dashboard verwendet werden). Programmatische und MCP-Nutzdaten enthalten diese Felder, sofern sie in den Suchergebnissen vorhanden sind.