Facebook Ad Library Scraper Monitoring Mode Meta Instagram Ads
Pricing
$0.50 / 1,000 ad scrapeds
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
Maintained by CommunityActor stats
0
Bookmarked
7
Total users
4
Monthly active users
a day ago
Last modified
Categories
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, all creatives (images, videos, carousel cards), CTA, destination links, run dates, platforms, and advertiser data, with 50+ structured fields per ad. No login / no cookies.
Why this ad-library scraper?
Meta runs one ad library for its whole network, so a single search covers ads across Facebook, Instagram, Messenger, Threads, Audience Network, and WhatsApp.
| Typical scrapers | This actor |
|---|---|
| Return page name + ad text + one image | Captures all images, all videos (HD/SD/preview URLs), and carousel cards plus extra creatives |
| One way in (keyword only) | Search by keyword, Facebook Page URL/ID, or a full Ad Library URL |
| Re-download every ad each run | Monitoring mode returns only NEW ads since your last run |
| Skip transparency data | Surfaces spend, impressions, reach & demographics for political/issue, housing, employment & credit ads |
| Need a login or cookies | Reads only the public Ad Library — no account, password, or cookies |
| Dump a raw JSON blob | Flattens every creative, link & advertiser detail into clean columns |
Use cases
- Competitor ad research — pull every ad a brand is running and study their angles, offers, and creative across Facebook and Instagram.
- Ad inspiration & swipe files — collect winning copy and creatives across a whole niche by keyword.
- Market & trend monitoring — track which advertisers are live in a country and what they're pushing, and get only new ads via Monitoring mode.
- Political / issue ad transparency — capture the extra disclosures Meta provides for transparency categories (audience estimates, spend, and reach where available).
- Creative & format analysis — compare display formats, CTAs, platforms, and media types across advertisers at scale.
How to use
- Sign up for Apify — the free plan is enough to try this actor.
- Open the Facebook Ad Library Scraper, fill in the inputs you need, and click Start.
- Watch results stream into the dataset table as each record is parsed.
- Export as JSON, CSV, Excel, XML, or RSS — or pull results programmatically via the Apify API.
Input
Provide any combination of search terms, Facebook Page URLs/IDs, or full Ad Library URLs, then refine with filters.
{"searchTerms": ["nike"],"pageUrls": [],"startUrls": [],"country": "US","adActiveStatus": "ALL","adType": "ALL","mediaType": "ALL","publisherPlatforms": [],"languages": [],"maxResults": 100,"monitoringMode": false,"pageDelaySeconds": 3,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
searchTerms— keywords to search the Ad Library for (e.g.nike,electric scooter). Each term runs as its own search.pageUrls— Facebook Page URLs (e.g.https://www.facebook.com/nike) or numeric page IDs. A numeric ID orprofile.php?id=…gives exact page targeting; a vanity slug falls back to an advertiser-name search.startUrls— full Meta Ad Library URLs (https://www.facebook.com/ads/library/?...). Every filter encoded in the URL is preserved — the best way to target an exact page or a complex filter combination.country— country whose Ad Library to query (US,GB,DE, … orALLfor every country at once). DefaultUS.adActiveStatus—ALL,ACTIVE, orINACTIVE. DefaultALL.adType—ALL, or a transparency category (POLITICAL_AND_ISSUE_ADS,HOUSING_ADS,EMPLOYMENT_ADS,CREDIT_ADS) that surfaces extra disclosures. DefaultALL.mediaType— restrict by creative format:ALL,IMAGE,VIDEO,MEME, orNONE(text only). DefaultALL.publisherPlatforms— only include ads that ran on chosen Meta surfaces (FACEBOOK,INSTAGRAM,MESSENGER,AUDIENCE_NETWORK,THREADS,WHATSAPP). Leave empty for all.languages— only include ads whose creative is in one of these languages (en,es,fr, …). Leave empty for any.dateFrom/dateTo— only include ads that first ran on or after / on or before these dates.maxResults— cap on total ads collected across every source.0= unlimited. In monitoring mode, this caps how many ads are scanned per run (cost control), not how many are output. Default100.monitoringMode/monitorId— see Monitoring.pageDelaySeconds— seconds to wait between each pagination request (default3; raise to8–10if a run stops early on a rate-limit).proxyConfiguration— required. Leave on Residential (see Tips).
Output
Each ad becomes one clean row. Creatives, links, and advertiser details are flattened into columns rather than dumped as a raw blob.
{"adArchiveId": "1234567890123456","adLibraryUrl": "https://www.facebook.com/ads/library/?id=1234567890123456","pageName": "Nike","pageId": "15087023444","pageLikeCount": 39000000,"pageVerified": true,"isActive": true,"status": "ACTIVE","startDate": "2026-03-17T00:00:00.000Z","endDate": null,"publisherPlatforms": ["FACEBOOK", "INSTAGRAM", "MESSENGER"],"displayFormat": "DPA","title": "Just Do It","bodyText": "Celebra tu cumpleaños con Nike y obtén acceso a productos exclusivos.","ctaText": "Shop Now","ctaType": "SHOP_NOW","linkUrl": "https://www.nike.com/","images": [],"videos": [],"cards": [{ "title": "Air Max", "linkUrl": "https://…", "imageUrl": "https://…" }],"countryIsoCode": "US","spend": null,"impressions": null,"isPoliticalOrIssueAd": false,"sourceInputType": "search","sourceQuery": "nike","scrapedAt": "2026-06-14T10:00:00.000Z"}
Notes:
- Most fields are
nullable— fields likeendDate,byline,caption,disclaimerLabel, andbrandedContentPartnerare populated only when the ad has them. spend,impressions,estimatedAudienceSize,regionsReached, anddemographicsare populated only for transparency categories (political/issue, housing, employment, credit). Meta doesn't publish them for ordinary commercial ads, so they'renullthere (expected, not an error).- For DPA/carousel ads the primary
imagesarray is often empty and the creative lives incards. - Business/advertiser data only — never personal contact details.
- If a search returns nothing, the run still succeeds and the status message explains the likely reason.
Monitoring — get only new ads
Turn on monitoringMode and the run remembers every ad it has returned before and outputs only ads it has not seen in a previous run — perfect for scheduled runs answering "what new ads has this advertiser launched since I last checked?"
- The first run returns everything (your baseline). Every run after returns only the new ads.
- In this mode,
maxResultscaps how many ads are scanned per run (cost control), not how many are output. You only pay for genuinely new ads. - Set
monitorId(e.g.nike-us) to tie runs together into one monitor: runs sharing a Monitor ID share the same memory of seen ads. Leave it blank to auto-derive one from your input — but set it explicitly if you want the monitor to survive small input changes, or to run several independent monitors. - Pair it with Apify Schedules for hands-off competitor alerts.
Automate & schedule
Run this actor on autopilot and pull results into your own stack:
- Apify API — start runs, fetch datasets, and manage schedules over REST.
- apify-client for JavaScript and apify-client for Python — official SDKs.
- Schedules — run it on a cron to keep your data fresh.
- Webhooks — trigger downstream actions the moment a run finishes.
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'MY_APIFY_TOKEN' });const run = await client.actor('scrapesage/facebook-ad-library-scraper').call({searchTerms: ['nike'],country: 'US',adActiveStatus: 'ACTIVE',maxResults: 100,proxyConfiguration: { useApifyProxy: true, apifyProxyGroups: ['RESIDENTIAL'] },});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(`Got ${items.length} records`);
Integrate with any app
Connect the dataset to 5,000+ apps — no code required:
- Make — multi-step automation scenarios.
- Zapier — push new records straight into your CRM or sheet.
- Slack — get notified when a run finds something new.
- Google Drive / Sheets — auto-export every run to a spreadsheet.
- Airbyte — pipe results into your data warehouse.
- GitHub — trigger runs from commits or releases.
Use with AI assistants (MCP)
The output is clean, LLM-ready JSON. Call this actor from Claude, ChatGPT, or any agent framework through the Apify MCP server — ask your assistant to "find every active Facebook and Instagram ad Nike is running in the US and summarize their offers and CTAs" and let it run this scraper for you.
Agent-ready: autonomous payments (x402 & Skyfire)
This actor is agent-ready — AI agents can discover it, run it, and pay for it autonomously, with no Apify account and no human in the loop. It uses pay-per-event pricing and limited permissions, so it qualifies for Apify's agentic-payment standards:
- x402 — an open, HTTP-native payment protocol. Agents pay per run in USDC on the Base network directly through the Apify MCP server — no account, no API key.
- Skyfire — agent-to-service payments for fully autonomous AI-agent workflows.
Building an AI agent, MCP tool, or autonomous data pipeline? This scraper is ready to plug in and pay as it goes.
More scrapers from scrapesage
Need data from elsewhere? Try these scrapesage actors:
- Google Ads Transparency Scraper — who's advertising what on Google.
- LinkedIn Jobs Scraper — filter-based LinkedIn job postings, no login.
- Multi-ATS Job Scraper — jobs from Greenhouse, Lever, Ashby, Workday & more.
- Eventbrite Scraper — events plus organizer leads with contacts.
- Telegram Scraper — channels, messages, media & search.
- Airbnb Scraper — short-stay listings, prices, availability & market monitor.
- Bark Scraper — Bark.com provider profiles & leads.
Tips
- Keep the proxy on Residential. Meta blocks datacenter IPs at the network level, so the scraper must reach the Ad Library through Apify Residential proxy. It rotates to a fresh residential IP automatically if Meta rate-limits one.
- For exact page targeting, paste the Ad Library "view all ads" URL into
startUrls, or use a numeric page ID /profile.php?id=…inpageUrls. A vanity slug falls back to an advertiser-name search. - If a large run stops early with a rate-limit message, raise
pageDelaySecondsto8–10. Higher is slower but more reliable for big pulls. - Control your spend with
maxResults— you're billed per ad returned, so it caps cost. Use0only when you truly want everything. - Set a
monitorIdwhen using monitoring mode so your monitor survives small input tweaks and you can run several independent monitors side by side.
FAQ
- Do I need to log in? No. It reads only the public Ad Library — no Facebook account, password, or cookies.
- Do I need a proxy? Yes — Residential proxy is required and on by default. Meta blocks datacenter IPs, so datacenter proxies and no-proxy runs will be blocked.
- Is scraping the Ad Library legal? The Ad Library is public and this tool collects business/advertiser data only — never personal contact details. 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.
- Why are
spendandimpressionsempty? Meta only publishes those for transparency categories (political/issue, housing, employment, credit). For ordinary commercial ads they'renullby design. - What happens if a search returns no ads? The run still succeeds and the status message explains the likely reason (wrong country, active-only with no live ads, different ad language, etc.).
- How can I export the data? As JSON, CSV, Excel, XML, or RSS from the dataset, or programmatically via the Apify API.
Need help?
Open an issue on the actor's Issues tab, or visit the Apify help center. Feature requests are welcome — this actor is actively maintained.