Facebook Ad Library Scraper | Meta Ads, 21 Fields, No Login avatar

Facebook Ad Library Scraper | Meta Ads, 21 Fields, No Login

Pricing

from $3.40 / 1,000 ads

Go to Apify Store
Facebook Ad Library Scraper | Meta Ads, 21 Fields, No Login

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

The Mine Works

Maintained by Community

Actor stats

1

Bookmarked

36

Total users

14

Monthly active users

5 hours ago

Last modified

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.

EventPriceYou pay when
Ad delivered$0.0034 on Gold, $0.0058 on FreeAn ad record lands in your dataset
Apify planPrice 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
}
InputRequiredWhat it does
searchTermsOne of searchTerms or pageIdsKeyword terms to search
pageIdsOne of searchTerms or pageIdsAdvertiser Facebook Page IDs, for precise per-advertiser tracking
countryNoTwo-letter country code (US, IN, GB, AE), defaults to US
adActiveStatusNoactive, inactive, or all
adTypeNoAd category filter, defaults to all
mediaTypeNoimage, video, meme, or all
maxAdsPerSearchNoCaps 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:

FieldDescription
πŸ†” ad_archive_idMeta Ad Library archive ID
🏒 page_idFacebook Page ID of the advertiser
🏷️ page_nameName of the Facebook Page running the ad
πŸ”— page_urlURL of the advertiser's Facebook Page
βœ… is_activeWhether the ad is currently active
πŸ“… start_dateISO date the ad started running
πŸ“… end_dateISO date the ad stopped, or null if still active
πŸ“† total_active_daysDays the ad has run, when Meta reports it
πŸ“± publisher_platformsArray of platforms (facebook, instagram, messenger, threads, etc.)
🎞️ display_formatCreative format as reported by Meta (VIDEO, IMAGE, DCO, CAROUSEL, etc.)
✍️ ad_bodyPrimary text copy of the ad
🏷️ ad_titleHeadline text of the ad
πŸ’¬ ad_captionCaption line shown under the creative (usually the display URL)
🎯 cta_textCall to action label (Shop Now, Learn More, etc.)
πŸ”˜ cta_typeCall to action type code (SHOP_NOW, LEARN_MORE, etc.)
🌐 link_urlLanding page the ad links to
πŸ—‚οΈ collation_countNumber of ad variants Meta has grouped under this listing
πŸ–ΌοΈ image_urlsArray of image creative URLs
πŸŽ₯ video_urlsArray of video creative URLs
πŸ” snapshot_urlDirect link to the ad's live Ad Library detail page
πŸ•’ scraped_atISO 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. country is 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?

  1. Open the actor and add search terms, or paste one or more advertiser Page IDs for precise tracking.
  2. Set the two-letter country (US, IN, GB, AE).
  3. Choose ad status (active only, inactive only, or all) and media type.
  4. Set maxAdsPerSearch to control cost.
  5. Click Start. Records stream to the dataset as pages of results parse.

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:

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.