Meta Ad Library Scraper (Facebook & Instagram Ads) avatar

Meta Ad Library Scraper (Facebook & Instagram Ads)

Pricing

from $0.20 / 1,000 ads

Go to Apify Store
Meta Ad Library Scraper (Facebook & Instagram Ads)

Meta Ad Library Scraper (Facebook & Instagram Ads)

Facebook Ad Library API: scrape Facebook & Instagram ads by page, keyword or URL. Ad copy, CTA, landing page, image & video URLs, dates, platforms, page info, spend for political ads. $0.20/1K ads with proxy included, no login.

Pricing

from $0.20 / 1,000 ads

Rating

0.0

(0)

Developer

Quelli di Carne Genuina

Quelli di Carne Genuina

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

17 hours ago

Last modified

Share

Scrape the public Meta Ad Library (facebook.com/ads/library) by page, keyword or Ad Library URL. Get every Facebook, Instagram, Messenger and Audience Network ad with its copy, headline, CTA, landing page, image and video URLs, start and end dates, platforms, page info and, for political and issue ads, Meta's spend and reach ranges. No Facebook login, no cookies, no Meta API token.

Independent tool, not affiliated with or endorsed by Meta Platforms, Inc. It reads only what Meta publishes in its public Ad Library.

What you get

One row per ad (real result for Nike, shortened):

{
"ad_archive_id": "1632663538563793",
"ad_library_url": "https://www.facebook.com/ads/library/?id=1632663538563793",
"page_id": "15087023444",
"page_name": "Nike",
"is_active": true,
"start_date_iso": "2026-08-31T07:00:00.000Z",
"end_date_iso": "2026-10-16T07:00:00.000Z",
"publisher_platform": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK"],
"display_format": "IMAGE",
"ad_text": "Bring sports more fully into your day with the Nike App.",
"title": "Nike Zenvy Women's Dri-FIT Tank Top",
"cta_text": "Install now",
"link_url": "http://play.google.com/store/apps/details?id=com.nike.omega",
"image_urls": ["https://scontent.xx.fbcdn.net/v/t39.35426-6/788880667_..._n.jpg"],
"video_urls": [],
"page_like_count": 39501406,
"collation_count": 2,
"snapshot": { "body": { "text": "..." }, "cards": [], "images": [], "videos": [], "...": "every field of the Ad Library" }
}

Political and issue ads also come with spend (e.g. "$300K-$350K"), currency and reach_estimate / impressions_text (e.g. ">1M").

Try it in 1 click. Press Start with the prefilled input (30 active Nike ads): it takes about 10 seconds and costs $0.006.

Price: $0.20 per 1,000 ads on every Apify plan, platform usage and residential proxy included, no start fee.

Why this Meta Ad Library scraper

  • All-inclusive price: $0.20 per 1,000 ads and nothing else. The most used alternative charges $0.14–0.15 per 1,000 plus the platform usage and residential proxy of the run, which you pay on top.
  • Drop-in compatible: the input fields of jmlp's actor (adLibraryUrls, adLibraryUrl, pageIDs, pageID, keyword, keywords, searchType, country, activeStatus, minDate, maxDate, maxAds, maxConcurrency) work with the same names and values, and the output keeps Facebook's own field names (ad_archive_id, page_name, snapshot.body.text, snapshot.images, publisher_platform, spend...). startUrls, urls and maxItems / resultsLimit are read too.
  • Flat, spreadsheet-ready fields next to the raw snapshot: ad_text, title, cta_text, link_url, image_urls, video_urls (HD first), start_date_iso, end_date_iso, ad_library_url, page_url.
  • Every input style: Ad Library URLs (all filters kept), single ad links (?id=), page ids, @usernames, facebook.com page links, keywords with exact-phrase matching.
  • More filters: media type (image, video, meme), political and issue ads with spend, delivery date window, country by code or name.
  • Reliable: solves the Ad Library's JS challenge, rotates residential sessions when Facebook rate-limits and continues from the same page, deduplicates ads across targets.

Use cases

  • Competitor ad research: every ad a competitor runs on Facebook and Instagram, and which ones run for months (usually the winners).
  • Creative inspiration and swipe files: image and video URLs of the ads in your niche.
  • Market research by keyword: all advertisers talking about "running shoes", "solar panels" or "meal kit" in a country.
  • Lead generation: find businesses actively spending on Meta ads (page name, link, likes, categories).
  • Political ad monitoring: spend and reach ranges of election and issue ads.
  • Monitoring: schedule a daily run on your competitors' pages and get new ads in Slack, Sheets or a webhook.

Input

{
"pageIDs": ["15087023444", "@cocacola"],
"keywords": ["running shoes"],
"country": "US",
"activeStatus": "active",
"mediaType": "video",
"maxAds": 500
}
FieldWhat it does
adLibraryUrlsURLs copied from your browser: Ad Library page or keyword searches (filters kept), single ads (?id=), Facebook pages (facebook.com/nike).
pageIDsNumeric page ids (view_all_page_id), @usernames or facebook.com links.
keywordsSearch the whole Ad Library, like its search box.
searchTypekeyword_unordered (default) or keyword_exact_phrase.
countryUS, IT, Italy... or ALL.
activeStatusall (default), active, inactive.
adTypeall or political_and_issue_ads (with spend and reach).
mediaTypeall, image, video, meme, image_and_meme, none.
minDate / maxDateAds delivered in this window (YYYY-MM-DD).
maxAdsStop after this many unique ads in total; empty = all.
maxConcurrencyTargets scraped in parallel (default 3).
proxyConfigurationResidential Apify Proxy (default, recommended).

Output

Every field Facebook returns for an ad (same names as in the Ad Library's own data, so existing pipelines keep working), plus:

FieldMeaning
ad_archive_id, ad_library_urlLibrary ID and public link of the ad
page_id, page_name, page_url, page_like_count, page_categoriesAdvertiser
ad_text, title, cta_text, link_urlCopy, headline, button and landing page (first card for carousels / catalog ads)
image_urls, video_urls, video_preview_image_urlsCreatives, including carousel cards
display_formatIMAGE, VIDEO, CAROUSEL, DCO, DPA...
is_active, start_date, end_date, start_date_iso, end_date_isoWhen it ran (Unix and ISO)
publisher_platformFACEBOOK, INSTAGRAM, MESSENGER, AUDIENCE_NETWORK, THREADS
collation_countHow many versions of the ad exist
spend, currency, reach_estimate, impressions_textPolitical and issue ads only (Meta does not publish them for commercial ads)
snapshotThe full raw creative object (cards, extra texts, branded content...)
search_url, total_ads_in_search, scraped_atWhere the ad came from

Export as CSV, Excel, JSON or XML from the Dataset tab, or via API.

Pricing

Pay per event, one event per unique ad, no start fee, and the Apify platform usage and residential proxy are included:

Apify planPrice per adPer 1,000 ads
Free$0.0002$0.20
Bronze$0.0002$0.20
Silver$0.0002$0.20
Gold, Platinum, Diamond$0.0002$0.20

Set maxAds or a maximum total charge on the run to cap spending; the actor stops cleanly when it is reached.

Migrating from jmlp/meta-ad-library-scraper

Change the actor ID to lagenuina_agency/meta-ad-library-scraper; the input usually works unchanged.

jmlp inputThis actorNotes
adLibraryUrls, adLibraryUrlsameAd Library URLs, single ad links, Facebook page links.
pageIDs, pageIDsameNumeric ids, @usernames, facebook.com links. A plain name that is not a page username is searched as a keyword.
keyword, keywords, searchTypesameSame values (keyword_unordered, keyword_exact_phrase).
country, activeStatus, minDate, maxDatesameSame values.
maxAds, maxConcurrencysamemaxConcurrency = targets in parallel.
proxyConfigurationsameResidential by default.
raw(always on)The raw ad object is always included, with flat fields added.
maxPages, delayMs, pageSize, docId, impersonate, proxyRotations, resume, continueFromLastRun, shardSplitThreshold, proxySessionId(not needed)Ignored: retries, pacing and the GraphQL query id are handled automatically.
(not available)mediaType, adTypeExtra filters.

Output: jmlp's fields (ad_archive_id, page_id, page_name, is_active, start_date, end_date, publisher_platform, collation_count, snapshot.*, spend, currency, reach_estimate) keep their names.

Price per 1,000 ads (public Apify Store prices, checked on 17 October 2026):

Apify planjmlpThis actor
Free, Bronze$0.15 + platform usage and proxy$0.20, all included
Silver and above$0.14 + platform usage and proxy$0.20, all included

In our test runs the platform usage plus residential proxy of a run like this was about $0.05 per 1,000 ads, so the total is in the same range or lower, without surprises on the bill. Speed and completeness: we have not benchmarked the two actors side by side; run the same input on both and compare.

Limits / not supported

  • Facebook serves the Ad Library 10 ads per request, so large archives take time: about 3–4 seconds per 10 ads per target (roughly 6 minutes for 1,000 ads of one page). Several targets run in parallel.
  • Spend, impressions and reach are published by Meta only for political and issue ads. EU audience breakdowns (age, gender, EU reach) of commercial ads, shown on each ad's detail panel, are not extracted.
  • Meta stopped running political and issue ads in the EU in October 2025: for EU countries the political category returns few or no ads with spend. US, UK, Brazil and the rest of the world work as usual.
  • Image and video URLs are signed Facebook CDN links that expire after some days: download the files you want to keep.
  • A plain advertiser name (not a username) is searched as a keyword. Use the page id or the facebook.com link for one exact advertiser.
  • Keyword searches can match tens of thousands of ads: set maxAds.
  • Residential proxy needed: Facebook rate-limits datacenter IPs on the Ad Library.

Use it from AI agents (MCP)

{
"mcpServers": {
"apify": { "url": "https://mcp.apify.com/?actors=lagenuina_agency/meta-ad-library-scraper" }
}
}

Ask things like "Which video ads is Nike running on Instagram in Italy right now?" or "Find Facebook ads about solar panels in Germany and list their landing pages."

Integrations and API

# pip install apify-client
from apify_client import ApifyClient
client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("lagenuina_agency/meta-ad-library-scraper").call(run_input={"pageIDs": ["15087023444"], "activeStatus": "active", "maxAds": 100})
for ad in client.dataset(run["defaultDatasetId"]).iterate_items():
print(ad["page_name"], ad["ad_text"], ad["image_urls"], ad["video_urls"])
// npm i apify-client
import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('lagenuina_agency/meta-ad-library-scraper').call({ keywords: ['running shoes'], country: 'US', activeStatus: 'active', maxAds: 100 });
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Ready-to-run examples (Python CSV export, Node.js, n8n workflow): github.com/assa83/facebook-ad-library-api.

No-code: use the Apify app in n8n, Make or Zapier (action "Run Actor", pick lagenuina_agency/meta-ad-library-scraper), or the langchain-apify / CrewAI ApifyActorsTool integrations for AI agents. Send results to Google Sheets, Slack, webhooks or S3 with Apify integrations.

More tools from Quelli di Carne Genuina

Ad intelligence

Competitor & SEO research

Travel prices

Retail prices

Content & social data

Together: see a competitor's ads on Meta, Google and LinkedIn in one workflow.

FAQ

How do I see all Facebook ads of a page? Put its page id, @username or facebook.com link in pageIDs (or paste its Ad Library URL), set activeStatus to all and leave maxAds empty.

How do I find a page id? Open the page in the Ad Library: it is the view_all_page_id= number in the URL. Or just use the @username.

Does it scrape Instagram ads? Yes. The Meta Ad Library covers Facebook, Instagram, Messenger, Audience Network and Threads; publisher_platform says where each ad ran.

Is there a Facebook Ad Library API? Meta's official Ad Library API covers only political/issue ads (and EU ads) and requires identity verification and a developer app. This actor works as an API for all ads: send page ids, keywords or URLs and get JSON back from Python, JavaScript, n8n, Make, Zapier or MCP.

Can I export Facebook ads to CSV or Excel? Yes, from the Dataset tab or via API.

Can I download the ad images and videos? The output has direct URLs to the full-size images and HD videos; download them soon, the links expire.

Does it need my Facebook login? No, the Ad Library is public. No account, cookies or API token.

Why is spend empty? Meta publishes spend and reach only for political and issue ads.

Is it legal to scrape the Meta Ad Library? It is public transparency data. You are responsible for how you use it; avoid processing personal data without a legal basis and check local laws.

Something missing or broken? Open an issue on the Issues tab, we reply within 24 hours.