Meta Ad Library Scraper Pro avatar
Meta Ad Library Scraper Pro

Pricing

Pay per event

Go to Apify Store
Meta Ad Library Scraper Pro

Meta Ad Library Scraper Pro

Extract competitor ads from Meta's Ad Library (Facebook, Instagram, Messenger, Audience Network). Get ad copy, creatives, targeting data, sentiment analysis, and track changes over time.

Pricing

Pay per event

Rating

0.0

(0)

Developer

WebDataLabs

WebDataLabs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Meta Ad Library Scraper - Facebook & Instagram Ads, Competitor Intelligence

Extract competitor ads from Meta's Ad Library (Facebook, Instagram, Messenger, Audience Network). Get ad copy, creatives, targeting data, sentiment analysis, and track changes over time.

Pricing: $0.005 per ad | No coding required | Export to CSV, JSON, Excel

What This Scraper Does

The Meta Ad Library Scraper extracts publicly available advertising data from Meta's transparency database. Unlike unreliable DOM scrapers, this tool uses GraphQL interception to capture the actual API responses - the same data Meta displays in their interface.

Platforms covered:

  • Facebook
  • Instagram
  • Messenger
  • Audience Network

Quick Start

{
"searchQuery": "running shoes",
"country": "US",
"activeStatus": "active",
"adType": "all",
"mediaType": "all",
"maxAds": 100
}

2. Run the Scraper

Click Start in Apify Console, or use the API:

apify call webdatalabs/meta-ad-library-scraper -i '{
"searchQuery": "running shoes",
"country": "US",
"maxAds": 50
}'

3. Export Your Data

Download results in CSV, JSON, or Excel format. Integrate with n8n, Zapier, Make, or any automation tool.


What You Get

Each ad record includes:

FieldDescription
adArchiveIdUnique Meta ad identifier
pageNameAdvertiser name
pageIdAdvertiser's Facebook Page ID
pageUrlLink to advertiser's Page
pageLikeCountPage follower count
pageCategoryBusiness category
isActiveWhether ad is currently running
startDateWhen ad started running
endDateWhen ad stopped (if inactive)
runDurationDaysHow long the ad has been running
platformsWhere ad runs (Facebook, Instagram, etc.)
adCopyMain ad text
headlineAd headline
ctaTypeCall-to-action type (LEARN_MORE, SHOP_NOW, etc.)
ctaTextCTA button text
landingUrlDestination URL
imageUrlsArray of image URLs
videoUrlsArray of video URLs
cardsCarousel card data (for multi-image ads)
sentimentScoreNLP sentiment score (-5 to +5)
sentimentLabelpositive / negative / neutral
impressionsTextImpression range (EU transparency)
categoriesAd categories (Housing, Political, etc.)
scrapedAtTimestamp of data collection

Example Output

{
"adArchiveId": "1908832149745499",
"pageName": "Nike",
"pageId": "15087023444",
"pageUrl": "https://www.facebook.com/15087023444",
"pageLikeCount": 36254891,
"pageCategory": "Clothing Brand",
"isActive": true,
"startDate": "2024-01-15T00:00:00.000Z",
"endDate": null,
"runDurationDays": 45,
"platforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK"],
"platformCount": 3,
"adCopy": "Just Do It. New Pegasus 41 - engineered for your fastest runs yet.",
"headline": "Nike Pegasus 41",
"ctaType": "SHOP_NOW",
"ctaText": "Shop Now",
"landingUrl": "https://www.nike.com/running/pegasus",
"imageUrls": [
"https://scontent.xx.fbcdn.net/v/..."
],
"videoUrls": [],
"cards": [],
"sentimentScore": 2.5,
"sentimentComparative": 0.25,
"sentimentLabel": "positive",
"impressionsText": null,
"categories": [],
"firstSeenAt": "2024-01-20T10:30:00.000Z",
"lastSeenAt": "2024-03-01T14:22:00.000Z",
"changeDetected": false,
"scrapedAt": "2024-03-01T14:22:00.000Z",
"searchQuery": "running shoes",
"country": "US"
}

Use Cases

1. Competitive Intelligence

Monitor what ads your competitors are running:

  • Track their messaging and positioning
  • See which platforms they target
  • Analyze their creative strategies
  • Identify new product launches

2. Ad Creative Inspiration

Research successful ad formats in your industry:

  • Find high-performing ad copy patterns
  • Discover trending visual styles
  • Analyze CTA strategies
  • Study carousel vs. single image performance

3. Market Research

Understand advertising trends in any market:

  • Compare ad activity across countries
  • Track seasonal advertising patterns
  • Analyze industry spending trends
  • Monitor political/issue ads in specific regions

4. Brand Protection

Monitor unauthorized use of your brand:

  • Find ads mentioning your brand
  • Detect counterfeit product ads
  • Track competitor brand comparisons
  • Identify affiliate compliance issues

5. Agency Reporting

Create comprehensive competitor reports:

  • Scheduled daily/weekly data collection
  • Historical trend analysis
  • Sentiment analysis on competitor messaging
  • Export-ready data for client presentations

Input Parameters

ParameterTypeDefaultDescription
searchQuerystringrequiredKeywords to search (e.g., "running shoes", "real estate NYC")
countrystringDEISO country code (US, DE, GB, FR, etc.)
activeStatusenumactiveFilter: active, inactive, or all
adTypeenumallFilter: all, political_and_issue_ads, housing, employment, credit
mediaTypeenumallFilter: all, image, video, meme
maxAdsnumber100Maximum ads to collect (1-10,000)
analyzeSentimentbooleantrueEnable AFINN-165 sentiment analysis
trackChangesbooleantrueTrack changes across scheduled runs
useProxiesbooleantrueUse residential proxies (recommended)
proxyGroupsarray["RESIDENTIAL"]Apify proxy groups to use

Country Codes

Common country codes: US (United States), DE (Germany), GB (United Kingdom), FR (France), CA (Canada), AU (Australia), ES (Spain), IT (Italy), NL (Netherlands), BR (Brazil)

Full list of ISO 3166-1 alpha-2 codes


How to Use

Via Apify Console

  1. Go to Meta Ad Library Scraper
  2. Fill in the input form
  3. Click Start
  4. Download results when complete

Via API

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('webdatalabs/meta-ad-library-scraper').call({
searchQuery: 'fitness app',
country: 'US',
activeStatus: 'active',
maxAds: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Via CLI

apify call webdatalabs/meta-ad-library-scraper \
-i '{"searchQuery":"coffee shop","country":"GB","maxAds":50}'

Scheduled Runs

Set up recurring scrapes for continuous monitoring:

  1. Go to Schedules in Apify Console
  2. Create new schedule (daily, weekly, etc.)
  3. Enable Change Tracking to identify new/modified ads
  4. Connect webhook for real-time notifications

Features

GraphQL Interception

Unlike DOM scrapers that break when Facebook changes their UI, this scraper intercepts the actual GraphQL API responses. This provides:

  • Reliability: Captures the same data Facebook uses internally
  • Completeness: Gets all fields, not just visible ones
  • Speed: Direct data access without DOM parsing

Sentiment Analysis

Built-in AFINN-165 NLP analysis on ad copy:

  • sentimentScore: Raw score (-5 to +5 scale)
  • sentimentComparative: Normalized score (per word)
  • sentimentLabel: Simple classification (positive/negative/neutral)

Useful for understanding competitor messaging tone and tracking sentiment trends.

Change Tracking

When enabled, the scraper maintains state across runs:

  • Identifies new ads that weren't seen before
  • Detects changes to existing ads (copy, status, etc.)
  • Stores firstSeenAt and lastSeenAt timestamps

Perfect for scheduled monitoring and trend analysis.

Residential Proxy Support

Meta has strong anti-bot protection. This scraper:

  • Uses Apify's residential proxy pool by default
  • Rotates IPs to avoid detection
  • Runs in non-headless mode for maximum compatibility

Technical Details

How It Works

  1. URL Construction: Builds Ad Library URL with your search parameters
  2. Browser Launch: Opens Chrome with anti-detection settings
  3. GraphQL Interception: Captures API responses as you scroll
  4. Data Transformation: Normalizes raw GraphQL to clean output format
  5. Sentiment Analysis: Runs AFINN-165 on ad copy (if enabled)
  6. State Management: Tracks seen ads for change detection
  7. Dataset Storage: Saves each ad with pay-per-event billing

Rate Limits

  • Scroll-based pagination (no direct API calls)
  • Built-in delays between scrolls
  • Residential proxies avoid IP-based blocking

Limitations

  • Spend/Impressions: Only available for EU transparency ads (political, housing in some regions)
  • Historical data: Only current ads visible (Meta doesn't expose historical archive)
  • Rate limits: Large scrapes (5000+) may take longer due to scroll-based loading

Pricing

$0.005 per ad (pay-per-event billing)

AdsCost
100$0.50
500$2.50
1,000$5.00
5,000$25.00

Plus Apify platform costs (compute + residential proxy bandwidth).

Residential proxy usage: ~50-100 MB per 1,000 ads


Integrations

n8n

Use the Apify Trigger node to start scrapes and Apify Dataset node to retrieve results. Connect to Google Sheets, Slack, or any other n8n node.

Zapier

  1. Add Apify integration
  2. Trigger: "New Dataset Item"
  3. Connect to your destination (Sheets, Airtable, Slack, etc.)

Make (Integromat)

Use the Apify modules to:

  • Schedule recurring scrapes
  • Process new ads automatically
  • Push to CRM or database

Webhooks

Configure webhooks in Apify to receive notifications when:

  • Scrape completes
  • New ads detected (with change tracking)

FAQ

Yes. Meta Ad Library is a public transparency database. All data scraped is publicly accessible without login. This scraper accesses the same data any user can see by visiting ads.facebook.com.

Why do I need residential proxies?

Meta has aggressive anti-bot protection. Datacenter IPs are often blocked. Residential proxies mimic real users and have much higher success rates.

How often can I run this?

As often as needed. For competitive monitoring, daily or weekly schedules work well. Enable Change Tracking to only flag new/modified ads.

What if I hit rate limits?

The scraper automatically handles rate limiting through scroll delays and proxy rotation. Very large scrapes (10,000+ ads) may run slower but will complete.

Can I scrape without an Apify account?

No, this runs on the Apify platform. You need an account (free tier available) and API token for automation.


Looking for other data sources? Check out these scrapers on Apify Store:

  • Social Media: TikTok, Reddit, Discord scrapers
  • E-commerce: Shopify, Amazon, eBay scrapers
  • Business Data: Google Maps, LinkedIn scrapers

Browse all scrapers at apify.com/store


Support

Need help? Have questions?


This actor is provided for legitimate business purposes such as competitive analysis, market research, and brand monitoring using publicly available data from Meta's Ad Library transparency database.

Users are solely responsible for ensuring compliance with:

  • Applicable laws and regulations (GDPR, CCPA, etc.)
  • Meta's Terms of Service
  • Apify's Terms of Service

The developer disclaims liability for any misuse. By using this actor, users agree to indemnify the developer against any claims arising from their use of the scraped data.


Changelog

v1.0.0

  • Initial release
  • GraphQL interception for reliable data extraction
  • Sentiment analysis (AFINN-165)
  • Change tracking across runs
  • Carousel and video ad support
  • Residential proxy support

Keywords

Meta Ad Library Scraper, Facebook Ad Library API, Instagram Ads Scraper, Facebook Ads Data Extraction, Meta Advertising API, Competitor Ad Analysis, Facebook Ad Spy Tool, Social Media Ad Scraper, Ad Creative Research, Facebook Marketing Data, Meta Business Suite Scraper, Facebook Ad Transparency, Political Ads Scraper, Housing Ads Data, Ad Library Export CSV, Facebook Ad Monitoring, Competitor Intelligence Tool, Meta Ads Database, Social Media Marketing Research, Ad Copy Analysis


Built with Apify SDK and Playwright. Data accuracy depends on Meta Ad Library availability.