Facebook Ads Library Scraper - Creative & Reach ($0.50/1k)
Pricing
from $0.40 / 1,000 ad results
Facebook Ads Library Scraper - Creative & Reach ($0.50/1k)
Scrape ads from the Facebook (Meta) Ad Library by keyword or Page - no login, no Meta API key. Full ad creative (text, images, video, CTA, link), advertiser, run dates, ad duration & EU/UK reach. $0.50 per 1,000 ads. 70+ fields per ad. Works with AI Agents, MCP, n8n, Make & Zapier.
Pricing
from $0.40 / 1,000 ad results
Rating
5.0
(1)
Developer
Harsh Maur
Maintained by CommunityActor stats
1
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Facebook Ads Library Scraper โ Scrape Meta Ad Library Ads, Creative & Reach (No API Key)
Scrape ads from the Facebook (Meta) Ad Library by keyword or by Page โ full ad creative, advertiser, run dates, and EU/UK reach. No login, no Meta API key. $0.50 per 1,000 ads.
What it does โข How to use โข Data fields โข Output โข Pricing โข FAQ
What does the Facebook Ads Library Scraper do? {#what-does-the-facebook-ads-library-scraper-do}
Facebook Ads Library Scraper extracts ads from the Meta Ad Library โ the public archive of every ad running across Facebook, Instagram, Messenger, and the Audience Network. Paste an Ad Library search URL or a Facebook Page URL and get clean, structured data in JSON, CSV, or Excel: the ad copy, images and videos, the call-to-action, the advertiser, how long each ad has been running, and (for EU/UK ads) audience reach and demographics. No Meta Graph API token, no login, no Business Manager.
Why scrape the Facebook Ad Library?
The Meta Ad Library is the single best public source of competitor advertising intelligence โ but the website only lets you scroll one ad at a time, with no export, no sorting by ad age, and the creative buried behind clicks. This scraper turns it into a spreadsheet.
Built for:
- ๐ Dropshippers & ecommerce finding winning products and proven creatives
- ๐ฏ Performance marketers doing competitor ad research and swipe files
- ๐ข Agencies monitoring every ad their clients' competitors run
- โ๏ธ Copywriters & creative teams building ad inspiration libraries
- ๐ Market researchers tracking campaigns, messaging, and ad spend over time
- ๐ณ๏ธ Journalists & analysts auditing political and social-issue ad transparency
What data can you extract from the Facebook Ad Library? {#what-data-can-you-extract}
Each result is one ad with 70+ fields: every native Ad Library field plus computed fields that competing scrapers don't give you. Every record also carries scraped_at, search_term, and input_url, so mixed datasets stay easy to filter.
| Category | Fields |
|---|---|
| Ad identity | ad_archive_id, ad_id, collation_id, collation_count, ad_library_url |
| Advertiser / Page | page_id, page_name, page_url, page_profile_picture_url, page_like_count, page_categories |
| Status & dates | is_active, start_date / end_date (+ _iso and formatted), ad_duration_days, is_long_running |
| Creative (flattened) | ad_text, headline, cta_text, cta_type, link_url, caption, media_type |
| Media | image_urls[], video_urls[], video_preview_image_urls[], image_count, video_count, card_count |
| Targeting & platforms | publisher_platform[], platforms[], targeted_or_reached_countries[] |
| Reach / spend (parsed) | impressions_lower/_upper, reach_lower/_upper, spend_lower/_upper, currency |
| EU/UK transparency (with Scrape ad details) | advertiser, transparency_by_location, audience_total_reach, audience_age_min/_max, audience_gender, audience_countries[] |
| Compliance | categories[], contains_sensitive_content, is_aaa_eligible, violation_types, is_violating_eu_siep |
| Raw | the complete native snapshot object is preserved for power users |
The fields competitors bury, we surface.
ad_text,headline, and media URLs normally live inside a nestedsnapshotblob โ we lift them to the top level so they drop straight into a spreadsheet, and we computead_duration_daysso you can sort for winners in one click.
How to scrape Facebook ads {#how-to-scrape-facebook-ads}
You can scrape the Ad Library two ways โ use either or both in a single run.
Method 1: Scrape ads by keyword (Ad Library search URL)
- Open the Facebook Ad Library, pick a country, and search for a keyword, brand, or topic.
- Copy the URL from your browser's address bar.
- Paste it into the URLs field and run.
{"urls": [{ "url": "https://www.facebook.com/ads/library/?active_status=all&ad_type=all&country=US&q=skincare&search_type=keyword_unordered&media_type=all" }],"count": 500}
The scraper paginates automatically through every matching ad up to your limit.
Method 2: Scrape ads run by a Facebook Page
Paste a Page URL โ a vanity handle (facebook.com/nike), a profile.php?id= link, or a numeric page id. The scraper resolves it to the page and pulls every ad that advertiser is running, with optional date, status, country, and sort filters.
{"urls": [{ "url": "https://www.facebook.com/nike" }],"count": 0,"scrapePageAds.activeStatus": "active","scrapePageAds.period": "last30d","scrapePageAds.sortBy": "most_recent","scrapePageAds.countryCode": "US"}
Input options
| Field | What it does |
|---|---|
urls | Ad Library search URLs and/or Facebook Page URLs (mix freely) |
count | Max ads across all URLs combined. Defaults to 100; set 0 for no limit |
limitPerSource | Max ads per input URL (0 = all) |
scrapeAdDetails | Also fetch advertiser + EU/UK transparency (reach, age, gender) per ad |
scrapePageAds.period | Page URLs only: last24h, last7d, last14d, last30d, or all time |
scrapePageAds.activeStatus | Page URLs only: all, active, or inactive |
scrapePageAds.sortBy | Page URLs only: impressions_desc or most_recent |
scrapePageAds.countryCode | Page URLs only: 2-letter ISO code or ALL |
runTag | Optional label copied onto every output record |
Find winning ads by duration
The single most useful signal in competitor ad research is how long an ad has been running. Advertisers kill ads that don't convert โ so an ad live for 90+ days is almost certainly profitable. The Ad Library website makes this nearly impossible to see; this scraper computes it for you:
ad_duration_daysโ exact days the ad has been live (clamped to today for active ads)is_long_runningโtrueonce an ad passes 30 days
Pull a competitor's ads, sort by ad_duration_days descending, and the top of the list is their proven winners. That's your swipe file.
Scrape EU & UK ad transparency data
Enable Scrape ad details to fetch Meta's transparency data for ads that ran in the EU or UK, where the Digital Services Act requires disclosure:
audience_total_reachโ how many people the ad actually reachedaudience_age_min/audience_age_maxandaudience_genderโ who it targetedaudience_countriesโ where it was deliveredadvertiserโ the page's about text and ad-library spend summary
Reach, spend, and impressions are only published by Meta for ads about social issues, elections, or politics, and for ads delivered in certain regions. Standard commercial ads won't carry them โ that's a limit of the Ad Library itself, not the scraper.
Output example {#output-example}
{"ad_archive_id": "1046730950862281","page_name": "Nike","page_url": "https://www.facebook.com/15087023444","page_like_count": 38500000,"is_active": true,"start_date_iso": "2025-12-19T08:00:00.000Z","end_date_iso": null,"ad_duration_days": 92,"is_long_running": true,"ad_text": "Free shipping on the latest drops. Member exclusives all week.","headline": "Shop Nike","cta_text": "Shop now","cta_type": "SHOP_NOW","link_url": "https://www.nike.com/","media_type": "carousel","image_urls": ["https://scontent.../a.jpg", "https://scontent.../b.jpg"],"video_urls": [],"card_count": 7,"publisher_platform": ["FACEBOOK", "INSTAGRAM"],"platforms": ["facebook", "instagram"],"impressions_lower": 10000,"impressions_upper": 15000,"currency": "USD","categories": ["UNKNOWN"],"ad_library_url": "https://www.facebook.com/ads/library/?id=1046730950862281","search_term": "nike","scraped_at": "2026-06-19T12:00:00.000Z"}
How much does it cost to scrape Facebook ads? {#pricing}
Pay-per-result model
You pay only for the ads you receive โ no monthly subscription, no platform usage fees.
- Per ad: $0.0005 ($0.50 per 1,000 ads)
Example cost calculation
| Scrape | Cost |
|---|---|
| 1,000 ads | $0.50 |
| 10,000 ads | $5.00 |
| 100,000 ads | $50.00 |
No surprises: set count to cap exactly how much you spend per run (it defaults to 100, never unlimited, so an automated call can't run away with your budget).
Why pay-per-result?
- Scrape competitor ads occasionally without a standing subscription
- Cap spend precisely with
countandlimitPerSource - Pay nothing for idle time
Use the Facebook Ads Library Scraper with AI agents and MCP
This scraper works as a tool for AI agents out of the box via the Apify MCP server. Connect it to Claude, ChatGPT, Cursor, or any MCP-compatible client and your agent can pull a competitor's live ads, summarize their messaging, and spot their longest-running creatives on demand โ no glue code.
Typical agent workflows:
- ๐ค "Show me every active ad [brand] is running and which has been live longest"
- ๐ Feed scraped ad copy and creatives into an LLM for messaging and angle analysis
- ๐ Combine with scheduled runs + webhooks for autonomous competitor-ad monitoring
The structured JSON (70+ fields per ad, with the creative already flattened) is ready for RAG pipelines and ML datasets.
Integrate with n8n, Zapier, and Make
Automate your ad-intelligence pipeline by connecting this scraper to n8n, Zapier, or Make.
Synchronous run (quick scrapes under 5 minutes)
- Get your token at Apify Integrations.
- Add an HTTP Request node:
- Method:
POST - URL:
https://api.apify.com/v2/acts/harshmaur~facebook-ads-library-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN - Body (
JSON):
- Method:
{"urls": [{ "url": "https://www.facebook.com/ads/library/?active_status=all&ad_type=all&country=US&q=coffee&search_type=keyword_unordered&media_type=all" }],"count": 100}
โ ๏ธ The synchronous endpoint times out after 300 seconds. For large pulls, start the run asynchronously and poll for completion (a Wait node in n8n is the reliable pattern), then fetch the dataset.
Support
๐ Report an issue โ directly in the Run console, so we can reproduce and fix it fast.
๐ง Email โ feature requests and detailed questions: harshmaur@gmail.com
โญ Happy with the data? A quick review on the actor page helps other marketers find this scraper and keeps improvements coming.
FAQ {#faq}
Do I need a Facebook account or Meta API key?
No. The Ad Library is a public transparency tool โ this scraper needs no login, no Meta Graph API token, no Business Manager, and no app review. Paste a URL and run.
Is it legal to scrape the Facebook Ad Library?
The Ad Library is published by Meta specifically for public transparency and contains no private user data โ only what advertisers chose to show. Scraping public data is generally lawful, but your results can still contain personal data (e.g. an advertiser's name), which is protected by the GDPR in the EU and similar laws elsewhere. Only collect what you have a legitimate reason to use, and consult a lawyer if you're unsure. ๐ More on the enforceability of terms of use.
How do I scrape all ads from a specific advertiser?
Paste the advertiser's Facebook Page URL into urls โ a vanity handle (facebook.com/nike), a profile.php?id= link, or a numeric page id all work. The scraper resolves it to the page and pulls every ad it's running. Use the scrapePageAds.* filters to narrow by date, status, country, or sort order.
How do I find a competitor's best-performing ads?
Scrape their page, then sort the output by ad_duration_days (highest first). Long-running ads are the ones the advertiser keeps paying for โ i.e. the ones that work. is_long_running flags everything past 30 days.
Can I get ad reach, impressions, and spend?
Yes, where Meta publishes it. Reach, impressions, and spend are disclosed for ads about social issues, elections, or politics, and for ads delivered in the EU/UK. Enable Scrape ad details to also pull audience_total_reach, age, and gender for those ads. Standard commercial ads won't have these numbers โ that's a limitation of the Ad Library, not the scraper.
How many ads can I scrape?
As many as you want โ set count to your target (it defaults to 100; use 0 for no limit) and limitPerSource to cap each URL. The scraper paginates through all available results.
Why are some fields empty?
Meta only publishes certain fields (reach, spend, impressions, transparency) for specific ad types and regions. Empty values mean Meta didn't disclose them for that ad โ the scraper returns exactly what the Ad Library exposes.
Can I download images and videos from the ads?
The output includes direct URLs to every image and video in each ad (image_urls, video_urls, including carousel cards). Download them from those URLs with any HTTP client or your automation tool.
Related scrapers
Building a wider competitive-intelligence or data pipeline? Pair this with our other Apify scrapers:
- Reddit Scraper โ posts, comments, communities, and user profiles for social listening
- Indeed Jobs Scraper โ job listings with salary and company data
- LinkedIn Jobs Scraper โ job-market intelligence from public LinkedIn listings
Keywords: facebook ads scraper, meta ads scraper, facebook ad library scraper, scrape facebook ads, facebook ad library api, competitor ad research, ad spy tool, ad creative scraper, meta ad library export.