Facebook Ads Library Scraper - Meta & Instagram + EU Reach avatar

Facebook Ads Library Scraper - Meta & Instagram + EU Reach

Pricing

$0.60 / 1,000 ad saveds

Go to Apify Store
Facebook Ads Library Scraper - Meta & Instagram + EU Reach

Facebook Ads Library Scraper - Meta & Instagram + EU Reach

Scrape Facebook and Instagram ads from the Meta Ads Library by keyword or advertiser page. Deduplicated ads with creatives, copy, dates, platforms and EU reach, age, gender and payer data. $0.60 per 1,000 ads.

Pricing

$0.60 / 1,000 ad saveds

Rating

0.0

(0)

Developer

anass kabil

anass kabil

Maintained by Community

Actor stats

0

Bookmarked

36

Total users

31

Monthly active users

4 days ago

Last modified

Share

Facebook Ads Library Scraper: Meta & Instagram ads with EU reach data

Collect ads from the Meta Ad Library by keyword or advertiser page. Each ad is deduplicated by archive ID and verified before it reaches your dataset, so you pay only for unique ads.

What you get per ad

  • Identity: ad archive ID, page name and ID, page likes, page categories
  • Status and timing: active or inactive, start and end dates, total active time
  • Creative: headline, body text, CTA text and type, landing URL, image and video URLs (HD and SD), carousel cards, display format
  • Delivery: publisher platforms (Facebook, Instagram, Messenger, Audience Network), impressions index, reach estimate, and spend/currency where Meta publishes it
  • EU and regional transparency (on by default): total EU reach plus age, gender, and location breakdowns, and the beneficiary and payer, wherever Meta discloses them

How to use it

  1. Add search terms (e.g. protein powder) and/or advertiser page IDs. The page ID is the view_all_page_id in a Meta Ad Library URL.
  2. Pick a country, an ad status (active, inactive, or all), and a media type.
  3. Set max ads per search (0 means everything available) and run.

Every search term or page is collected separately. An ad found by two of your searches is kept, and charged, only once.

Example input

{
"searchTerms": ["protein powder"],
"pageIds": ["687161278012626"],
"country": "US",
"activeStatus": "active",
"maxAdsPerSearch": 500
}

Example output (one ad, trimmed)

{
"ad_archive_id": "2257951791619613",
"page_id": "687161278012626",
"page_name": "Clean Simple Eats",
"is_active": false,
"start_date": 1782975600,
"end_date": 1783753200,
"publisher_platforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK", "THREADS"],
"title": "Clean Simple Eats",
"text_body": "BRB, running to @Walmart to stock up on our fave clean protein...",
"cta_text": "Shop now",
"link_url": "https://cleansimpleeats.com/pages/locations",
"image_url": "https://scontent.xx.fbcdn.net/v/t39.35426-6/...",
"display_format": "CAROUSEL",
"search_term": "protein powder",
"eu_transparency": null
}

Dates are Unix timestamps in seconds. For ads shown in the EU, eu_transparency holds total EU reach, the age, gender and country breakdowns, and the beneficiary and payer. Export as JSON, CSV or Excel from the dataset tab, or read it through the Apify API.

Pricing

You pay $0.60 per 1,000 unique ads saved ($0.0006 per ad). Duplicates are never charged. Use Apify's maximum cost per run setting to cap spend; the run stops cleanly when it reaches your limit.

From November 9, 2026 each search term or advertiser page also costs $0.05, which covers the browser session it needs. A 1,000-ad export then costs $0.65. There is no separate per-run fee.

Use cases

Spy on competitor ads

See every ad a competitor is running right now. Copy the page ID from their Ad Library URL (view_all_page_id=...) and pull only active ads:

{ "pageIds": ["687161278012626"], "country": "US", "activeStatus": "active", "maxAdsPerSearch": 0 }

Sort by start_date to see their newest tests; ads that keep running for months are usually their winners.

Build an ad swipe file

Collect proven creatives for a niche in one run. Search a few keywords, keep only video or image ads, and export the dataset to CSV or Google Sheets. Every row has the copy, headline, CTA, landing URL and the creative URLs:

{ "searchTerms": ["protein powder", "pre workout", "creatine"], "country": "US", "mediaType": "video", "maxAdsPerSearch": 200 }

Count a brand's active ads for agency outreach

A brand running 40 active ads has a creative budget and a team to talk to. Feed a list of prospect page IDs, set activeStatus to active, and count rows per page_name to rank who to pitch first. Add startDateFrom to see who launched new ads this month:

{ "pageIds": ["687161278012626", "20531316728"], "country": "ALL", "activeStatus": "active", "startDateFrom": "2026-10-01", "maxAdsPerSearch": 0 }

Research EU ad reach

Meta publishes reach, age, gender and country breakdowns, plus the beneficiary and payer, for ads shown in the EU. Keep includeTransparency on and pick an EU country:

{ "searchTerms": ["electric bike"], "country": "DE", "activeStatus": "all", "includeTransparency": true, "maxAdsPerSearch": 300 }

Each ad's eu_transparency field then holds total EU reach and the demographic breakdowns, ready for a chart or a report.

Monitor competitors: only new ads

Turn on Only new ads (monitor mode), save the input as an Apify task, and add a daily or weekly schedule. The first run returns every ad and remembers it; each later run returns only ads you have not received yet, so you pay only for what is new:

{ "pageIds": ["687161278012626"], "country": "US", "activeStatus": "active", "maxAdsPerSearch": 0, "onlyNewAds": true }

Seen ads are remembered per search, country, status and media type in the meta-ad-monitor key-value store in your own account. Delete that store to start over. Connect the dataset to Google Sheets, Slack, Make, Zapier or n8n through Apify integrations. Ready-made Python, Node and n8n examples (new ads to CSV, Google Sheets or Slack): github.com/anassk01/facebook-ads-library-scraper.

Notes

  • This actor collects only what Meta publishes in its public Ad Library. Meta doesn't publish clicks, CTR, conversions, or ROAS for commercial ads, so no tool can give you those.
  • Spend and impressions ranges exist mainly for political and issue ads, and for ads in regulated regions.
  • Residential proxy (the default) gives the most reliable results.

Custom work

Need something built on this data? We also take custom projects: a sheet or dashboard that refreshes on a schedule, an alert when a competitor starts new ads, other ad libraries, or ads loaded straight into your database. Email contact@pullmesh.com with what you need and we'll reply with a quote.

Questions or a field you need? Open an issue on the actor's Issues tab. We answer every one.