Facebook Ads Library Scraper - Meta Ads, All Countries
Pricing
from $0.50 / 1,000 ad scrapes
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
Maintained by CommunityActor stats
3
Bookmarked
459
Total users
11
Monthly active users
2 days ago
Last modified
Categories
Features
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?
| Field | Example | What it is |
|---|---|---|
advertiserName | Sephora | The Facebook Page running the ad |
adText | The perfect ballet bun is just a trip to Sephora away. | The ad copy (all versions, de-duplicated) |
headline, description | We get beauty. | The link headline and description |
ctaText, ctaType | Shop now, SHOP_NOW | The call-to-action button |
linkUrl | https://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 |
displayFormat | VIDEO, IMAGE, CAROUSEL, DCO, DPA | The ad's format (DCO = dynamic creative, DPA = catalogue ad) |
startDate, endDate, isActive, daysActive | 2026-08-31, "", true, 65 | When it ran and for how long |
collationCount | 3 | Ads sharing this creative |
publisherPlatforms | ["facebook", "instagram", "threads"] | Where it runs |
pageLikeCount, pageCategories, advertiserPageUrl | 20350560, ["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) |
snapshotUrl | https://www.facebook.com/ads/library/?id=1797454185033063 | The ad in the Ad Library |
inputQuery, source | https://www.facebook.com/sephora, website | Which input found it, and where the data came from |
How to scrape the Facebook Ads Library
- 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,Nikeor a Page id). - Pick Countries (all by default), and any filters: active or stopped ads, media type, platforms, languages, dates, sort order.
- 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.
- 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 plan | Per 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}
| Field | Default | Notes |
|---|---|---|
| Search keywords or Ad Library links | Keywords, Ad Library search links, Page links (view_all_page_id=) or single ads (?id=). A link's own filters win | |
| Facebook Pages | Page 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 | |
| Countries | All | One or more countries where the ads were shown |
| Active status | Active and inactive | Running now, stopped, or both |
| Ad category | All ads | Political and issue, housing, employment, credit |
| Keyword match | Unordered | Or exact phrase |
| Media type | All | Images, videos, memes, none |
| Platforms, Languages | All | Facebook, Instagram, Messenger, WhatsApp, Threads, Audience Network |
| Shown from / until | Only ads shown in this date range | |
| Sort by | Ad Library default | Total impressions, or most recent first |
| Max ads | 50 | Your cost cap |
| Max ads per search or Page | 0 (none) | Per-input cap |
| Only count ads | off | Counts instead of ads (official API) |
| Data source | Ad Library website | Or 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
spendis 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
Is it legal to scrape the Facebook Ads Library?
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.
Related scrapers
- TikTok Ads Library Scraper: the same research for TikTok ads.
- Google Ads Transparency Scraper: an advertiser's Google Search, YouTube and Display ads.
- LinkedIn Ad Library Scraper: B2B ads on LinkedIn.
- Facebook Pages Scraper: contact details, followers and ratings of the advertisers you find.
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.