Meta Ad Library Spy — Winning & Scaled Facebook Ads | $4/1K
Pricing
from $4.00 / 1,000 ads
Meta Ad Library Spy — Winning & Scaled Facebook Ads | $4/1K
Find competitors' WINNING ads, not just ads: is_scaled flags creatives Meta runs in 3+ variants (the advertiser is spending), plus days_active & longevity_score — the signals ad-spy tools charge $99/mo for. Full creatives, CTAs, landing pages. Token-free official Ad Library source. Pay per ad.
Pricing
from $4.00 / 1,000 ads
Rating
0.0
(0)
Developer
Vitalii Bondarev
Maintained by CommunityActor stats
0
Bookmarked
4
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
Meta Ad Library Spy — Winning & Scaled Facebook Ads | $4/1K | No Token, No Login
Built for media buyers, ad researchers and growth hackers who don't just want competitors' ads — they want their WINNING ads. Every record carries is_scaled (Meta grouped 3+ near-duplicate variants → the advertiser is actively spending on it), collation_count, days_active and longevity_score: the exact signals ad-spy SaaS charges $99+/mo for, leading every row.
Pricing: $4.00 per 1,000 ads. No monthly fees, no token, pay only for delivered ads.
Scrape the Meta Ad Library (formerly the Facebook Ad Library) token-free — no Meta account, no Graph API token, no government-ID verification. Search active and inactive ads by keyword or by advertiser page ID across any country, and get a clean, flat record per ad: creative copy, headline, call-to-action, destination link, publisher platforms (Facebook, Instagram, Messenger, Audience Network), delivery dates, active status, and inline image and video creative URLs. Pay per ad.
Pricing example
$4.00 per 1,000 ads. 100 ads = $0.40. 1,000 ads = $4.00. 5,000 ads across 5 countries = $20.00. No per-run fee. No Meta account needed.
Sample output
{"ad_archive_id": "1234567890123456","page_name": "Nike","page_id": "15087023","ad_creative_bodies": ["Just Do It. Shop the new Air Max 2026."],"cta_text": "Shop Now","link_url": "https://www.nike.com/air-max-2026","publisher_platforms": ["FACEBOOK", "INSTAGRAM"],"display_format": "image","is_active": true,"ad_delivery_start_date": "2026-05-01","days_active": 35,"collation_count": 12,"is_scaled": true,"media_count": 3,"ad_snapshot_url": "https://www.facebook.com/ads/library/?id=1234567890123456","parse_confidence": 1.0,"scraped_at": "2026-06-05T09:00:00Z"}
Meta Ad Library Scraper
This Meta Ad Library scraper reads the same public data the Ad Library website serves to any visitor — the internal search results behind facebook.com/ads/library. Because it never touches the official Graph API, your buyers skip the entire onboarding wall: no Meta developer app, no ID verification, no token to generate or rotate. Point it at a keyword or an advertiser and it streams ads in real time.
Facebook ads data you get per ad
| Field | Description |
|---|---|
ad_archive_id | Unique Ad Library ID |
ad_snapshot_url | Direct link to the ad in the Ad Library |
page_id / page_name | Advertiser page ID and name |
page_profile_uri / page_profile_picture_url / page_like_count | Advertiser profile, avatar, audience size |
byline | "Paid for by" / advertiser disclaimer line |
ad_creative_bodies | Ad body text(s) |
ad_creative_link_titles | Headline/link title(s) |
ad_creative_link_descriptions | Link description(s) |
cta_text / cta_type | Call-to-action button |
link_url | Destination URL |
display_format | Image / video / carousel / DCO |
snapshot_images | Image creative URLs (inline) |
snapshot_videos | Video creative URLs (inline) |
media_count | Count of inline creative URLs (images + videos) |
publisher_platforms | FACEBOOK / INSTAGRAM / MESSENGER / AUDIENCE_NETWORK / THREADS |
ad_delivery_start_date / ad_delivery_stop_date | Run dates |
is_active / days_active / longevity_score | Delivery longevity |
collation_count / collation_id / is_scaled | Variant count + a scaled-winner flag |
spend_* / impressions_* / reach_estimate | Ranges (political/issue ads only) |
categories / entity_type / contains_sensitive_content / state_media_run_label | Classification & trust signals |
regional_regulation_data | EU DSA transparency disclosures |
parse_confidence / warnings | Data-quality signal |
How to scrape Facebook ads by keyword or advertiser
- Enter one or more search terms (e.g.
nike,weight loss) and/or advertiser page IDs. - Pick countries (ISO codes; the Ad Library requires a country, default
US). - Optionally filter by ad type, active status, and media type.
- Set max ads per search to control cost, then run.
{"searchTerms": ["nike"],"countries": ["US"],"adType": "all","maxResults": 100}
Use cases for Meta Ad Library data
- Find winning creatives fast — sort by
is_scaled/collation_count(how many variants an advertiser is running) anddays_activeto spot the ads a competitor is actually putting budget behind. - Competitor ad monitoring — track which creatives a brand is running and for how long.
- Ad creative research / swipe files — pull winning ad copy, hooks, and inline media URLs at scale.
- Lead generation — surface advertisers in a niche by keyword and capture their landing pages.
- Market & trend analysis — measure ad longevity (
days_active) as a proxy for what's working. - Political ad transparency — for
political_and_issue_ads, capture spend, impressions, and EU disclosures.
Why this Facebook Ad Library scraper is reliable
- Token-free — no Meta login, no ID verification; your buyers run it with zero setup.
- Inline media URLs — image and video creative links (including every carousel card) come with the data; no per-ad render. Many scrapers hand you only the snapshot URL.
- Self-healing pagination — Meta rotates its internal
doc_idroughly monthly, which silently breaks most Ad Library scrapers at page 2. This actor re-extracts the livedoc_idfrom each page it loads, so pagination keeps working across rotations with no update and no downtime. You can still pin adocIdmanually if you ever want to. - Scale signal —
collation_count/is_scaledtell you how many variants of a creative an advertiser is running, so you can rank by what's actually getting budget — not just what exists. - Resilient parsing — anchors on stable JSON field names, not CSS classes, and emits
parse_confidenceso structural changes surface loudly instead of shipping blanks. - Honest metrics — spend/impressions are returned only when Meta actually publishes them (political/issue ads); commercial ads get
null, never fabricated numbers. - Apify Proxy only — uses the standard residential proxy configuration billed to the run owner; no external proxy account required.
Frequently asked questions
Do I need a Facebook account or Meta token? No. This scraper uses the public Ad Library that any visitor can browse. No login, no Graph API token, no ID verification.
Do I get ad spend and impressions? Spend, impressions, and reach are published by Meta only for political and issue ads. Set adType to political_and_issue_ads to capture them. Commercial ads return copy, media, platforms, and dates — but no reliable spend (we return null rather than fabricating numbers).
Why is a residential proxy recommended? Meta blocks datacenter IPs. On the Apify cloud, enable an Apify RESIDENTIAL proxy in the proxy configuration (billed to the run owner) for reliable token-free scraping at volume.
Can I scrape all ads from one advertiser? Yes — add the advertiser's numeric pageIds.
What happens when Meta changes its internal pagination ID? Nothing on your end. Meta rotates the persisted-query doc_id behind the Ad Library every few weeks, which is what quietly breaks many scrapers after page 1. This actor reads the current doc_id straight out of the page on every run, so it self-heals through rotations. (Advanced: you can still override it via the docId input.)
How do I find the best-performing ads? Meta doesn't publish engagement for commercial ads, so use the proxies that it does expose: days_active (how long an ad has run) and collation_count / is_scaled (how many variants an advertiser is running). Long-running, heavily-collated creatives are the ones getting budget.
Winning ad detection workflow
Sort by days_active DESC, collation_count DESC → ads running longest with most variants = what's actually getting budget. No spend data needed for commercial ads — longevity + variant count are the reliable proxies.
EU DSA transparency data
The regional_regulation_data and state_media_run_label fields contain EU Digital Services Act transparency disclosures. Market separately to EU compliance and research teams — this is mandatory public data that Meta must expose.
Use with AI Agents (MCP)
This Meta Ad Library scraper is callable as a tool by AI agents (Claude Desktop, Cursor, VS Code, n8n, or any MCP-compatible client) via Apify's hosted Model Context Protocol server.
{"mcpServers": {"apify": {"command": "npx","args": ["mcp-remote","https://mcp.apify.com/?tools=bovi/meta-ads-library-scraper","--header","Authorization: Bearer <YOUR_APIFY_TOKEN>"]}}}
Integrations
Built for ad researchers, growth hackers, and competitive-intel teams mining Facebook and Instagram creatives at scale — the JSON/dataset output drops into the tools you already run, no glue code:
- n8n / Make / Zapier — trigger a run or pipe every new dataset item into 500+ apps (Google Sheets, Airtable, Slack, HubSpot, your database) with no code: n8n, Make, Zapier.
- Webhooks — fire your own endpoint the moment a run finishes, to push results straight into your pipeline (docs).
- MCP server — expose this actor as a tool to Claude, Cursor, or any MCP client so an AI agent can pull this data mid-conversation (guide).
- API & SDKs — fetch the dataset as JSON, CSV, or Excel through the Apify REST API or the Python / JS SDKs.
See all Apify integrations.
Disclaimer
The Meta Ad Library is a public transparency tool. This actor accesses the same publicly available data any visitor can view, without logging in. Respect Meta's terms and applicable law when using the data.