Facebook Ad Library Scraper | Meta Ads, 21 Fields, No Login
Pricing
from $3.40 / 1,000 ads
Facebook Ad Library Scraper | Meta Ads, 21 Fields, No Login
Scrape Facebook & Instagram Ad Library by keyword or advertiser. Get ad copy, image and video creative URLs, CTAs, run dates & platforms. No login, no API key. Download creatives at scale. Works in Claude, ChatGPT & any MCP AI agent.
Pricing
from $3.40 / 1,000 ads
Rating
0.0
(0)
Developer
The Mine Works
Maintained by CommunityActor stats
1
Bookmarked
36
Total users
14
Monthly active users
5 hours ago
Last modified
Categories
Share
π’ Meta Ad Library Scraper: Competitor Ads, No Login
β‘ Pay only per ad delivered. No login, no Facebook Developer token. πΈ Blocked, empty, or failed searches are never billed.
What does Meta Ad Library Scraper do?
Meta Ad Library Scraper pulls every active or inactive ad Meta has on file for any keyword or advertiser Page ID from the Facebook and Instagram Ad Library. Feed it a category term or a competitor's Page ID and get back ad copy, image and video creative URLs, CTAs, landing pages, run dates, ad status, and target platforms. No login, no Facebook Developer token, no rate-limit maze to apply for.
It's the fastest way to run a competitor creative teardown, download creative in bulk for a swipe file, or build a paid-media intel pipeline that watches every ad a competitor publishes.
Reliability posture: blocked, empty, or failed searches are never charged. Every ad is pushed to your dataset first and only billed afterward, so you only pay for a record that actually reached you.
β No login required | β No API key | β Media URLs included | β MCP-ready for AI agents
Who is it for?
Performance marketers running a competitor creative teardown before a campaign brief. Agencies building a swipe file across a client's category. Market researchers watching which brands are advertising into a space and how their messaging shifts. Anyone whose AI agent needs to pull competitor ad creative on demand.
How much does it cost to scrape the Meta Ad Library?
You pay per ad actually delivered, pay as you go. No subscription, no monthly minimum.
| Event | Price | You pay when |
|---|---|---|
| Ad delivered | $0.0034 on Gold, $0.0058 on Free | An ad record lands in your dataset |
| Apify plan | Price per 1,000 ads |
|---|---|
| Free | $5.80 |
| Bronze | $5.00 |
| Silver | $4.20 |
| Gold and above | $3.40 |
The Pricing tab on this page is the single source of truth and always shows the rate for your own plan. If this table and the Pricing tab ever disagree, the Pricing tab is right.
What a real job costs. Apify's Free plan includes $5 of usage credit every month, about 860 ads a month at no cost to you. A 300-ad competitor teardown across three Page IDs costs about $1.02 on Gold. A 5,000-ad category sweep across a season costs about $17.00 on Gold.
What is never charged. Blocked, empty, or failed searches cost nothing. The charge event fires only after an ad record is in your dataset.
How does it work?
The actor reads the same public Meta Ad Library page that ad-library.facebook.com renders for anyone, logged in or not, over lightweight HTTP, no browser, no login. Each search term you supply is queried independently, and Page IDs, when supplied, take priority as a precise per-advertiser filter. The public page server-side-renders its first page of results, about 30 ads, as JSON embedded in the HTML document; the actor extracts that JSON directly rather than rendering the page, which is what keeps runs fast and cheap. Add more search terms or Page IDs to widen coverage rather than expecting one term to return everything.
Every ad record includes the original image and video creative URLs so you can pull creative into a swipe file or a side-by-side comparison. The actor never downloads media bytes itself, it returns links, which is also why it never bills you for bandwidth Meta's own CDN happens to serve slowly.
π§Ύ What input does it take?
{"searchTerms": ["meal kit delivery"],"pageIds": [],"country": "US","adActiveStatus": "active","adType": "all","mediaType": "all","maxAdsPerSearch": 100}
| Input | Required | What it does |
|---|---|---|
searchTerms | One of searchTerms or pageIds | Keyword terms to search |
pageIds | One of searchTerms or pageIds | Advertiser Facebook Page IDs, for precise per-advertiser tracking |
country | No | Two-letter country code (US, IN, GB, AE), defaults to US |
adActiveStatus | No | active, inactive, or all |
adType | No | Ad category filter, defaults to all |
mediaType | No | image, video, meme, or all |
maxAdsPerSearch | No | Caps ads returned per search term or Page ID, which is how you cap cost |
π€ What data do you get back?
A real run returns an array, one record per ad. The first record below is real, captured live from the actor (Nike, US, active ads, media URLs trimmed for length); the next two show the same schema for an ad that has already finished running and a multi-image DCO ad, so every documented field has a real example:
[{"ad_archive_id": "27310692851958858","page_id": "15087023444","page_name": "Nike","page_url": "https://www.facebook.com/nike/","is_active": true,"start_date": "2026-07-10T07:00:00.000Z","end_date": "2026-07-14T07:00:00.000Z","total_active_days": 4,"publisher_platforms": ["FACEBOOK", "INSTAGRAM"],"display_format": "VIDEO","ad_body": "Elevate your school look with versatile gear built for all-day comfort and style.","ad_title": "Kick Off the Season","ad_caption": "www.nike.com","cta_text": "Shop now","cta_type": "SHOP_NOW","link_url": "https://www.nike.com/w/back-to-school-840ik","collation_count": 1,"image_urls": ["https://scontent.fguz6-1.fna.fbcdn.net/v/t39.35426-6/..."],"video_urls": ["https://video.fguz6-1.fna.fbcdn.net/o1/v/t2/f2/m366/..."],"snapshot_url": "https://www.facebook.com/ads/library/?id=27310692851958858","scraped_at": "2026-07-15T04:16:37.224Z"},{"ad_archive_id": "24193756482037291","page_id": "121058404257","page_name": "HelloFresh","page_url": "https://www.facebook.com/HelloFreshUS/","is_active": false,"start_date": "2026-06-02T07:00:00.000Z","end_date": "2026-06-19T07:00:00.000Z","total_active_days": 17,"publisher_platforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK"],"display_format": "IMAGE","ad_body": "Skip the grocery run. Fresh ingredients and easy recipes delivered to your door every week.","ad_title": "Your First Box Is On Us","ad_caption": "www.hellofresh.com","cta_text": "Sign Up","cta_type": "SIGN_UP","link_url": "https://www.hellofresh.com/pages/plans","collation_count": 3,"image_urls": ["https://scontent.fguz6-1.fna.fbcdn.net/v/t39.35426-6/...", "https://scontent.fguz6-1.fna.fbcdn.net/v/t39.35426-6/..."],"video_urls": [],"snapshot_url": "https://www.facebook.com/ads/library/?id=24193756482037291","scraped_at": "2026-07-15T04:16:39.501Z"},{"ad_archive_id": "18382940175620473","page_id": "108734075589421","page_name": "Blue Apron","page_url": "https://www.facebook.com/BlueApron/","is_active": true,"start_date": "2026-07-01T07:00:00.000Z","end_date": null,"total_active_days": 14,"publisher_platforms": ["FACEBOOK", "INSTAGRAM", "MESSENGER"],"display_format": "DCO","ad_body": "Three new chef-designed recipes every week. No commitment, cancel anytime.","ad_title": "Cook Like a Chef Tonight","ad_caption": "www.blueapron.com","cta_text": "Learn More","cta_type": "LEARN_MORE","link_url": "https://www.blueapron.com/pages/menu","collation_count": 5,"image_urls": ["https://scontent.fguz6-1.fna.fbcdn.net/v/t39.35426-6/...", "https://scontent.fguz6-1.fna.fbcdn.net/v/t39.35426-6/...", "https://scontent.fguz6-1.fna.fbcdn.net/v/t39.35426-6/..."],"video_urls": [],"snapshot_url": "https://www.facebook.com/ads/library/?id=18382940175620473","scraped_at": "2026-07-15T04:16:41.118Z"}]
Every ad record contains these fields:
| Field | Description |
|---|---|
π ad_archive_id | Meta Ad Library archive ID |
π’ page_id | Facebook Page ID of the advertiser |
π·οΈ page_name | Name of the Facebook Page running the ad |
π page_url | URL of the advertiser's Facebook Page |
β
is_active | Whether the ad is currently active |
π
start_date | ISO date the ad started running |
π
end_date | ISO date the ad stopped, or null if still active |
π total_active_days | Days the ad has run, when Meta reports it |
π± publisher_platforms | Array of platforms (facebook, instagram, messenger, threads, etc.) |
ποΈ display_format | Creative format as reported by Meta (VIDEO, IMAGE, DCO, CAROUSEL, etc.) |
βοΈ ad_body | Primary text copy of the ad |
π·οΈ ad_title | Headline text of the ad |
π¬ ad_caption | Caption line shown under the creative (usually the display URL) |
π― cta_text | Call to action label (Shop Now, Learn More, etc.) |
π cta_type | Call to action type code (SHOP_NOW, LEARN_MORE, etc.) |
π link_url | Landing page the ad links to |
ποΈ collation_count | Number of ad variants Meta has grouped under this listing |
πΌοΈ image_urls | Array of image creative URLs |
π₯ video_urls | Array of video creative URLs |
π snapshot_url | Direct link to the ad's live Ad Library detail page |
π scraped_at | ISO timestamp of when the record was captured |
What are the limitations?
Worth knowing before you buy, so there are no surprises:
- About 30 ads per search term or Page ID. The public Ad Library page returns its first page of results and this actor does not paginate beyond it. Add more search terms or Page IDs for broader coverage rather than expecting one term to return everything.
- No spend or impressions figures. Meta exposes those numbers only for political, election, and social-issue ads in a handful of regions with ad-transparency laws, such as the EU and the US, and only inside Meta's own dedicated reporting tools for that category. This actor returns creative and metadata for every ad type, but it does not extract spend or impressions data even where Meta happens to publish it.
- Results are scoped to the country you choose.
countryis a required filter on the Ad Library itself, so an ad running in a different country than the one you searched will not appear in that run. Run the same search across multiple countries if you need multi-market coverage. - Media URLs point to Meta's CDN and can expire. Save what you need promptly rather than storing the link long-term.
- Meta occasionally rotates its anti-automation challenge on the public page. If every target in a run returns nothing, wait and retry rather than assuming the advertiser stopped running ads.
πΌ What can you use it for?
Competitor creative teardown Pull every active ad for a competitor and cluster the hooks, CTAs, and offers. Track how their creative rotates across weeks and platforms.
Category and keyword scanning Search a category term and see who is advertising and how. Discover new brands entering a category before they show up in Google Ads auction insights.
Political and issue ad monitoring Pull political and social-issue ads for coverage or research. Track messaging changes over a campaign period.
Ad creative library and swipe file Download creative in bulk to build an internal swipe file for your studio or client. Feed image and video URLs into an LLM for auto-tagging or theme analysis.
π How do I get started?
- Open the actor and add search terms, or paste one or more advertiser Page IDs for precise tracking.
- Set the two-letter
country(US,IN,GB,AE). - Choose ad status (active only, inactive only, or all) and media type.
- Set
maxAdsPerSearchto control cost. - Click Start. Records stream to the dataset as pages of results parse.
Is scraping the Meta Ad Library legal?
This actor reads only the public Meta Ad Library, a transparency archive Meta operates and makes available to anyone, logged in or not, with no login and no authentication wall bypassed. That said, this is general information and not legal advice. Ad creative can include personal data, a testimonial, a face, a name, so you remain responsible for your own compliance with GDPR, CCPA, and any other law that applies to how you use the data.
FAQ
Do I need a Facebook Developer account? No. The actor talks to the public Ad Library web endpoint and needs no API key, no app ID, and no OAuth flow.
How do I find an advertiser's Page ID?
Open any ad for the advertiser inside the Ad Library. The Page ID appears in the ad detail view and in the URL. Once you have it, use pageIds for the most precise, deduplicated results.
How much does it cost? Pay per ad returned, pay as you go. No subscription, no monthly minimum. See the pricing table above.
Does it include spend or impressions data? No. Meta only publishes those figures for political, election, and social-issue ads in a few regulated regions, and this actor focuses on creative and metadata across all ad types instead.
Why did my run return fewer than maxAdsPerSearch? The Ad Library serves about 30 ads on its first results page per search term or Page ID, and this actor does not paginate past that. Add more search terms or Page IDs to widen coverage.
Can I use Meta Ad Library Scraper through an MCP server? Yes. It is exposed as an MCP tool, so any MCP-compatible AI assistant, Claude, ChatGPT, or your own agent, can call it directly. See "Use in Claude, ChatGPT & any MCP agent" above for the paste-ready prompt and setup.
Use in Claude, ChatGPT & any MCP agent
https://mcp.apify.com/?tools=themineworks/meta-ad-library-scraper
Things an agent can ask for once connected:
- "Pull every active ad for Page ID [X] and summarize the creative angles they're running."
- "Search the Ad Library for 'meal kit delivery' ads running in the US and list the CTAs being used."
- "Compare the ad creative of [Brand A] and [Brand B] and tell me who's leaning more on video."
Copy this into your AI assistant
Paste the line below into ChatGPT, Claude, or any assistant connected to Apify's MCP, and it will run the job for you:
Use the Apify actor themineworks/meta-ad-library-scraper to pull every active ad for the Facebook Page ID 15087023444 and list the CTAs and display formats being used. Return the results as a table.
Or call it programmatically with the Apify client:
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });const run = await client.actor('themineworks/meta-ad-library-scraper').call({searchTerms: ['meal kit delivery'],country: 'US',adActiveStatus: 'active',maxAdsPerSearch: 100,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
π οΈ Complete your paid-media intel pipeline
Got the ads. Now build the wider picture:
- Google Trends Scraper: track category demand for the same keyword over time.
- Trustpilot Reviews Scraper: check what customers actually think of the advertisers.
- LinkedIn Company Scraper: profile the advertiser with size, industry, HQ, and website.
Typical flow: Meta Ad Library Scraper reveals the creative and offer, Google Trends shows demand, Trustpilot Reviews shows reality on the ground.
Questions or need a custom field set? Reach out through the Apify profile.