{"name":"facebook-ads-search","id":"sfoln/facebook-ads-search","title":"Facebook Ads Library Scraper","description":"Search the Meta Ad Library (Facebook and Instagram) by keyword, page ID or company: one row per ad with text, CTA, landing URL, images, videos, dates, platforms and, where Meta discloses them, spend and impressions. $1 per 1,000 ads + $0.004 per page.","version":"0.1","status":"ready","family":{"id":"ad-intelligence","name":"Ad intelligence","description":"Ads and advertisers from the Meta Ad Library, Google Ads Transparency Center, and the TikTok and LinkedIn ad libraries.","actors":6},"categories":["SOCIAL_MEDIA","LEAD_GENERATION","ECOMMERCE"],"availability":"on_request","seoTitle":"Facebook Ads Library API – $1 per 1,000 Ads","seoDescription":"Facebook Ads Library scraper: export Meta ads by keyword or page with ad text, CTA, landing URL, media and dates to JSON or CSV. $1 per 1,000 ads.","summary":"Facebook Ads Library Scraper searches the Meta Ad Library (Facebook, Instagram, Messenger, Audience Network) by keyword, Facebook page ID or company name and returns one clean dataset record per ad: ad archive ID, advertiser page, start/end dates, active status, platforms, ad text, headline, call to action, landing URL, media type, image and video URLs and, where Meta discloses it, impressions, spend and targeted countries. Filter by country, active status, media type, political/issue ads, language and date range. Built for competitor research, creative inspiration, ad monitoring, agencies and AI agents.","pricing":{"model":"pay-per-event","currency":"USD","billedBy":"Apify","freePlanMaxItemsPerRun":10,"events":[{"name":"facebook-ad","title":"Facebook ad","description":"Charged once per ad record delivered from the Meta Ad Library (recordType ad). Duplicates, query summary rows and failed requests are not charged.","priceUsd":0.001},{"name":"facebook-ads-query","title":"Ad Library page","description":"Charged once per Ad Library results page fetched for a query (a page holds up to ~30 ads). A page without new ads is charged only when the upstream provider billed it. Failed requests are not charged.","priceUsd":0.004}]},"input":{"description":"Search the Meta Ad Library by keyword, Facebook page ID or company name. Each query returns one dataset record per ad plus one summary record.","required":[],"fields":[{"name":"queries","title":"Search keywords","type":"array","required":false,"description":"Keywords to search the Ad Library for (ad text match), one per line. Accounts on the Apify free plan can process up to 10 queries per run (keywords, page IDs and company names together).","prefill":["running shoes"],"editor":"stringList"},{"name":"pageIds","title":"Facebook page IDs","type":"array","required":false,"description":"Numeric Facebook page IDs, or Ad Library URLs containing view_all_page_id=…, to list all ads of that page.","editor":"stringList"},{"name":"companyNames","title":"Company names","type":"array","required":false,"description":"Advertiser / company names; the upstream resolves the name to its Ad Library page (a page ID is more precise).","editor":"stringList"},{"name":"maxAdsPerQuery","title":"Max ads per query","type":"integer","required":false,"description":"Maximum ads returned per keyword, page or company (1–500). Ads are fetched in pages of up to ~30.","default":50,"prefill":10,"minimum":1,"maximum":500},{"name":"country","title":"Country","type":"string","required":false,"description":"2-letter country code where the ads were delivered (e.g. US, GB, DE), or ALL.","default":"ALL","prefill":"US","editor":"textfield"},{"name":"status","title":"Ad status","type":"string","required":false,"description":"Only active ads, only inactive ads, or both.","default":"ACTIVE","enum":["ACTIVE","INACTIVE","ALL"],"editor":"select"},{"name":"mediaType","title":"Media type","type":"string","required":false,"description":"Filter by creative type. MEME means image + text.","default":"ALL","enum":["ALL","IMAGE","VIDEO","MEME","IMAGE_AND_MEME","NONE"],"editor":"select"},{"name":"adType","title":"Ad category (keyword search only)","type":"string","required":false,"description":"All ads, or only political and social-issue ads.","default":"all","enum":["all","political_and_issue_ads"],"editor":"select"},{"name":"searchType","title":"Keyword matching (keyword search only)","type":"string","required":false,"description":"Match any of the words, or the exact phrase.","default":"keyword_unordered","enum":["keyword_unordered","keyword_exact_phrase"],"editor":"select"},{"name":"sortBy","title":"Sort by","type":"string","required":false,"description":"Most impressions first, or most recent first.","default":"total_impressions","enum":["total_impressions","relevancy_monthly_grouped"],"editor":"select"},{"name":"language","title":"Language","type":"string","required":false,"description":"Optional 2-letter language code of the ad (EN, ES, FR…).","editor":"textfield"},{"name":"startDate","title":"Shown from (YYYY-MM-DD)","type":"string","required":false,"description":"Optional: only ads with impressions on or after this date.","editor":"textfield"},{"name":"endDate","title":"Shown until (YYYY-MM-DD)","type":"string","required":false,"description":"Optional: only ads with impressions on or before this date.","editor":"textfield"},{"name":"maxQueries","title":"Max queries","type":"integer","required":false,"description":"Safety cap on keywords + pages + companies processed in this run.","default":100,"minimum":1,"maximum":1000},{"name":"concurrency","title":"Concurrency","type":"integer","required":false,"description":"Queries processed in parallel (1–8).","default":4,"minimum":1,"maximum":8},{"name":"itemTimeoutSecs","title":"Time limit per query (seconds)","type":"integer","required":false,"description":"Pagination for one keyword, page or company stops cleanly shortly before this limit (60–3600). Raise it for very large per-query limits.","default":600,"minimum":60,"maximum":3600},{"name":"includeRaw","title":"Include raw upstream response","type":"boolean","required":false,"description":"Attach the unmodified upstream ad object to each ad record under `raw` (larger output).","default":false}]},"exampleInput":{"queries":["running shoes"],"maxAdsPerQuery":10,"country":"US"},"outputFields":[{"name":"input","type":"string | object","title":"Input","description":"The input query this record belongs to."},{"name":"recordType","type":"string","title":"Row type","description":"ad (one per ad, charged facebook-ad) | query (one summary per query, free)."},{"name":"status","type":"string","title":"Status","description":"ok | not_found | error | skipped_invalid | skipped_budget | skipped_free_plan"},{"name":"charged","type":"boolean","title":"Charged","description":"Whether this record incurred a pay-per-event charge."},{"name":"chargedEvent","type":"string","title":"Charged event","description":"Pay-per-event event charged for this record."},{"name":"source","type":"string","title":"Source","description":"Upstream data source (scrapecreators = ScrapeCreators API over the public ad library)."},{"name":"fetchedAt","type":"string","title":"Fetched at","description":"ISO timestamp."},{"name":"error","type":"object","title":"Error","description":"code / message when status is not ok."},{"name":"warnings","type":"array","title":"Warnings","description":"Non-fatal notes (e.g. stopped early)."},{"name":"query","type":"string | null","title":"Query","description":"Keyword, page ID or company name the row belongs to."},{"name":"queryType","type":"string | null","title":"Query type","description":"keyword | page | company."},{"name":"position","type":"integer | null","title":"Position","description":"1-based position of the ad within the query results."},{"name":"adArchiveId","type":"string | null","title":"Ad archive ID","description":"Meta Ad Library ID of the ad."},{"name":"adLibraryUrl","type":"string | null","title":"Ad Library URL","description":"Public Ad Library link to the ad (snapshot)."},{"name":"pageId","type":"string | null","title":"Page ID","description":"Advertiser's Facebook page ID."},{"name":"pageName","type":"string | null","title":"Page name","description":"Advertiser's page name."},{"name":"pageUrl","type":"string | null","title":"Page URL","description":"Advertiser's Facebook page."},{"name":"pageLikeCount","type":"integer | null","title":"Page likes","description":"Page like count at fetch time."},{"name":"pageCategories","type":"array","title":"Page categories","description":"Page categories."},{"name":"isActive","type":"boolean | null","title":"Active","description":"Ad is currently running."},{"name":"startDate","type":"string | null","title":"Start date","description":"ISO date the ad started running."},{"name":"endDate","type":"string | null","title":"End date","description":"ISO date the ad stopped (or last seen) running."},{"name":"totalActiveTimeSecs","type":"integer | null","title":"Active time (s)","description":"Total active time in seconds when reported."},{"name":"platforms","type":"array","title":"Platforms","description":"Publisher platforms: facebook, instagram, audience_network, messenger, threads."},{"name":"adText","type":"string | null","title":"Ad text","description":"Primary text (body) of the ad; first card's body for multi-version ads."},{"name":"headline","type":"string | null","title":"Headline","description":"Link title / headline."},{"name":"linkDescription","type":"string | null","title":"Link description","description":"Text under the headline."},{"name":"linkUrl","type":"string | null","title":"Landing URL","description":"Destination link."},{"name":"displayUrl","type":"string | null","title":"Display URL","description":"Domain shown on the ad (caption)."},{"name":"ctaText","type":"string | null","title":"CTA text","description":"Call-to-action button text."},{"name":"ctaType","type":"string | null","title":"CTA type","description":"Call-to-action code, e.g. SHOP_NOW, LEARN_MORE."},{"name":"mediaType","type":"string | null","title":"Media type","description":"image | video | multi_images | carousel | dco | dpa | text …"},{"name":"imageUrls","type":"array","title":"Image URLs","description":"Creative images (original resolution where available)."},{"name":"videoUrls","type":"array","title":"Video URLs","description":"Creative videos (HD where available)."},{"name":"thumbnailUrl","type":"string | null","title":"Thumbnail","description":"Video preview image or resized first image."},{"name":"cardCount","type":"integer | null","title":"Cards","description":"Number of carousel / version cards."},{"name":"collationCount","type":"integer | null","title":"Versions","description":"Number of ad versions grouped under this ad."},{"name":"languages","type":"array","title":"Languages","description":"Ad languages when the library reports them."},{"name":"impressionsText","type":"string | null","title":"Impressions","description":"Impressions range text when Meta discloses it (political / EU ads)."},{"name":"reachEstimate","type":"integer | null","title":"Reach estimate","description":"Estimated reach when disclosed."},{"name":"spendLower","type":"number | null","title":"Spend (lower)","description":"Lower spend bound when disclosed (political ads)."},{"name":"spendUpper","type":"number | null","title":"Spend (upper)","description":"Upper spend bound when disclosed."},{"name":"currency","type":"string | null","title":"Currency","description":"Currency of the spend bounds."},{"name":"targetedCountries","type":"array","title":"Targeted countries","description":"Targeted / reached or political countries when reported."},{"name":"targetsEu","type":"boolean | null","title":"Targets EU","description":"EU transparency data present (ad details only)."},{"name":"euTotalReach","type":"integer | null","title":"EU reach","description":"Total EU reach (ad details only)."},{"name":"audienceAgeMin","type":"integer | null","title":"Audience age min","description":"Targeted minimum age (ad details only)."},{"name":"audienceAgeMax","type":"integer | null","title":"Audience age max","description":"Targeted maximum age (ad details only)."},{"name":"audienceGender","type":"string | null","title":"Audience gender","description":"Targeted gender (ad details only)."},{"name":"audienceLocations","type":"array","title":"Audience locations","description":"Targeted locations (ad details only)."},{"name":"payers","type":"array","title":"Payers","description":"Who paid for the ad (EU transparency; ad details only)."},{"name":"beneficiaries","type":"array","title":"Beneficiaries","description":"Who benefits from the ad (EU transparency; ad details only)."},{"name":"reachBreakdown","type":"array","title":"Reach breakdown","description":"EU reach by country / age range / gender (ad details only)."},{"name":"adsDelivered","type":"integer | null","title":"Ads delivered","description":"Ads delivered for this query (summary rows)."},{"name":"pagesFetched","type":"integer | null","title":"Pages fetched","description":"Upstream pages fetched (summary rows)."},{"name":"queryFeesCharged","type":"integer | null","title":"Page fees charged","description":"facebook-ads-query events charged for this query (summary rows)."},{"name":"totalResults","type":"integer | null","title":"Total results","description":"Total matching ads reported by the library (summary rows; capped at 50,001 by Meta)."},{"name":"stopReason","type":"string | null","title":"Stop reason","description":"limit | end | budget | max_pages | deadline | error | empty_pages (summary rows)."}],"outputExample":{"input":{"kind":"page","value":"15087023444"},"recordType":"ad","query":"15087023444","queryType":"page","position":1,"adArchiveId":"1212560900568826","adLibraryUrl":"https://www.facebook.com/ads/library?id=1212560900568826","pageId":"15087023444","pageName":"Nike","pageUrl":"https://facebook.com/nike","pageLikeCount":37497718,"pageCategories":["Ropa deportiva"],"isActive":true,"startDate":"2025-06-17T07:00:00.000Z","endDate":"2025-06-18T07:00:00.000Z","platforms":["facebook"],"adText":"Que el frío no te detenga. Explora la colección de invierno con estilo y actitud Nike. 🧥","headline":"Look de invierno activado","linkUrl":"https://fb.com/canvas_doc/569658969305127","displayUrl":"fb.com","ctaText":"Learn more","ctaType":"LEARN_MORE","mediaType":"video","imageUrls":[],"videoUrls":["https://video.xx.fbcdn.net/…hd.mp4"],"thumbnailUrl":"https://scontent.xx.fbcdn.net/…preview.jpg","impressionsText":null,"spendLower":null,"spendUpper":null,"targetedCountries":[],"status":"ok","charged":true,"chargedEvent":"facebook-ad","source":"scrapecreators","fetchedAt":"2026-10-14T10:00:00.000Z"},"faq":[],"mcpExamplePrompt":"Find 20 active Facebook and Instagram ads in the US that mention \"running shoes\" and summarize their headlines, calls to action and landing pages.","related":["ad-library-scraper","facebook-ad-lookup","google-ads-transparency","linkedin-ads-search","tiktok-ads-search"],"urls":{"site":"https://www.sfoln.com/actors/facebook-ads-search/","siteJson":"https://www.sfoln.com/actors/facebook-ads-search.json","siteMarkdown":"https://www.sfoln.com/actors/facebook-ads-search.md","runSync":"https://api.apify.com/v2/actors/sfoln~facebook-ads-search/run-sync-get-dataset-items","runAsync":"https://api.apify.com/v2/actors/sfoln~facebook-ads-search/runs","mcp":"https://mcp.apify.com?tools=sfoln/facebook-ads-search","requestAccess":"mailto:contact@sfoln.com?subject=Access%20request%3A%20Facebook%20Ads%20Library%20Scraper%20(sfoln%2Ffacebook-ads-search)&body=Please%20publish%20facebook-ads-search.%20What%20we%20plan%20to%20use%20it%20for%3A"},"publisher":{"name":"SFOLN LLC","apifyUsername":"sfoln","url":"https://www.sfoln.com","apifyProfile":"https://apify.com/sfoln","email":"contact@sfoln.com"},"generatedAt":"2026-10-22T04:28:58.477Z"}