Facebook Ad Library Scraper | $1 per 1,000 Ads · Apify
Facebook Ads Library Scraper: Ads by Keyword or Page, No Login avatar

Facebook Ads Library Scraper: Ads by Keyword or Page, No Login

Pricing

from $0.70 / 1,000 results

Go to Apify Store
Facebook Ads Library Scraper: Ads by Keyword or Page, No Login

Facebook Ads Library Scraper: Ads by Keyword or Page, No Login

Facebook Ad Library scraper for public Meta ads by keyword, page ID or Ad Library link: ad text, advertiser, start date, platforms, carousel cards, link, image and video links. Deep mode for hundreds of ads per search. No login. $1 per 1,000 results, platform usage included.

Pricing

from $0.70 / 1,000 results

Rating

0.0

(0)

Developer

One Dollar Store

One Dollar Store

Maintained by Community

Actor stats

0

Bookmarked

7

Total users

4

Monthly active users

11 hours ago

Last modified

Categories

Features

Limited permissions

Share

$1 per 1,000 ads. Platform usage included. No rental, no minimum.

Facebook Ad Library Scraper turns the public Meta Ad Library into rows: advertiser, ad text, headline, button, landing page and its domain, start date, days running, platforms, format, carousel cards, and image and video links. Search by keyword, by advertiser page ID or with a link copied from the Ad Library, filter by country, date, status, media type and ad category, and use deep mode to get hundreds of ads per search instead of the first 30.

Open it in Apify Console

New to Apify? [Create a free account](https://www.apify.com?fpr=ymnoit) (referral link).

How much does Facebook Ad Library Scraper cost?

AdsPrice
1,000$1.00
10,000$10.00
100,000$100.00

One flat price, platform usage included, so there is no separate compute or proxy bill. A daily deep run over 3 competitors that returns 300 ads costs $0.30, or about $9.00 over 30 days.

Use cases

  • Competitor research. Every active ad of a rival's page, with start dates and days running. Ads that have run for months are usually the ones that work.
  • Creative swipe files. Ad text, headlines, buttons, carousel and catalogue cards, and image and video links, ready for a sheet or a database.
  • Offer and landing page tracking. linkUrl and linkDomain show where each ad sends people, so you can group ads by site.
  • Market scans. Who advertises on a topic in a country, and how many ads Facebook counts for it (searchResultCount).
  • Political and issue ads. Spend and impressions ranges and "paid for by" lines where Meta publishes them.
  • Monitoring. Schedule a daily run and compare rows by adArchiveId to see new and stopped ads.

Why use it

  • One flat price. The Ad Library needs a full browser, and that browser time and the proxy are included. The bill follows the number of ads and nothing else.
  • Hundreds of ads per search. Facebook shows a logged out visitor about 30 ads per search. Deep mode opens the same search again for older and older start dates, about 30 new ads every 3 to 4 seconds. In a test on 11 November 2026, three keywords returned 1,000 ads in 109 seconds.
  • No Facebook account. The actor opens the public Ad Library as a logged out visitor. No cookies, no login, no API key.
  • Wide rows, no repeats. Up to 45 fields, from the advertiser's page and likes to each carousel card's own link. An ad already returned in the run is dropped before you are charged.

How to use Facebook Ad Library Scraper

  1. Open the actor, type a keyword or paste an Ad Library link, press Start.
  2. Or paste this input to get up to 300 active US ads for one keyword:
{ "searchQueries": ["running shoes"], "country": "US", "searchDepth": "deep", "maxItems": 300 }

For all recent ads of one advertiser, use its page ID (every row carries pageId):

{ "pageIds": ["71740214065"], "country": "US", "activeStatus": "all", "dateFrom": "90 days", "searchDepth": "deep", "maxItems": 500 }
  1. Download the results as JSON, CSV or Excel, or read them through the API.

Use it from code

curl -X POST "https://api.apify.com/v2/acts/one_dollar_store~facebook-ad-library-scraper/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQueries": ["running shoes"], "country": "US", "searchDepth": "deep", "maxItems": 100}'
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("one_dollar_store/facebook-ad-library-scraper").call(
run_input={"searchQueries": ["meal kit"], "country": "US", "searchDepth": "deep", "maxItems": 200}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["startDate"], item["pageName"], item.get("linkDomain"), item.get("bodyText", "")[:80])

Use it from an AI assistant

Claude, ChatGPT, Cursor and other assistants can call this actor through Apify's MCP server. Add it with this server address:

https://mcp.apify.com?tools=one_dollar_store/facebook-ad-library-scraper

Then ask, for example: "Find 200 active Facebook ads for meal kits in the US and tell me which advertisers have run theirs the longest and which sites they send people to."

Switching from another Facebook Ad Library actor

You may know it asHere
query, keyword, keywords, searchTermssearchQueries (a list, one search each)
pageId, pageIDs, advertisers (numeric IDs)pageIds
startUrls, adLibraryUrls, adLibraryUrladLibraryUrls
minDate, onlyAdsNewerThan, startDatedateFrom (YYYY-MM-DD or "30 days")
maxDate, onlyAdsOlderThan, endDatedateTo
sortBy, sortingsortBy (default, impressions, newest)
searchTypesearchType (keyword_unordered, keyword_exact_phrase)
maxAds, resultsLimit, maxItemsmaxItems for the run, maxItemsPerTarget per search

The core output fields are adArchiveId, pageId, pageName, bodyText, title, startDate, isActive, platforms, displayFormat, linkUrl and cards.

Input

FieldTypeDefaultWhat it does
searchQuerieslist of textnoneKeywords to search, for example a brand, product or topic. Each one is a separate search.
pageIdslist of textnoneNumeric Facebook page IDs, or Ad Library links with view_all_page_id, to get one advertiser's ads.
adLibraryUrlslist of textnoneLinks copied from facebook.com/ads/library: a search, an advertiser's ads or one ad (?id=). Each keeps its own filters; the fields below fill only what a link leaves out.
countrytextUSTwo letter country code where the ads ran, or ALL.
activeStatustextactiveactive, inactive or all.
adTypetextallall, political_and_issue_ads, housing_ads, employment_ads or credit_ads.
mediaTypetextallall, image, video, meme, image_and_meme or none.
searchTypetextkeyword_unorderedMatch any of the words, or keyword_exact_phrase.
sortBytextdefaultdefault (Facebook's order), impressions or newest.
dateFrom, dateTotextnoneOnly ads shown in this range: YYYY-MM-DD, or a span back from today such as 30 days.
searchDepthtextfirst_pagefirst_page (about 30 ads per search) or deep (walks each search back in time for many more).
maxItemsnumber100Total ads for the run. Minimum 10.
maxItemsPerTargetnumber0Cap per keyword, page or link. 0 means no cap.
proxyConfigurationobjectApify data centerProxy for the browser. Its cost is included in the price.

Give at least one keyword, page ID or Ad Library link.

What data does Facebook Ad Library Scraper return?

FieldMeaning
adArchiveId, adLibraryUrlAd Library id and link. Good for dropping repeats across runs.
pageId, pageName, pageUrl, pageLikeCount, pageCategories, pageProfilePictureUrl, pageIsDeletedThe advertiser's page.
isActive, startDate, endDate, activeDaysStatus and dates. endDate of an active ad is the day of the run.
platforms, displayFormatWhere it ran (Facebook, Instagram, Messenger, Threads, Audience Network, WhatsApp) and the format, such as IMAGE, VIDEO, CAROUSEL, DPA or DCO.
bodyText, title, linkDescription, caption, ctaText, ctaType, linkUrl, linkDomainAd text, headline, link text, shown domain, button, where it leads and that site's domain.
cards, cardCountCarousel, catalogue and dynamic creative cards, each with its own title, body, link, button and image or video link.
imageUrls, videoUrls, videoPreviewImageUrlsCreative links.
sameCreativeAdCount, collationIdOther ads that share this creative.
containsAiMedia, containsSensitiveContent, adCategories, targetedCountriesMeta's flags: digitally created or altered media, sensitive content, special ad category, and the countries Meta lists as targeted or reached, where it shows them.
spend, impressions, currency, reachEstimate, bylinesRanges and "paid for by" lines, where Meta publishes them (mostly issue, election and political ads).
searchQuery, searchedPageId, searchUrl, searchResultCount, country, scrapedAtWhich search found the ad, its Ad Library link, how many ads Facebook counted for it, and collection time.

Empty fields are left out of a row. Pictures and videos are returned as links and never downloaded.

Sample results

Real rows from test runs on 11 November 2026 (US), with some fields left out, one card shown per ad and long links shortened to save space.

[
{"adArchiveId": "1339489931715040", "pageId": "71740214065", "pageName": "KURU Footwear", "pageLikeCount": 185497, "isActive": true, "startDate": "2026-07-06", "activeDays": 127, "platforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK"], "displayFormat": "DCO", "title": "Get Comfort in the Chaos", "linkDescription": "Over 3M Pairs Sold", "ctaText": "Shop now", "linkUrl": "https://www.kurufootwear.com/pages/outbreak", "linkDomain": "kurufootwear.com", "cardCount": 3, "cards": [{"title": "Get Comfort in the Chaos", "ctaText": "Shop Now", "linkUrl": "https://www.kurufootwear.com/pages/outbreak"}], "containsAiMedia": false, "searchQuery": "running shoes", "searchResultCount": 50001},
{"adArchiveId": "2087216342231765", "pageId": "380039845369159", "pageName": "SHEIN", "pageLikeCount": 39460082, "isActive": true, "startDate": "2026-07-17", "activeDays": 116, "platforms": ["FACEBOOK", "INSTAGRAM"], "displayFormat": "DPA", "title": "Vans Navy Blue Knu Skool Unisex Men's Athletic Casual Slip On Wide Shoes Sneakers Sports Outdoor Footwear", "ctaText": "Shop now", "linkUrl": "https://m.shein.com/us/ark/default?scene=1&...", "linkDomain": "m.shein.com", "cardCount": 6, "cards": [{"title": "Vans Navy Blue Knu Skool Unisex Men's Athletic Casual Slip On Wide Shoes Sneakers Sports Outdoor Footwear", "ctaText": "Shop Now", "linkUrl": "https://us.shein.com/ark/default?scene=1&...&goods_id=100096923&..."}], "searchQuery": "running shoes", "searchResultCount": 50001},
{"adArchiveId": "904160855878574", "pageId": "101442462022002", "pageName": "Shop FlavCity", "pageLikeCount": 28707, "isActive": true, "startDate": "2026-08-21", "activeDays": 81, "platforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK", "MESSENGER", "WHATSAPP", "THREADS"], "displayFormat": "VIDEO", "bodyText": "Tired of flipping over protein labels only to find junk? These packets have nothing to hide. Just 25g grass-fed protein, real fruit, and functional mushrooms. Done.", "title": "Flip the Label, Feel Good", "ctaText": "Shop now", "linkUrl": "https://www.shopflavcity.com/products/build-your-own-protein-smoothie-packets", "linkDomain": "shopflavcity.com", "sameCreativeAdCount": 3, "searchQuery": "meal kit", "searchResultCount": 4911},
{"adArchiveId": "1409199477510531", "pageId": "138553919372", "pageName": "eMeals", "pageLikeCount": 397589, "isActive": true, "startDate": "2026-01-19", "activeDays": 295, "platforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK", "MESSENGER", "THREADS"], "displayFormat": "VIDEO", "title": "Cancel Your Meal Kit & Try Free Easy Meal Plans", "ctaText": "Learn more", "linkUrl": "https://try.emeals.com/tired-of-meal-kits/", "linkDomain": "try.emeals.com", "sameCreativeAdCount": 3, "searchQuery": "meal kit", "searchResultCount": 4911}
]

Limits

  • First page only: about 30 ads per search. For a logged out visitor, Facebook shows the first page of results and refuses requests for more, so first_page gives about 30 ads per keyword, page or link.
  • Deep mode reads in steps, not every ad. Each step opens the search again, newest first, for ads shown on or before the oldest start date seen so far, and keeps about 30 ads. Facebook decides which 30, so some ads between steps are skipped. searchResultCount shows how many ads Facebook counts for the search. Deep stops at maxItems, maxItemsPerTarget, the start of your date range, after three steps in a row that bring almost nothing new, or after 20 minutes on one search.
  • Keyword search is Facebook's own match, so it can include ads that do not contain the exact words. Use keyword_exact_phrase for tighter matches.
  • If Facebook shows a check page, a CAPTCHA or a login wall, the run stops there and keeps the ads already saved. The actor never answers these and never switches to another address to get past one.
  • The first search of a run takes about 10 to 50 seconds while the browser starts; each further page takes a few seconds.
  • The "See ad details" panel (EU reach, age and gender split) is not read, and spend and impressions appear only where Meta publishes them.
  • Image and video links are signed by Facebook and stop working after a while. Save the files you need soon after the run.
  • Searches with no ads, repeats and run summaries are never charged.

FAQ

How much does it cost to scrape 10,000 Facebook ads? $10. With searchDepth set to deep, a few broad keywords or advertisers can reach that; with first_page, plan on about 30 ads per search.

Do I pay for compute or proxy on top? No. Platform usage is included in the $1 per 1,000 price.

How many ads do I get per search? About 30 with first_page. With deep, as many as the search holds up to your limits: in our tests one keyword gave 300 ads in 88 seconds, three keywords capped at 400 each gave 1,000 ads in 109 seconds, and an advertiser page that Facebook counted at 67 active ads gave 64 of them.

Can I filter by date? Yes. dateFrom and dateTo take YYYY-MM-DD or a span such as 30 days. Facebook filters by when an ad was shown, so a long running ad that started earlier is included.

Can I paste a link from the Ad Library? Yes. Put it in adLibraryUrls. Search links and an advertiser's page of ads work and keep the filters they carry; a single ad link (?id=) returns just that ad.

How do I find a page ID? Every row has pageId. You can also paste an Ad Library link that contains view_all_page_id into pageIds.

Why are spend and impressions empty for most ads? Meta publishes those only for ads about social issues, elections or politics. Set adType to political_and_issue_ads to get them.

Do I get reach by age, gender or country? No. That breakdown sits behind each ad's "See ad details" panel, which the actor does not open.

Can I watch competitors over time? Yes. Schedule a daily run with their page IDs and compare rows by adArchiveId. startDate, isActive and activeDays show what is new and what stopped.

Do I need a Facebook account? No. The Ad Library is public and the actor opens it as a logged out visitor.

Is it legal? The actor collects only public data that Meta shows to any visitor of the Ad Library. You are responsible for how you use it: follow Meta's terms and the data protection laws that apply to you, such as GDPR or CCPA.

Is this an official Facebook or Meta product? No. It is an independent tool and is not affiliated with or endorsed by Meta.

Feedback and support

Found a problem or want a field added? Open an issue on the Issues tab of this actor and it gets read. If the actor saved you time, an honest rating on the Reviews tab helps other people find it.

Do I need an Apify account? Yes. Actors run from an Apify account, and a free account is enough to start: it includes $5 of platform usage every month. You can sign up here. This is a referral link and it costs you nothing.

More from The One Dollar Store

Every actor here costs $1 per 1,000 results, platform usage included. See the whole store: https://apify.com/one_dollar_store

Social media

Changelog

  • 11 November 2026: deep mode for hundreds of ads per search; Ad Library links, date range, sort order and exact phrase inputs; housing, employment and credit categories and the images and memes media filter; new fields cards, linkDomain, containsAiMedia, adCategories, targetedCountries, pageIsDeleted, searchUrl and searchResultCount. Searches with no ads now end in seconds, and a check page or login wall ends the run. Existing inputs and fields are unchanged.
  • 26 October 2026: clearer description and headings, field details for AI tools. Price and output unchanged.
  • October 2026: first release.