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
(2)
Developer
Actor stats
2
Bookmarked
12
Total users
9
Monthly active users
14 hours 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.
๐ Try on Apify
๐ Input Schema
๐ API Docs
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.
๐ Search or Page, your choiceScrape an Ad Library keyword search or every ad a specific Facebook Page is running โ mix both in one run ๐จ Full ad creativeHeadline, primary text, CTA, landing URL, plus every image and video (including each carousel card) โฑ๏ธ Ad duration = winning adsEvery ad gets |
๐ Reach & spend, parsedEU/UK total reach, audience age & gender, plus impression/reach/spend ranges parsed into real numbers โ not ๐ Export anywhereJSON, CSV, Excel, XML, HTML ยท n8n, Zapier, Make, REST API, MCP ๐ฐ $0.50 per 1,000 adsPay-per-result, no monthly fee โ you're billed only for the ads you actually receive |
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 |
| Other native fields | url, position, total, ads_count, page_profile_uri, link_description, display_format, gated_type, hide_data_status, total_active_time, page_is_deleted, contains_digital_created_media, reach_estimate, spend, impressions_with_index, has_user_reported, report_count, state_media_run_label, regional_regulation_data, menu_items, fev_info, verified_voice_context |
| 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.
Push new ads straight to Slack, Notion, or Sheets (no code)
The other direction: pick an MCP connector in the input (Send results to an app) and every scraped ad is delivered into the app you authorized โ Slack, Notion, Airtable, Google Sheets, and more. Your credentials stay in Apify; the actor never sees them.
The killer setup is a new-ad alert: schedule this actor on a competitor's Page URL with the Last 24 hours filter and a Slack connector โ you get pinged the moment they launch a new creative. Choose one message per ad or a single run summary, and customize the message with {{field}} placeholders ({{page_name}}, {{ad_text}}, {{ad_library_url}}, โฆ). Delivery is best-effort and never blocks or fails the scrape.
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.
