Facebook Ads Library Scraper: Meta Ads API · Apify
Facebook Ads Library Scraper - Meta Ads, All Countries avatar

Facebook Ads Library Scraper - Meta Ads, All Countries

Pricing

from $0.50 / 1,000 ad scrapes

Go to Apify Store
Facebook Ads Library Scraper - Meta Ads, All Countries

Facebook Ads Library Scraper - Meta Ads, All Countries

Scrape the Facebook Ads Library by keyword, Page or Ad Library link, in any country: ad copy, images and videos, landing pages, CTAs, run dates, platforms and the advertiser Page with its likes. Political ad spend included. No login, no token. From $0.50 per 1,000 ads.

Pricing

from $0.50 / 1,000 ad scrapes

Rating

0.0

(0)

Developer

Eimantas V

Eimantas V

Maintained by Community

Actor stats

3

Bookmarked

459

Total users

11

Monthly active users

2 days ago

Last modified

Features

Limited permissions

Share

Facebook Ads Library Scraper pulls ads from Meta's Ad Library, the public archive of every ad running on Facebook, Instagram, Messenger, WhatsApp and Threads. Search by keyword, Facebook Page or any Ad Library link, in any country, and get each ad's copy, images and videos, landing page, call to action, run dates and advertiser Page. No login, no Facebook token, no browser, from $0.50 per 1,000 ads.

Sephora · "The perfect ballet bun is just a trip to Sephora away." · Shop now -> sephora.com
· video ad, active 65 days, 3 ads share this creative · Facebook, Instagram, Threads · 20.3M Page likes

Benchmark: 300 ads from three advertisers' Pages in 37 seconds; 200 ads from a keyword and two Pages in 30 seconds.

What does Facebook Ads Library Scraper do?

It searches the Ad Library the way you would in your browser, then returns every matching ad as one clean row, ready for a spreadsheet, a swipe file or a competitor dashboard.

  • Every country and every ad. Ordinary commercial ads in the US, UK, Canada, Australia and everywhere else, not only political ones or EU ones.
  • The full creative. Ad text, headline, description, call to action, landing page, every image and video (HD), carousel cards and the ad's format.
  • What is working. How many days each ad has run and how many ads share a creative: long-running, widely used creatives are the advertiser's winners.
  • The advertiser. Page name, link, likes, categories and the platforms each ad runs on.
  • Political ads. Spend and impressions ranges, currency and "paid for by", parsed into numbers.
  • Only pay for ads. An input that cannot be read returns an error row and costs nothing; an ad two inputs both find is charged once.
  • Built for automation. Schedules, API, webhooks, Make, Zapier, n8n, Google Sheets, and AI agents through Apify's MCP server.

Why it is fast and cheap

It asks the Ad Library for its own search results directly, 10 ads per request, and never opens a browser. That is why it is quick and why it can charge a fraction of browser-based scrapers. Facebook only answers these searches from home-type internet addresses, so the Actor uses Apify's residential proxy automatically; that cost is included in the price.

What data can you extract from the Facebook Ads Library?

FieldExampleWhat it is
advertiserNameSephoraThe Facebook Page running the ad
adTextThe perfect ballet bun is just a trip to Sephora away.The ad copy (all versions, de-duplicated)
headline, descriptionWe get beauty.The link headline and description
ctaText, ctaTypeShop now, SHOP_NOWThe call-to-action button
linkUrlhttps://www.sephora.com/The landing page
imageUrls, videoUrls["https://video...fbcdn.net/..."]Every image and video of the ad (links expire after some days: download what you keep)
cards[{ "title": ..., "linkUrl": ..., "imageUrl": ... }]Each card of a carousel or dynamic ad
displayFormatVIDEO, IMAGE, CAROUSEL, DCO, DPAThe ad's format (DCO = dynamic creative, DPA = catalogue ad)
startDate, endDate, isActive, daysActive2026-08-31, "", true, 65When it ran and for how long
collationCount3Ads sharing this creative
publisherPlatforms["facebook", "instagram", "threads"]Where it runs
pageLikeCount, pageCategories, advertiserPageUrl20350560, ["Health/beauty"]The advertiser's Page
spend, impressions, currency, bylines{ "lowerBound": "1500", "upperBound": "2000" }Political and issue ads only
euTotalReach, targetAges, targetGender, ageCountryGenderReachBreakdown(EU ads)EU reach and targeting (official API source only; null on website rows)
snapshotUrlhttps://www.facebook.com/ads/library/?id=1797454185033063The ad in the Ad Library
inputQuery, sourcehttps://www.facebook.com/sephora, websiteWhich input found it, and where the data came from

How to scrape the Facebook Ads Library

  1. Click Try for free. Under Search keywords or Ad Library links, enter keywords (one per line) or paste any Ad Library address from your browser. Under Facebook Pages, enter the advertisers you want to watch (https://www.facebook.com/nike, Nike or a Page id).
  2. Pick Countries (all by default), and any filters: active or stopped ads, media type, platforms, languages, dates, sort order.
  3. Set Max ads. You pay per ad, so this is also your cost cap. Max ads per search or Page keeps one big advertiser from using the whole run.
  4. Click Start, then open the Output tab (views: Overview, Creatives, Advertisers, Political and EU data) or download CSV, Excel or JSON.

How much does it cost to scrape the Facebook Ads Library?

You pay per ad returned, and the price drops on higher Apify plans:

Apify planPer 1,000 ads
Free$1.00
Starter$0.75
Scale$0.65
Business$0.50
  • A competitor's 500 active ads on the Starter plan: $0.38.
  • A weekly swipe file of 10,000 ads on the Business plan: $5.00.
  • A run also costs $0.00005 to start. Failed inputs and duplicate ads cost nothing.
  • The Free plan's $5 monthly credit covers about 5,000 ads.
  • Count-only mode (how many ads match, without the ads) costs $0.02 per input.

Input

{
"searchQueries": ["running shoes", "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=protein%20bar"],
"pageUrls": ["https://www.facebook.com/sephora", "Gymshark"],
"countries": ["US"],
"activeStatus": "ACTIVE",
"sortBy": "IMPRESSIONS",
"maxResults": 500,
"maxResultsPerQuery": 100
}
FieldDefaultNotes
Search keywords or Ad Library linksKeywords, Ad Library search links, Page links (view_all_page_id=) or single ads (?id=). A link's own filters win
Facebook PagesPage address, name or id: every ad the Page runs or ran
Ad Library URLs (other scrapers' format)startUrls from other Ad Library scrapers, run unchanged
CountriesAllOne or more countries where the ads were shown
Active statusActive and inactiveRunning now, stopped, or both
Ad categoryAll adsPolitical and issue, housing, employment, credit
Keyword matchUnorderedOr exact phrase
Media typeAllImages, videos, memes, none
Platforms, LanguagesAllFacebook, Instagram, Messenger, WhatsApp, Threads, Audience Network
Shown from / untilOnly ads shown in this date range
Sort byAd Library defaultTotal impressions, or most recent first
Max ads50Your cost cap
Max ads per search or Page0 (none)Per-input cap
Only count adsoffCounts instead of ads (official API)
Data sourceAd Library websiteOr the official API, for EU reach and targeting (ordinary ads only for EU countries)

Output

Each ad is one row:

{
"adArchiveId": "1797454185033063",
"advertiserName": "Sephora",
"advertiserPageId": "16453004404",
"advertiserPageUrl": "https://www.facebook.com/sephora/",
"adText": "The perfect ballet bun is just a trip to Sephora away.",
"headline": "We get beauty.",
"ctaText": "Shop now",
"ctaType": "SHOP_NOW",
"linkUrl": "https://www.sephora.com/",
"displayFormat": "DCO",
"imageUrls": [],
"videoUrls": ["https://video-phx1-1.xx.fbcdn.net/o1/v/t2/f2/m366/AQOy3VIXrmfzpJHF8wd9..."],
"publisherPlatforms": ["facebook", "instagram", "threads"],
"startDate": "2026-08-31",
"endDate": "",
"isActive": true,
"daysActive": 65,
"collationCount": 3,
"pageLikeCount": 20350560,
"pageCategories": ["Health/beauty"],
"spend": null,
"impressions": null,
"snapshotUrl": "https://www.facebook.com/ads/library/?id=1797454185033063",
"source": "website",
"inputQuery": "https://www.facebook.com/sephora"
}

A political ad adds its ranges, e.g. "spend": { "lowerBound": "1500", "upperBound": "2000" }, "impressions": { "lowerBound": "100000", "upperBound": "125000" }, "currency": "USD", "bylines": "Swamp Fox Solutions".

An input that cannot be read becomes a row with query and error (never charged), e.g. a Page name the Ad Library does not know, or an Ad Library link with no search in it.

Tips and limits

  • Find a competitor's best ads: their Page, Active only, Sort by: Total impressions, then sort the dataset by daysActive.
  • Monitor new ads: schedule a daily run with Sort by: Most recent and a small Max ads.
  • Spend is published only for political and issue ads. Meta does not publish what ordinary advertisers spend, so spend is null for them on every tool.
  • EU reach and targeting (reach, age and gender breakdowns) come from Meta's official API: choose it as the data source; it returns ordinary ads only for EU countries.
  • Media links expire. Meta's image and video links stop working after some days; download the files you want to keep.
  • Hit your spending limit? The run stops cleanly at your maximum cost per run and keeps everything it collected.

FAQ

The Ad Library is a public transparency archive that Meta publishes for anyone to search without logging in, and this Actor reads only what it shows logged out. Meta's terms restrict automated collection and reuse of its data, and ads can contain personal data protected by laws such as the GDPR. Use the results for research and analysis, do not resell them as a dataset, and ask a lawyer if you are unsure. Facebook and Meta are trademarks of Meta Platforms, Inc.; this Actor is not affiliated with or endorsed by Meta.

Can I use it through the API or with Make, Zapier and n8n?

Yes. Every run can be started through the Apify API and returns the dataset as JSON, CSV or Excel. Schedules, webhooks and integrations for Make, Zapier, n8n and Google Sheets are on the Integrations tab.

Can AI agents use it?

Yes. Agents connected to Apify's MCP server can find and run this Actor as a tool ("what ads is Gymshark running in the UK?"), with the same per-ad pricing.

Why did I get fewer ads than I asked for?

The search or Page has fewer matching ads, the run reached Max ads per search or Page, your maximum cost per run, or its timeout. The log says which, and everything collected before that is kept.

Support

Missing a field, or found an Ad Library link that does not work? Open an issue on the Issues tab with the input you used, and it will be looked at quickly.