Facebook Ad Library Scraper: Ads by Keyword or Page ID
Pricing
from $1.50 / 1,000 ad scrapeds
Go to Apify Store
Facebook Ad Library Scraper: Ads by Keyword or Page ID
Scrape the public Facebook Ad Library by keyword or page: advertiser, ad copy, media, CTA, start date and platforms. No login required.
Facebook Ad Library Scraper — Ads by Keyword or Page ID
Pull ads from Meta's public Facebook Ad Library with no login and no Facebook account. Search by advertiser/keyword or by numeric Page ID, pick a country, and get structured ad rows you can analyse or export.
What it returns (one row per ad)
ad_archive_id,ad_id,collation_id,ad_library_url,is_activeentity_type,categories,gated_type,contains_sensitive_content,contains_digital_created_mediaadvertiser:page_id,page_name,page_url,page_profile_url, profile picture,page_categories,page_like_count,page_is_deleted, linkedinstagramaccountad_copy: body, title, caption, link description,extra_textscta: button text, type,destination_url(landing page), captionmedia: image URLs, video URLs (+ preview), carouselcards,extra_images/extra_videos/extra_links,image_count/video_count, display formatstart_date,end_date,created_date,total_active_time_secondspublisher_platforms(Facebook, Instagram, Audience Network, Messenger, Threads),targeted_or_reached_countries,political_countriestotal_active_variations— number of creative variations in the ad collation- political / issue / EU-transparency ads (
politicalobject):currency, rawspend/impressions,byline,impressions_range,spend_range,eu_total_reach,demographics(reach splitby_age_genderandby_region),beneficiary_payers— populated when Meta discloses them queryandsourceUrl— which search produced the ad
Use cases
- Competitor ad research — see what a brand is running right now and where it sends traffic.
- Creative inspiration — collect ad copy, hooks and CTAs in your niche.
- Ad longevity analysis — compare
start_date/end_dateto spot ads that keep running. - Landing-page discovery from
cta.destination_url.
Example input
{"searchTerms": ["nike"],"pageIds": ["15087023444"],"country": "US","adType": "all","activeStatus": "active","mediaType": "all","searchType": "keyword_unordered","maxItems": 30}
Search filters
searchTerms(keyword) and/orpageIds(exact advertiser) — at least one.country— ISO-2 code (US,BR,GB,DE, ...) orALL.adType—allorpolitical(political & issue ads expose extra transparency data).activeStatus—active,inactiveorall.mediaType—all,image,meme,image_and_meme,videoornone(text-only).searchType—keyword_unordered(broad) orkeyword_exact_phrase(exact phrase).
Example output (real run, trimmed)
{"ad_archive_id": "2082518615715836","ad_library_url": "https://www.facebook.com/ads/library/?id=2082518615715836","is_active": true,"advertiser": { "page_id": "15087023444", "page_name": "Nike", "page_url": "https://www.facebook.com/15087023444" },"ad_copy": { "body": "..." },"cta": { "text": "Shop now", "destination_url": "https://..." },"start_date": "2026-06-29T07:00:00.000Z","publisher_platforms": ["FACEBOOK", "INSTAGRAM"]}
Why choose this Actor
- Pay only for results — pay-per-event pricing, no monthly rental and no minimum charge.
- No login and no official API key needed — it reads the public Ad Library only.
- Structured output — clean JSON rows you can export to CSV, Excel or push into your pipeline via the Apify API, webhooks or integrations.
- Honest by design — if a field is not available it is returned as
null/missing and failed inputs return an expliciterror; nothing is invented. - Maintained — report any issue on the Issues tab and it gets looked at quickly.
Limitations (honest notes)
- Results are what the public Ad Library shows logged-out; exact spend/impressions are only available for political & issue ads, not for commercial ads.
- A residential proxy is used by default because datacenter IPs are blocked or return empty results; it runs a headless browser, so runs take longer than HTTP-only actors.
maxItemsis the total across all search terms and page IDs. Some fields (e.g.total_active_variations) can benull.- A keyword search matches advertisers/ad text broadly — results are not limited to the brand you typed (e.g. "nike" also returned a reseller's ad); use
pageIdsfor one exact advertiser.
⭐ Enjoying this Actor?
If it saved you time, please leave an honest review on the Store — it genuinely helps us keep it fast, accurate and well-maintained. Found something that misbehaved or want a new feature? Open an Issue and we'll jump on it quickly.