Meta Ad Library Scraper Pro
Pricing
Pay per event
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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
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:
- Messenger
- Audience Network
Quick Start
1. Configure Your Search
{"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:
| Field | Description |
|---|---|
adArchiveId | Unique Meta ad identifier |
pageName | Advertiser name |
pageId | Advertiser's Facebook Page ID |
pageUrl | Link to advertiser's Page |
pageLikeCount | Page follower count |
pageCategory | Business category |
isActive | Whether ad is currently running |
startDate | When ad started running |
endDate | When ad stopped (if inactive) |
runDurationDays | How long the ad has been running |
platforms | Where ad runs (Facebook, Instagram, etc.) |
adCopy | Main ad text |
headline | Ad headline |
ctaType | Call-to-action type (LEARN_MORE, SHOP_NOW, etc.) |
ctaText | CTA button text |
landingUrl | Destination URL |
imageUrls | Array of image URLs |
videoUrls | Array of video URLs |
cards | Carousel card data (for multi-image ads) |
sentimentScore | NLP sentiment score (-5 to +5) |
sentimentLabel | positive / negative / neutral |
impressionsText | Impression range (EU transparency) |
categories | Ad categories (Housing, Political, etc.) |
scrapedAt | Timestamp 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
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQuery | string | required | Keywords to search (e.g., "running shoes", "real estate NYC") |
country | string | DE | ISO country code (US, DE, GB, FR, etc.) |
activeStatus | enum | active | Filter: active, inactive, or all |
adType | enum | all | Filter: all, political_and_issue_ads, housing, employment, credit |
mediaType | enum | all | Filter: all, image, video, meme |
maxAds | number | 100 | Maximum ads to collect (1-10,000) |
analyzeSentiment | boolean | true | Enable AFINN-165 sentiment analysis |
trackChanges | boolean | true | Track changes across scheduled runs |
useProxies | boolean | true | Use residential proxies (recommended) |
proxyGroups | array | ["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
- Go to Meta Ad Library Scraper
- Fill in the input form
- Click Start
- 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:
- Go to Schedules in Apify Console
- Create new schedule (daily, weekly, etc.)
- Enable Change Tracking to identify new/modified ads
- 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
- URL Construction: Builds Ad Library URL with your search parameters
- Browser Launch: Opens Chrome with anti-detection settings
- GraphQL Interception: Captures API responses as you scroll
- Data Transformation: Normalizes raw GraphQL to clean output format
- Sentiment Analysis: Runs AFINN-165 on ad copy (if enabled)
- State Management: Tracks seen ads for change detection
- 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)
| Ads | Cost |
|---|---|
| 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
- Add Apify integration
- Trigger: "New Dataset Item"
- 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
Is this legal?
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.
Related Scrapers
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?
- Open an issue in the Apify Console on this actor's page
- Check the Apify Documentation for platform help
Legal Disclaimer
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.