Meta & Facebook Ad Library Scraper: Ads, Hooks, Landing Intel avatar

Meta & Facebook Ad Library Scraper: Ads, Hooks, Landing Intel

Pricing

from $10.40 / 1,000 advertiser summaries

Go to Apify Store
Meta & Facebook Ad Library Scraper: Ads, Hooks, Landing Intel

Meta & Facebook Ad Library Scraper: Ads, Hooks, Landing Intel

Facebook and Meta Ad Library scraper for competitor ad research: give page URLs, page IDs or keywords and get every ad, creative image and video URLs, hook analysis of the ad copy, landing domain profiles, an advertiser summary and competitor comparisons. Batch input, pay per result.

Pricing

from $10.40 / 1,000 advertiser summaries

Rating

0.0

(0)

Developer

daehwan kim

daehwan kim

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Paste competitor Facebook pages, page IDs or keywords. Get every ad they run, and what it all adds up to. One page turns into many rows: the advertiser, one row per ad (text, headline, CTA, landing URL, start date, days running, platforms), every image and video URL, a hook analysis of each ad text, a profile of every landing domain the ads point to, and a one-row advertiser summary. Enter two or more competitors and switch on comparisons to get one row per pair, side by side.

This Actor is an independent, unofficial tool. It is not affiliated with, endorsed by, or sponsored by Meta Platforms, Facebook, Instagram, rdap.org or any advertiser it reads. It reads the public, logged-out Meta Ad Library the same way a browser does: no login, no cookies from any account, no captcha solving, no account pools. Creative images and videos are linked, never downloaded or re-hosted. You are responsible for using the output for a lawful purpose, for complying with Meta's terms of service, and for respecting the rights in the advertisers' pages and creatives. Every result row carries this notice in its responsibility field.

Who this is for

Performance marketers and media buyers researching competitor ads, agencies building creative swipe files and pitch decks, e-commerce brands watching who runs what and for how long, and copywriters studying which hooks and offers keep running.

What one run returns

rowTypeOne row perKey fields
advertiseradvertiser pagepageId, pageName, pageCategories, pageLikeCount, activeAdCount (all matching ads in the library), adsInResults, adLibraryUrl
adadadArchiveId, startDate, endDate, runDays, isActive, publisherPlatforms, displayFormat, adText, headline, linkDescription, ctaText, ctaType, landingUrl, landingDomain, appStoreLink, isDynamicTemplate, cardCount, assetCount, adLibraryUrl
creative-assetimage or video URLassetType (image, video), assetUrl, previewImageUrl, videoSdUrl, fileFormat, cardIndex
hookunique ad text of an advertiserhookText (the opening line), hookTypes, bodyHookTypes, hookScore (0–100), hookWordCount
landing-domaindomain the ads link toregisteredAt, domainAgeDays, registrar, registrantCountry, mailProvider, hasSpf, hasDmarc, pageTitle, metaDescription, techHints, socialLinks, advertiserNames
advertiser-summaryadvertiseractiveAdCount, adsStartedLast30Days, averageRunDays, longestRunningAdId, longestRunningAdDays, topCtas, topHookTypes, averageHookScore, topLandingDomains, displayFormats, platformShare, uniqueAdTexts
competitor-comparisonpair of advertisers you enteredactiveAdCountDiff, moreActiveAdvertiser, averageRunDaysA/B, sharedCtas, ctaOverlap, sharedHookTypes, hookTypesOnlyA/B, sharedLandingDomains, platformsOnlyA/B, formatsOnlyA/B
noticemessagenoticeCode, message — never charged

Hook types. question, number, contrast, promise, discount, urgency, social-proof, detected by transparent rules on the opening line (hookTypes) and on the whole ad text (bodyHookTypes). The score adds 15 points per device in the opening line, 10 for an opener of 12 words or fewer and 5 for an emoji or a direct "you".

Long-running ads. runDays counts from the ad's start date to today (active ads) or to its end date. Ads that keep running for months are usually the ones that make money, so the summary names the longest-running one.

Pricing (pay per event)

EventCharged perUSD (FREE plan)BronzeSilverGold+
run-startedrun0.0050.0040.003250.0026
advertiser-resolvedadvertiser row0.020.0160.0130.0104
ad-scrapedad row0.010.0080.00650.0052
creative-asset-capturedimage or video URL row0.0050.0040.003250.0026
hook-classifiedhook row (unique ad text)0.020.0160.0130.0104
landing-domain-profiledlanding domain row0.010.0080.00650.0052
advertiser-summaryadvertiser summary row0.020.0160.0130.0104
competitor-comparedcomparison row (opt-in)0.030.0240.01950.0156

What is charged and what is not.

  • A row written to the dataset is charged once under its event. The same ad, asset, ad text, landing domain or advertiser is never charged twice in one run, even when two entries lead to it.
  • Hook rows are per unique ad text of an advertiser: 40 ads that share one text give one hook row.
  • A page with no ads matching your filters still gets its advertiser row (the lookup was done and the page is named), followed by a free no-ads-active notice.
  • For a search term, every advertiser in the results gets an advertiser row; the advertiser-summary row is added only for advertisers with 2 or more ads in the results. Pages you enter directly always get a summary.
  • Landing domains where no source answered produce no row and no charge. Up to 60 domains per run.
  • Notice rows (advertiser-not-found, no-ads-active, region-blocked, partial-results, spending-limit, invalid-input) are messages, never charged.
  • When your maximum charge per run is reached the run stops paid work and ends with a notice row.

Example (measured 2026-09-19): Nike's page with maxAdsPerPage 50 returned 50 ads, 25 unique ad texts, 286 creative URLs (most ads are catalog carousels with up to 10 product cards each) and 8 landing domains: start $0.005 + advertiser $0.02 + ads $0.50 + assets $1.43 + hooks $0.50 + domains $0.08 + summary $0.02 = about $2.56. With creative assets switched off the same run costs about $1.13. Lower maxAdsPerPage to cap the ad rows.

Input

{
"pageUrls": [
"https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=ALL&view_all_page_id=15087023444&search_type=page&media_type=all",
"https://www.facebook.com/NordstromRack/",
"running shoes"
],
"countries": ["ALL"],
"adStatus": "active",
"maxAdsPerPage": 50,
"captureCreativeAssets": true,
"classifyHooks": true,
"profileLandingDomains": true,
"compareAdvertisers": false
}
  • pageUrls — array, up to 50 entries. Each one can be an Ad Library URL (a page view or a search; its own country and status are kept), a Facebook page URL, a numeric page ID, or a search term.
  • countries — delivery countries (US, GB, DE…) or ALL.
  • adStatusactive, inactive or all.
  • maxAdsPerPage — ad rows per entry, 1–1000.
  • compareAdvertisers — off by default; with two or more pages entered, adds one comparison row per pair.
  • proxyConfiguration — fallback only: when the Ad Library refuses or rate-limits the run's own network, that search is redone once through this proxy (residential by default).

Output example

{ "rowType": "advertiser", "pageId": "89516513179", "pageName": "Nordstrom Rack", "pageCategories": ["Clothing (Brand)"], "pageLikeCount": 2518001, "activeAdCount": 147, "adsInResults": 50 }
{ "rowType": "ad", "adArchiveId": "925321173274919", "pageName": "Nordstrom Rack", "startDate": "2026-08-03", "runDays": 47, "displayFormat": "VIDEO", "adText": "Buy online and pick up in store for free! Get up to 70% off Nike, Vince, Madewell, adidas and more.", "ctaText": "Learn more", "landingDomain": "stores.nordstromrack.com", "publisherPlatforms": ["FACEBOOK", "INSTAGRAM", "MESSENGER"] }
{ "rowType": "hook", "adArchiveId": "925321173274919", "hookText": "Buy online and pick up in store for free!", "hookTypes": ["discount"], "bodyHookTypes": ["number", "discount"], "hookScore": 25 }
{ "rowType": "advertiser-summary", "pageName": "Nordstrom Rack", "activeAdCount": 147, "adsStartedLast30Days": 40, "averageRunDays": 23.5, "longestRunningAdDays": 50, "topHookTypes": [{"value": "number", "count": 33}, {"value": "discount", "count": 24}] }

Limits worth knowing

  • The Ad Library shows commercial ads without spend or reach figures (Meta publishes those only for political and issue ads and for ads delivered in the EU). When the library carries them, spend, impressionsText and targetedOrReachedCountries are filled in.
  • The library occasionally refuses or rate-limits some networks. The run then redoes the search once through your proxy; if that fails too it writes a free region-blocked notice (nothing delivered) or a free partial-results notice (the ads it did get are delivered) and moves on.
  • CTA text follows the language the library serves to the run's network; ctaType (SHOP_NOW, LEARN_MORE…) is the same everywhere, so summaries and comparisons count ctaType.

Runs on the Apify platform

Schedule it to watch competitors weekly, call it from the API, or plug it into a workflow. It needs no browser; 2 GB of memory is plenty.