Scrape competitor ads from Meta's Ad Library
Meta Ad Library Scraper

Scrape competitor ads from Meta's Ad Library (Facebook, Instagram, Messenger, Threads, WhatsApp). Search by company name, Facebook Page URL, or keyword.
--- name: meta-ad-scraper description: Scrape competitor ads from Meta's Ad Library (Facebook, Instagram, Messenger, Threads, WhatsApp). Search by company name, Facebook Page URL, or keyword. Returns ad creatives, spend estimates, reach, impressions, and campaign details. Use for competitive ad research, messaging analysis, and creative inspiration. --- # Meta Ad Library Scraper Scrape ads from Meta's Ad Library using the Apify `apify/facebook-ads-scraper` actor. Covers Facebook, Instagram, Messenger, Threads, and WhatsApp. ## Quick Start Requires `APIFY_API_TOKEN` env var (or `--token` flag). Install dependency: `pip install requests`. ```bash # Search ads by company name python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ --company "Nike"
Overview
Scrape ads from Meta's Ad Library using the Apify apify/facebook-ads-scraper actor. Covers Facebook, Instagram, Messenger, Threads, and WhatsApp.
Manual install (npx, ZIP)
npx skills add gooseworks-ai/goose-skills --skill meta-ad-scraper -g -a claude-codemkdir -p ~/.claude/skills && curl -sL https://codeload.github.com/gooseworks-ai/goose-skills/tar.gz/615c685f34f8 \
| tar -xz -C ~/.claude/skills --strip-components=4 goose-skills-615c685f34f8/skills/ads/capabilities/meta-ad-scraperNew-Item -ItemType Directory -Force "$HOME\.claude\skills" | Out-Null; Invoke-WebRequest "https://m.agentalley.io/zip/737669060d04a0a2b9f0/meta-ad-scraper.zip" -OutFile "$env:TEMP\meta-ad-scraper.zip"; Expand-Archive "$env:TEMP\meta-ad-scraper.zip" -DestinationPath "$HOME\.claude\skills" -ForceConnects with Agent Alley MCP · agentalley.io/mcp
Files included
SKILL.md4.7 KBskill.meta.json248 Bscripts/1 file · 8.1 KB
Read the files here
gooseworks-ai/
Shared references1SKILL.md reads these from elsewhere in the repo. Not in the ZIP.
Get them on GitHub ↗Show the full text137 lines
Meta Ad Library Scraper
Scrape ads from Meta's Ad Library using the Apify apify/facebook-ads-scraper actor. Covers Facebook, Instagram, Messenger, Threads, and WhatsApp.
Quick Start
Requires APIFY_API_TOKEN env var (or --token flag). Install dependency: pip install requests.
# Search ads by company name
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--company "Nike"
# Search with country filter
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--company "Shopify" --country US
# Search by keyword (broader than company name)
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--company "project management software"
# Limit results
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--company "HubSpot" --max-ads 20
# Search by Facebook Page URL directly
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--page-url "https://www.facebook.com/nike"
# Only active ads (default), or all ads
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--company "Salesforce" --ad-status all
# Human-readable summary
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--company "Stripe" --output summary
How It Works
- Takes a company name, keyword, or Facebook Page URL
- Constructs a Meta Ad Library URL with the search query and filters
- Calls the Apify
apify/facebook-ads-scraperactor via REST API - Polls until the run completes, then fetches the dataset
- Parses and outputs ad data as JSON or human-readable summary
Resolving Company Name → Ads
The script handles the advertiser lookup automatically:
- Company name: Constructs a search URL like
facebook.com/ads/library/?q=CompanyName— the Apify actor searches Meta's Ad Library for matching advertisers - Page URL: If you have the Facebook Page URL, pass it via
--page-urlfor exact matching - Domain: You can also pass a domain and the script will search for it
No need to manually find Page IDs. The Apify actor resolves the search internally.
CLI Reference
| Flag | Default | Description |
|---|---|---|
--company |
required* | Company name or keyword to search |
--page-url |
none | Facebook Page URL for exact advertiser match |
--country |
ALL | 2-letter country code (US, GB, DE, etc.) or ALL |
--ad-status |
active | active or all (includes inactive) |
--max-ads |
50 | Maximum number of ads to return |
--output |
json | Output format: json or summary |
--token |
env var | Apify token (prefer APIFY_API_TOKEN env var) |
--timeout |
300 | Max seconds to wait for the Apify run |
*Either --company or --page-url is required.
Output Fields
Each ad in the output contains:
{
"ad_id": "123456789",
"page_name": "Nike",
"page_id": "123456789",
"ad_text": "Just Do It. Shop the latest...",
"ad_creative_link_title": "Nike.com",
"ad_creative_link_description": "Free shipping on orders...",
"ad_creative_link_url": "https://nike.com/...",
"image_url": "https://...",
"video_url": "https://...",
"ad_delivery_start_time": "2026-01-15",
"ad_delivery_stop_time": null,
"currency": "USD",
"spend_lower": 100,
"spend_upper": 499,
"impressions_lower": 1000,
"impressions_upper": 4999,
"platforms": ["facebook", "instagram"],
"status": "ACTIVE"
}
Cost
~$5 per 1,000 ads scraped on Apify Free plan. Paid plans are cheaper ($3.40-$5/1K).
Common Workflows
1. Competitor Ad Research
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--company "Competitor Name" --country US --max-ads 100 --output summary
2. Industry Ad Landscape
# Search by keyword to see all advertisers in a space
python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \
--company "CRM software" --max-ads 50
3. Compare Multiple Competitors
Run the script multiple times for each competitor and compare creative approaches, messaging, and spend ranges.
Important Notes
- EU/UK ads are most complete: Meta archives all ads shown in EU/UK. For US-only ads, coverage may be limited to political/issue ads.
- Active vs All: By default only active ads are returned. Use
--ad-status allto include historical ads. - Rate limits: Apify handles rate limiting internally. For large scrapes, increase
--timeout.
Configuration
See references/apify-config.md for detailed API configuration, token setup, and rate limits.
| 1 | |
| 2 | name meta-ad-scraper |
| 3 | description Scrape competitor ads from Meta's Ad Library (Facebook, Instagram, Messenger, Threads, WhatsApp). Search by company name, Facebook Page URL, or keyword. Returns ad creatives, spend estimates, reach, impressions, and campaign details. Use for competitive ad research, messaging analysis, and creative inspiration. |
| 4 | |
| 5 | |
| 6 | # Meta Ad Library Scraper |
| 7 | |
| 8 | Scrape ads from Meta's Ad Library using the Apify `apify/facebook-ads-scraper` actor. Covers Facebook, Instagram, Messenger, Threads, and WhatsApp. |
| 9 | |
| 10 | ## Quick Start |
| 11 | |
| 12 | Requires `APIFY_API_TOKEN` env var (or `--token` flag). Install dependency: `pip install requests`. |
| 13 | |
| 14 | |
| 15 | # Search ads by company name |
| 16 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 17 | --company "Nike" |
| 18 | |
| 19 | # Search with country filter |
| 20 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 21 | --company "Shopify" --country US |
| 22 | |
| 23 | # Search by keyword (broader than company name) |
| 24 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 25 | --company "project management software" |
| 26 | |
| 27 | # Limit results |
| 28 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 29 | --company "HubSpot" --max-ads 20 |
| 30 | |
| 31 | # Search by Facebook Page URL directly |
| 32 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 33 | --page-url "https://www.facebook.com/nike" |
| 34 | |
| 35 | # Only active ads (default), or all ads |
| 36 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 37 | --company "Salesforce" --ad-status all |
| 38 | |
| 39 | # Human-readable summary |
| 40 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 41 | --company "Stripe" --output summary |
| 42 | |
| 43 | |
| 44 | ## How It Works |
| 45 | |
| 46 | Takes a company name, keyword, or Facebook Page URL |
| 47 | Constructs a Meta Ad Library URL with the search query and filters |
| 48 | Calls the Apify `apify/facebook-ads-scraper` actor via REST API |
| 49 | Polls until the run completes, then fetches the dataset |
| 50 | Parses and outputs ad data as JSON or human-readable summary |
| 51 | |
| 52 | ## Resolving Company Name → Ads |
| 53 | |
| 54 | The script handles the advertiser lookup automatically: |
| 55 | **Company name**: Constructs a search URL like `facebook.com/ads/library/?q=CompanyName` — the Apify actor searches Meta's Ad Library for matching advertisers |
| 56 | **Page URL**: If you have the Facebook Page URL, pass it via `--page-url` for exact matching |
| 57 | **Domain**: You can also pass a domain and the script will search for it |
| 58 | |
| 59 | No need to manually find Page IDs. The Apify actor resolves the search internally. |
| 60 | |
| 61 | ## CLI Reference |
| 62 | |
| 63 | | Flag | Default | Description | |
| 64 | |------|---------|-------------| |
| 65 | | `--company` | *required** | Company name or keyword to search | |
| 66 | | `--page-url` | none | Facebook Page URL for exact advertiser match | |
| 67 | | `--country` | ALL | 2-letter country code (US, GB, DE, etc.) or ALL | |
| 68 | | `--ad-status` | active | `active` or `all` (includes inactive) | |
| 69 | | `--max-ads` | 50 | Maximum number of ads to return | |
| 70 | | `--output` | json | Output format: `json` or `summary` | |
| 71 | | `--token` | env var | Apify token (prefer `APIFY_API_TOKEN` env var) | |
| 72 | | `--timeout` | 300 | Max seconds to wait for the Apify run | |
| 73 | |
| 74 | *Either `--company` or `--page-url` is required. |
| 75 | |
| 76 | ## Output Fields |
| 77 | |
| 78 | Each ad in the output contains: |
| 79 | |
| 80 | |
| 81 | { |
| 82 | "ad_id": "123456789", |
| 83 | "page_name": "Nike", |
| 84 | "page_id": "123456789", |
| 85 | "ad_text": "Just Do It. Shop the latest...", |
| 86 | "ad_creative_link_title": "Nike.com", |
| 87 | "ad_creative_link_description": "Free shipping on orders...", |
| 88 | "ad_creative_link_url": "https://nike.com/...", |
| 89 | "image_url": "https://...", |
| 90 | "video_url": "https://...", |
| 91 | "ad_delivery_start_time": "2026-01-15", |
| 92 | "ad_delivery_stop_time": null, |
| 93 | "currency": "USD", |
| 94 | "spend_lower": 100, |
| 95 | "spend_upper": 499, |
| 96 | "impressions_lower": 1000, |
| 97 | "impressions_upper": 4999, |
| 98 | "platforms": ["facebook", "instagram"], |
| 99 | "status": "ACTIVE" |
| 100 | } |
| 101 | |
| 102 | |
| 103 | ## Cost |
| 104 | |
| 105 | ~$5 per 1,000 ads scraped on Apify Free plan. Paid plans are cheaper ($3.40-$5/1K). |
| 106 | |
| 107 | ## Common Workflows |
| 108 | |
| 109 | ### 1. Competitor Ad Research |
| 110 | |
| 111 | |
| 112 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 113 | --company "Competitor Name" --country US --max-ads 100 --output summary |
| 114 | |
| 115 | |
| 116 | ### 2. Industry Ad Landscape |
| 117 | |
| 118 | |
| 119 | # Search by keyword to see all advertisers in a space |
| 120 | python3 skills/meta-ad-scraper/scripts/search_meta_ads.py \ |
| 121 | --company "CRM software" --max-ads 50 |
| 122 | |
| 123 | |
| 124 | ### 3. Compare Multiple Competitors |
| 125 | |
| 126 | Run the script multiple times for each competitor and compare creative approaches, messaging, and spend ranges. |
| 127 | |
| 128 | ## Important Notes |
| 129 | |
| 130 | **EU/UK ads are most complete**: Meta archives all ads shown in EU/UK. For US-only ads, coverage may be limited to political/issue ads. |
| 131 | **Active vs All**: By default only active ads are returned. Use `--ad-status all` to include historical ads. |
| 132 | **Rate limits**: Apify handles rate limiting internally. For large scrapes, increase `--timeout`. |
| 133 | |
| 134 | ## Configuration |
| 135 | |
| 136 | See `references/apify-config.md` for detailed API configuration, token setup, and rate limits. |
| 137 |
Details
- Updated
- Sep 21, 2026
- License
- MIT
- Stars on the repo
- ★ 1,220
- Checked
- Source
- gooseworks-ai/goose-skills ↗
- Creator
- gooseworks-ai · 206 listings
Made with meta-ad-scraper

Similar skills
See all →
SkillResearch what people actually say about any topicSTEP 0: STALE-CLONE SELF-CHECK — RUN BEFORE READING BELOW
SkillScrapes social platforms, business dataApify
Skill微信公众号长文增长闭环 ——
SkillSearch and retrieve content from Twitter/XTwitter/X Skill
SkillSays 'YouTube script', 'video script'🎬 YouTube Script: Writing retention-optimized video script...
SkillAgent Reach — 互联网能力路由器More from gooseworks-ai
SkillMine the highest-converting ad angles from customer reviewsAd angle miner
SkillAnalyze ad campaign performance data to identify what'sAd campaign analyzer
SkillFor paid lead-gen and participant-recruitment adsAd lead quality analyzer
SkillAnalyze the message match between your ads and landing pagesAd to landing page auditor
SkillCheck and improve your brand's visibility across AI searchAeo
SkillSearch Amazon products - find items, compare pricesAmazon Product Search