Facebook Ad Library Scraper Monitoring Mode Meta Instagram Ads avatar

Facebook Ad Library Scraper Monitoring Mode Meta Instagram Ads

Pricing

$0.50 / 1,000 ad scrapeds

Go to Apify Store
Facebook Ad Library Scraper Monitoring Mode Meta Instagram Ads

Facebook Ad Library Scraper Monitoring Mode Meta Instagram Ads

Scrape Facebook, Instagram & Meta ads from the public Meta Ad Library by keyword, Facebook Page, or URL. Get ad copy, creatives, videos, CTA, links, dates & advertiser data — 50+ fields per ad, no login. Monitoring mode returns only NEW ads since your last run. Export JSON, CSV or Excel.

Pricing

$0.50 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

Scrape Sage

Scrape Sage

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Facebook Ad Library Scraper — Meta & Instagram Ads, No Login

Scrape Facebook, Instagram & Meta ads from the public Meta Ad Library by keyword, Facebook Page, or URL — ad copy, creatives, CTA, links, dates & advertiser data. No login or cookies.

Meta (formerly Facebook) runs one ad library for its whole network, so a single search covers ads across Facebook, Instagram, Messenger, Threads, Audience Network and WhatsApp. Type a brand or keyword, paste a Facebook Page, or drop a full Ad Library URL, and get back clean, structured rows for every ad: the creative text, all images and videos, the call-to-action, the destination link, run dates, the platforms it ran on, and the advertiser behind it.

Unique feature — Monitoring mode: run it on a schedule and get back only the new ads since your last run. Track exactly what a competitor newly launches, without wading through ads you've already seen. Jump to Monitoring mode →

Not affiliated with Meta. This is an independent tool that reads Meta's public Ad Library (the same data anyone can browse at facebook.com/ads/library). It collects business/advertiser information only — never personal contact details.

What you can do with it

  • Competitor ad research — pull every ad a brand is running and see their angles, offers, and creative.
  • Ad inspiration / swipe files — collect winning creatives and copy across a whole niche by keyword.
  • Market & trend monitoring — track which advertisers are live in a country and what they're pushing, and get alerted to new ads via Monitoring mode.
  • Political / issue ad transparency — for those categories, capture the extra disclosures Meta provides (audience estimates, spend and reach where available).

⭐ Monitoring mode — only new ads since last run

Most scrapers re-download the same ads every run. Turn on Monitoring mode and this one remembers every ad it has returned before and gives you back only the ads it hasn't seen — perfect for a scheduled run that answers "what did this advertiser launch since yesterday?"

  • The first run returns everything (your baseline).
  • Every run after returns only the new ads — so a quiet day costs almost nothing and a launch day surfaces exactly the new creatives.
  • Set a Monitor ID (e.g. nike-us) to keep one monitor stable even if you tweak filters, and to run several independent monitors side by side.

Pair it with Apify's scheduler for hands-off competitor alerts.

Output

Each ad becomes one clean row. 50+ fields per ad — we flatten every creative, link, and advertiser detail Meta exposes into clean columns, rather than dumping a raw blob.

Example record (abbreviated):

{
"adArchiveId": "1234567890123456",
"adLibraryUrl": "https://www.facebook.com/ads/library/?id=1234567890123456",
"pageName": "Nike",
"pageId": "15087023444",
"status": "ACTIVE",
"startDate": "2026-03-17T00:00:00.000Z",
"publisherPlatforms": ["FACEBOOK", "INSTAGRAM", "MESSENGER"],
"displayFormat": "DPA",
"bodyText": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos.",
"ctaText": "Install now",
"linkUrl": "https://www.nike.com/",
"images": [],
"videos": [],
"cards": [{ "title": "Air Max", "linkUrl": "https://…", "imageUrl": "https://…" }]
}

Full field list: recordType, id, sourceName, sourceUrl, scrapedAt, adArchiveId, adId, adLibraryUrl, adSnapshotUrl, pageId, pageName, pageProfileUri, pageProfilePictureUrl, pageLikeCount, pageCategories, pageVerified, pageEntityType, isActive, status, startDate, endDate, totalActiveTimeSeconds, collationCount, publisherPlatforms, displayFormat, currency, categories, countryIsoCode, title, bodyText, byline, caption, linkUrl, linkDescription, ctaText, ctaType, disclaimerLabel, brandedContentPartner, images, videos, cards, extraTexts, extraLinks, extraImages, extraVideos, containsSensitiveContent, containsDigitalCreatedMedia, spend, impressions, reachEstimate, estimatedAudienceSize, regionsReached, demographics, targetedOrReachedCountries, isPoliticalOrIssueAd, sourceInputType, sourceQuery.

spend, impressions, estimatedAudienceSize, regionsReached, and demographics are populated only for transparency categories (political/issue, housing, employment, credit) — Meta doesn't publish them for ordinary commercial ads, so they're null there (expected, not an error). Results export as JSON, CSV, or Excel, or pull them via the Apify API.

How to use

  1. Click Try for free and open the actor.
  2. Choose what to scrape — any combination:
    • Search terms: a keyword like nike or electric scooter (each runs as its own search).
    • Facebook Page URLs or IDs: https://www.facebook.com/nike or a numeric page ID — returns that advertiser's ads.
    • Ad Library URLs: paste a full facebook.com/ads/library/?… URL to keep any filter combination exactly.
  3. (Optional) Set filters: country, active/inactive, ad category, media type, platforms, language, date range.
  4. (Optional) Turn on Monitoring mode and set a Monitor ID to get only new ads on future runs.
  5. Leave Proxy on Residential (required — see FAQ).
  6. Set Max ads to cap the run.
  7. Click Start. When it finishes, Export the dataset (JSON/CSV/Excel) or fetch it via the API.

Input

FieldWhat it does
Search termsKeywords to search, e.g. nike, electric scooter. Each runs as its own search.
Facebook Page URLs or IDshttps://www.facebook.com/nike or a numeric page ID — returns that advertiser's ads.
Ad Library URLsPaste a full facebook.com/ads/library/?… URL to preserve any filter combo exactly.
CountryOne country, or All countries.
Ad statusActive, inactive, or both.
Ad categoryAll, or a transparency category (political/issue, housing, employment, credit).
Media typeAll / image / video / meme / text.
PlatformsFacebook, Instagram, Messenger, Audience Network, Threads, WhatsApp.
LanguagesRestrict to ad creative in chosen languages.
Date rangeAds that first ran on/after and on/before given dates.
Max adsTotal cap across all sources (0 = unlimited). In monitoring mode, caps how many ads are scanned per run.
Monitoring modeReturn only ads not seen in a previous run. First run baselines; later runs return only new ads.
Monitor IDOptional name tying runs into one monitor (e.g. nike-us). Runs sharing it share the memory of seen ads.
ProxyResidential, on by default — required (Meta blocks datacenter IPs).

Minimal input example:

{
"searchTerms": ["nike"],
"country": "US",
"adActiveStatus": "ACTIVE",
"maxResults": 100,
"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }
}

How we compare

Most Ad Library scrapers return the easy subset (page name + ad text + one image). This actor also captures all images, all videos with HD/SD/preview URLs, carousel cards, extra creatives (additional images/videos/links/text), CTA text + type, advertiser byline, disclaimer label, branded-content partner, page like-count, verified status, page categories, ad-category tags, the ad's country, and the transparency fields for political ads — and it's the one with Monitoring mode for new-ad alerts.

FAQ

  • Do I need a proxy? Yes — Residential proxy is required and on by default. Meta blocks datacenter IPs at the network level, so the scraper reaches the Ad Library through Apify Residential proxy and rotates to a fresh residential IP automatically if Meta rate-limits one. Leave Proxy set to Residential; datacenter proxies will be blocked.
  • Do I need to log in? No. It reads only the public Ad Library — no Facebook account, password, or cookies.
  • Exact page targeting: a numeric page ID or profile.php?id=… targets a page exactly. A vanity slug (facebook.com/nike) falls back to an advertiser-name search — for exactness, paste the Ad Library "view all ads" URL into Ad Library URLs.
  • How does Monitoring mode know what's new? It remembers the ad IDs it has returned before (per Monitor ID) and outputs only IDs it hasn't seen. Because the Ad Library is sorted by reach, a monitor catches new ads within the set it scans — for a single advertiser that's effectively complete; for a broad keyword, raise Max ads so a brand-new low-reach ad isn't missed.
  • Billing: you're charged per ad returned to the dataset, so Max ads controls your spend (and in Monitoring mode you only pay for genuinely new ads). 0 means unlimited.
  • Empty results: if a search returns nothing, the run still succeeds and the status message explains the likely reason (wrong country, active-only with no live ads, different ad language, etc.).
  • Is scraping the Ad Library legal? The Ad Library is public and this tool collects business/advertiser data only — never personal contact details. Note your results can still contain personal data, which is protected by the GDPR in the EU and similar laws elsewhere; scrape personal data only with a legitimate reason, and consult a lawyer if unsure.

Keywords: facebook ad library scraper, meta ad library scraper, meta ads scraper, facebook ads scraper, instagram ads scraper, scrape facebook ads, meta ad library api, facebook ads library, competitor ad research, ad spy tool.