Facebook Ads Library Scraper - Meta & Instagram + EU Reach
Pricing
$0.60 / 1,000 ad saveds
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
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
1
Monthly active users
2 days ago
Last modified
Categories
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
- Add search terms (e.g.
protein powder) and/or advertiser page IDs. The page ID is theview_all_page_idin a Meta Ad Library URL. - Pick a country, an ad status (active, inactive, or all), and a media type.
- 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.
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 on a schedule
Save any input above as an Apify task and add a daily or weekly schedule. Pair startDateFrom with the schedule window to get only new ads, and 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.
Questions or a field you need? Open an issue on the actor's Issues tab. We answer every one.