Meta Ad Library Spy — Winning & Scaled Facebook Ads | $4/1K avatar

Meta Ad Library Spy — Winning & Scaled Facebook Ads | $4/1K

Pricing

from $3.88 / 1,000 ads

Go to Apify Store
Meta Ad Library Spy — Winning & Scaled Facebook Ads | $4/1K

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 $3.88 / 1,000 ads

Rating

0.0

(0)

Developer

Vitalii Bondarev

Vitalii Bondarev

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

2 days ago

Last modified

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

FieldDescription
ad_archive_idUnique Ad Library ID
ad_snapshot_urlDirect link to the ad in the Ad Library
page_id / page_nameAdvertiser page ID and name
page_profile_uri / page_profile_picture_url / page_like_countAdvertiser profile, avatar, audience size
byline"Paid for by" / advertiser disclaimer line
ad_creative_bodiesAd body text(s)
ad_creative_link_titlesHeadline/link title(s)
ad_creative_link_descriptionsLink description(s)
cta_text / cta_typeCall-to-action button
link_urlDestination URL
display_formatImage / video / carousel / DCO
snapshot_imagesImage creative URLs (inline)
snapshot_videosVideo creative URLs (inline)
media_countCount of inline creative URLs (images + videos)
publisher_platformsFACEBOOK / INSTAGRAM / MESSENGER / AUDIENCE_NETWORK / THREADS
ad_delivery_start_date / ad_delivery_stop_dateRun dates
is_active / days_active / longevity_scoreDelivery longevity
collation_count / collation_id / is_scaledVariant count + a scaled-winner flag
spend_* / impressions_* / reach_estimateRanges (political/issue ads only)
categories / entity_type / contains_sensitive_content / state_media_run_labelClassification & trust signals
regional_regulation_dataEU DSA transparency disclosures
parse_confidence / warningsData-quality signal

How to scrape Facebook ads by keyword or advertiser

  1. Enter one or more search terms (e.g. nike, weight loss) and/or advertiser page IDs.
  2. Pick countries (ISO codes; the Ad Library requires a country, default US).
  3. Optionally filter by ad type, active status, and media type.
  4. 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) and days_active to 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_id roughly monthly, which silently breaks most Ad Library scrapers at page 2. This actor re-extracts the live doc_id from each page it loads, so pagination keeps working across rotations with no update and no downtime. You can still pin a docId manually if you ever want to.
  • Scale signalcollation_count / is_scaled tell 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_confidence so 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.

More scrapers from our toolkit

Building a data pipeline? These actors pair well with this one — each runs on your own Apify account with the same pay-per-result pricing, no subscription:

Chain any of them together from the Integrations tab (the Run succeeded trigger) to build a multi-step workflow — one actor's output feeds the next.

Use it from your existing tools

Use with Claude Desktop / Cursor / Cline (MCP)

Load this actor as a tool in your AI assistant. Call it directly from your AI assistant via the Apify MCP server — no Store browsing needed. Paste this into your MCP client config (e.g. claude_desktop_config.json) and restart the client:

{
"mcpServers": {
"apify-meta-ads-library-scraper": {
"command": "npx",
"args": [
"-y",
"@apify/actors-mcp-server",
"--tools",
"bovi/meta-ads-library-scraper"
],
"env": {
"APIFY_TOKEN": "YOUR_APIFY_TOKEN"
}
}
}
}

Replace YOUR_APIFY_TOKEN with your own Apify API token (free at apify.com → Settings → Integrations). Curated to a handful of tools so the agent selects reliably.

Works with Clay

Run this actor as an HTTP enrichment step inside a Clay table:

  • Method: POST
  • URL: https://api.apify.com/v2/acts/bovi~meta-ads-library-scraper/run-sync-get-dataset-items?token={{apify_token}}
  • Body (JSON): map your Clay columns to the actor input (see the Input section above), e.g. {"searchTerms": "{{clay_column}}"}

The run finishes synchronously and returns the dataset rows straight into your Clay table. It runs on Apify's cloud under your own token and usage. Synchronous runs must complete within 300 seconds.