Scrape the Meta ad library by Page or search URL
apify.meta-ads.library.searchScrape publicly running Facebook and Instagram ads for a page or Ad Library search
- Price
- $0.005/resultAu prix du fournisseur
- Success rate
- —Aucune donnée de taux de réussite pour le momentAucune donnée de taux de réussite pour le moment
- Latency p50
- ——
- Last verified
- 26 sept. 2026Verified working
POSThttps://toolswitch.dev/v1/tools/apify.meta-ads.library.search?timeout=90&maxItems=1&maxTotalChargeUsd=0.05Preview- Uses platform quota
- Synchronous response
- Reads public data
Paramètres
the response is the dataset items array directly — no run envelope, no polling. Result count is what you pay for, so onlyTotal:true is the cheap probe before a full pull. Unofficial: this reads the Ad Library web UI, so field availability tracks whatever Meta currently renders
| Paramètre | Type | Obligatoire | Description | Exemple |
|---|---|---|---|---|
| Paramètres de requête | ||||
timeout | entier | Facultatif | treg's key requires 1-90 so the run and its rows arrive before any wait gives up (a larger pull needs your own key). seconds before the synchronous run is cut off. This route blocks until the actor finishes and Apify closes the connection at 300s regardless — use the async pair below for anything large | 90 |
maxItems | entier | Facultatif | optional row cap; pay-per-event actors that take the row count from their own input ignore it, so maxTotalChargeUsd is the spend limit | 50 |
maxTotalChargeUsd | nombre | Facultatif | the spend cap Apify enforces on every event this run bills, in dollars. treg's key requires it, above 0 and at most 1, and holds it for the call | 0.5 |
- Paramètres de requête
timeoutentierFacultatiftreg's key requires 1-90 so the run and its rows arrive before any wait gives up (a larger pull needs your own key). seconds before the synchronous run is cut off. This route blocks until the actor finishes and Apify closes the connection at 300s regardless — use the async pair below for anything large
Exemple :
90maxItemsentierFacultatifoptional row cap; pay-per-event actors that take the row count from their own input ignore it, so maxTotalChargeUsd is the spend limit
Exemple :
50maxTotalChargeUsdnombreFacultatifthe spend cap Apify enforces on every event this run bills, in dollars. treg's key requires it, above 0 and at most 1, and holds it for the call
Exemple :
0.5
Exemples de code
Remplacez $TOOLSWITCH_KEY par la clé créée dans la console.
curl -X POST 'https://toolswitch.dev/v1/tools/apify.meta-ads.library.search?timeout=90&maxItems=1&maxTotalChargeUsd=0.05' \
-H "X-Toolswitch-Key: $TOOLSWITCH_KEY" \
-H "Content-Type: application/json" \
--data-raw '{"onlyTotal":true,"startUrls":[{"url":"https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=project%20management"}],"activeStatus":"active","resultsLimit":1,"isDetailsPerAd":false,"enrichWithEcommerceData":false}'import os
import json
import requests
response = requests.request(
"POST",
"https://toolswitch.dev/v1/tools/apify.meta-ads.library.search?timeout=90&maxItems=1&maxTotalChargeUsd=0.05",
headers={"X-Toolswitch-Key": os.environ["TOOLSWITCH_KEY"]},
json=json.loads("{\"onlyTotal\":true,\"startUrls\":[{\"url\":\"https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=project%20management\"}],\"activeStatus\":\"active\",\"resultsLimit\":1,\"isDetailsPerAd\":false,\"enrichWithEcommerceData\":false}"),
)
response.raise_for_status()
print(response.text)const response = await fetch("https://toolswitch.dev/v1/tools/apify.meta-ads.library.search?timeout=90&maxItems=1&maxTotalChargeUsd=0.05", {
method: "POST",
headers: {
"X-Toolswitch-Key": process.env.TOOLSWITCH_KEY ?? "",
"Content-Type": "application/json",
},
body: JSON.stringify(JSON.parse("{\"onlyTotal\":true,\"startUrls\":[{\"url\":\"https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=project%20management\"}],\"activeStatus\":\"active\",\"resultsLimit\":1,\"isDetailsPerAd\":false,\"enrichWithEcommerceData\":false}")),
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
console.log(await response.text());Cette API de passerelle est en préversion ; son URL et son authentification peuvent changer. Les paramètres de l’exemple sont des données fictives. Les appels sont facturés à $0.005/result, frais de service inclus.