Facebook Ads Library Scraper - Creative & Reach ($0.50/1k) avatar

Facebook Ads Library Scraper - Creative & Reach ($0.50/1k)

Pricing

from $0.40 / 1,000 ad results

Go to Apify Store
Facebook Ads Library Scraper - Creative & Reach ($0.50/1k)

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

Harsh Maur

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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 choice

Scrape an Ad Library keyword search or every ad a specific Facebook Page is running โ€” mix both in one run

๐ŸŽจ Full ad creative

Headline, primary text, CTA, landing URL, plus every image and video (including each carousel card)

โฑ๏ธ Ad duration = winning ads

Every ad gets ad_duration_days and is_long_running โ€” sort by it to surface proven, long-running winners instantly

๐Ÿ“Š Reach & spend, parsed

EU/UK total reach, audience age & gender, plus impression/reach/spend ranges parsed into real numbers โ€” not "10Kโ€“15K" text

๐Ÿ”„ Export anywhere

JSON, CSV, Excel, XML, HTML ยท n8n, Zapier, Make, REST API, MCP

๐Ÿ’ฐ $0.50 per 1,000 ads

Pay-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.

CategoryFields
Ad identityad_archive_id, ad_id, collation_id, collation_count, ad_library_url
Advertiser / Pagepage_id, page_name, page_url, page_profile_picture_url, page_like_count, page_categories
Status & datesis_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
Mediaimage_urls[], video_urls[], video_preview_image_urls[], image_count, video_count, card_count
Targeting & platformspublisher_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[]
Compliancecategories[], contains_sensitive_content, is_aaa_eligible, violation_types, is_violating_eu_siep
Rawthe 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 nested snapshot blob โ€” we lift them to the top level so they drop straight into a spreadsheet, and we compute ad_duration_days so 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)

  1. Open the Facebook Ad Library, pick a country, and search for a keyword, brand, or topic.
  2. Copy the URL from your browser's address bar.
  3. 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

FieldWhat it does
urlsAd Library search URLs and/or Facebook Page URLs (mix freely)
countMax ads across all URLs combined. Defaults to 100; set 0 for no limit
limitPerSourceMax ads per input URL (0 = all)
scrapeAdDetailsAlso fetch advertiser + EU/UK transparency (reach, age, gender) per ad
scrapePageAds.periodPage URLs only: last24h, last7d, last14d, last30d, or all time
scrapePageAds.activeStatusPage URLs only: all, active, or inactive
scrapePageAds.sortByPage URLs only: impressions_desc or most_recent
scrapePageAds.countryCodePage URLs only: 2-letter ISO code or ALL
runTagOptional 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 โ€” true once 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 reached
  • audience_age_min / audience_age_max and audience_gender โ€” who it targeted
  • audience_countries โ€” where it was delivered
  • advertiser โ€” 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

ScrapeCost
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 count and limitPerSource
  • 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)

  1. Get your token at Apify Integrations.
  2. 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):
{
"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.

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.


Building a wider competitive-intelligence or data pipeline? Pair this with our other Apify scrapers:


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.