Facebook Ads Library Scraper: Meta Ads + Instagram Data
Pricing
$0.99 / 1,000 ad results
Facebook Ads Library Scraper: Meta Ads + Instagram Data
Scrape Facebook Ads Library (Meta Ad Library) with 57 fields per ad, no login needed. Get ad copy, images, videos, CTAs, Instagram followers, page verification, AI-content flag and EU transparency, plus optional EU reach and advertiser data. Search by keyword, advertiser, or any Ad Library URL.
Pricing
$0.99 / 1,000 ad results
Rating
0.0
(0)
Developer
Sourabh Kumar
Maintained by CommunityActor stats
0
Bookmarked
223
Total users
62
Monthly active users
20 days ago
Last modified
Categories
Share
Facebook Ads Library scraper: Meta ads, Instagram data & EU transparency
Scrape the Meta Ad Library (Facebook Ads Library) at scale with 57 fields per ad: ad copy, images, videos, CTAs, run dates, publisher platforms, Instagram followers, page verification, EU transparency, AI-generated media detection, and more. No Facebook account, no cookies, no login required.
$0.99 per 1,000 ads. No per-run fee. That is about 5,050 ads on Apify's free plan.
Why use this scraper?
- No login, no cookies, no Facebook account needed: fully anonymous access
- 57 fields per ad, plus optional EU transparency and advertiser intelligence on top
- Clean flat output: no deeply nested JSON, every field at top level
- URL input mode: paste any Meta Ad Library URL, filters parsed automatically
- Built-in residential proxy: anti-blocking handled automatically
- Instagram data included: IG followers, username, verification status via
enrichDetails - AI-generated content flag: detect digitally created media in ads (
containsDigitalCreatedMedia) - You pay only for ads you receive: filtered-out ads are never billed, and if a run cannot fill your request it says so in the run status instead of failing quietly
- Competitor intelligence ready: scrape thousands of ads per run, export to JSON/CSV/Excel
What data you get (all 57 fields)
Core ad fields
adArchiveId, adId, collationId, isActive, startDate, endDate, totalActiveTime, publisherPlatforms (Facebook, Instagram, Messenger, Threads, WhatsApp), targetedOrReachedCountries
Ad creative
adCopy, title, caption, linkDescription, linkUrl, ctaText, ctaType, displayFormat (IMAGE/VIDEO/DCO/CAROUSEL/DPA), byline, disclaimerLabel
Media
images (original + resized URLs), videos (HD, SD, preview), cards (full carousel data with per-card body, title, CTA, images, videos, watermarked variants)
Advertiser page
pageId, pageName, pageUrl, pageLikes, pageCategories, pageProfilePictureUrl
Enrich data (when enrichDetails: true)
pageAlias, pageCategory, pageAbout, pageCoverPhotoUrl, pageVerification (BLUE_VERIFIED/NOT_VERIFIED), entityType (BUSINESS/PERSON_PROFILE/BRAND), igUsername, igFollowers, igVerification, isProfilePage, isPoliticalPage
Transparency & regulation
categories, gatedType, hideDataStatus, isAaaEligible (EU transparency), hasUserReported, reportCount, menuItems, stateMediaRunLabel, containsDigitalCreatedMedia, containsSensitiveContent, regionalRegulationData (finserv, anti-scam flags)
Impressions & spend (political ads)
impressionsText, impressionsIndex, reachEstimate, currency, spend
Meta
collationCount, scrapedAt
EU transparency data (optional)
Set includeTransparency: true and every EU-targeted ad also carries who paid for it and who it reached:
payerandbeneficiary: the disclosed funder of the adeuTransparency.ageAudienceandgenderAudience: the age range and gender the advertiser targetedeuTransparency.locationAudience: the countries and regions targeted, including the ones the advertiser excludedeuTransparency.euTotalReach: how many people the ad reached in the EUeuTransparency.ageCountryGenderReachBreakdown: reach split by country, age band, and genderadLibraryUrl,pageIsDeleted,pageIsRestricted,isAdTakenDown
Only ads shown in the EU carry this data. Ads outside the EU return it as null.
Advertiser intelligence (optional)
In advertiser mode, set includeAdvertiserIntel: true to get a profile of the advertiser itself, fetched once per advertiser rather than once per ad:
- Confirmed page owner, including the disclosed business address
- Where the page's admins are located, by country, with counts
- Page creation date and name-change history
- Ad spend by disclaimer, lifetime and weekly
- Hidden ad count, related pages, Instagram followers and verification
For advertisers running social issue, electoral, or political ads, it also returns their aggregate targeting profile: age, gender, language, and location targeting, plus whether they use Custom Audiences and Lookalike audiences, with the share of spend behind each.
Find an advertiser by name
Not sure of a brand's page ID? Set mode: "resolve" and pass the brand name as query. You get back the matching advertiser pages with their page IDs, follower counts, categories, and verification status, ready to paste straight into advertiser mode.
Input options
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | search | search (by keyword), advertiser (by page), or resolve (brand name to page IDs) |
query | string | marketing | Keyword to search for, or the brand name in resolve mode |
advertiserUrls | list | Facebook Page URLs or numeric Page IDs | |
urls | list | Full Ads Library URLs (all filters parsed automatically) | |
country | string | US | ISO 2-letter country code |
countries | list | Multiple countries (overrides single country) | |
activeStatus | select | active | active, inactive, or all |
adType | select | all | all or political_and_issue_ads |
mediaType | select | all | all, image, or video |
platforms | list | FACEBOOK, INSTAGRAM, MESSENGER, THREADS, WHATSAPP | |
languages | list | Content language codes (e.g. en, es, fr) | |
startDate | date | Only return ads that started on or after this date | |
endDate | date | Only return ads that started on or before this date | |
maxResults | integer | 100 | Max ads (0 = unlimited) |
enrichDetails | boolean | false | Fetch Instagram followers + page verification per ad |
includeTransparency | boolean | false | Add EU reach, targeting, payer and beneficiary per ad |
includeAdvertiserIntel | boolean | false | Add advertiser profile and targeting summary (advertiser mode) |
audienceTimeframe | select | LAST_30_DAYS | Window for the advertiser targeting summary |
proxyConfiguration | object | Apify Residential | Required. Meta blocks datacenter IPs. Bring your own proxy supported. |
Pass several URLs or several advertisers in one run and the result budget is shared across them, so every source you list returns data instead of the first one using up the whole run.
How to use: 3 ways
1. Paste an Ads Library URL (easiest)
Go to facebook.com/ads/library, apply filters, copy the URL, paste into urls:
{"urls": ["https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=shopify&media_type=video"],"maxResults": 200}
2. Keyword search
{"mode": "search","query": "dropshipping","country": "US","activeStatus": "active","platforms": ["INSTAGRAM"],"maxResults": 500}
3. Advertiser mode
Scrape all ads run by specific pages:
{"mode": "advertiser","advertiserUrls": ["15087023444","https://www.facebook.com/shopify"],"activeStatus": "all","maxResults": 1000,"enrichDetails": true}
Example output (real ad)
{"adArchiveId": "1249043200627555","pageId": "15087023444","pageName": "Nike","pageUrl": "https://facebook.com/nike","pageAlias": "nike","pageLikes": 39561761,"pageCategory": "Sportswear Store","pageProfilePictureUrl": "https://scontent.fbcdn.net/...","pageCoverPhotoUrl": "https://scontent.fbcdn.net/...","pageVerification": "BLUE_VERIFIED","entityType": "PERSON_PROFILE","igUsername": "nike","igFollowers": 291422821,"igVerification": true,"isProfilePage": false,"isActive": true,"startDate": "2026-03-17T07:00:00.000Z","endDate": "2026-08-21T07:00:00.000Z","publisherPlatforms": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK", "MESSENGER"],"adCopy": "Celebra tu cumplea\u00f1os con Nike y obt\u00e9n acceso a productos exclusivos, MSI, env\u00edo y devoluciones gratis el resto del a\u00f1o.","title": "Nike: Shoes, Apparel & Stories","caption": "play.google.com","linkUrl": "http://play.google.com/store/apps/details?id=com.nike.omega","ctaText": "Shop now","ctaType": "SHOP_NOW","displayFormat": "DPA","images": [{ "originalUrl": "...", "resizedUrl": "..." }],"videos": [],"cards": [],"collationCount": 1,"gatedType": "ELIGIBLE","isAaaEligible": false,"containsDigitalCreatedMedia": false,"containsSensitiveContent": false,"scrapedAt": "2026-08-21T18:00:00.000Z"}
How much does it cost?
$0.99 per 1,000 ads ($0.00099 per ad). There is no per-run fee, so short runs are not penalised.
- Apify free plan ($5 of credit): about 5,050 ads
- Apify Starter plan ($29): about 29,292 ads
Apify residential proxy is required and adds platform cost on top. Measured on real runs: about $0.04 per 1,000 ads for a plain search, and about $0.12 per 1,000 with enrichDetails turned on, since that fetches each ad individually. You can bring your own proxy through proxyConfiguration.proxyUrls to skip it.
You are billed per ad delivered to your dataset. Ads filtered out by your date range are never returned and never charged.
Use cases
- Competitor ad intelligence: monitor what ads competitors are running, their copy, creatives, CTAs, and campaign longevity
- Market research: analyze advertising trends for any keyword, niche, or industry across 40+ countries
- Lead generation: find active advertisers in specific niches, filter by platform or country
- Ad creative inspiration: extract successful ad formats, headlines, CTAs, and copy from top brands
- Brand monitoring: track how brands advertise across Facebook, Instagram, Messenger, and Threads
- Political ad tracking: monitor political and issue ads with spend and impression data
- AI content detection: flag ads that use AI-generated imagery (
containsDigitalCreatedMedia) - EU transparency research: pull who funded an ad and the audience it actually reached
- Influencer research: use
enrichDetailsto get Instagram follower counts and verification status
Limitations
- EU transparency data only exists for ads shown in the EU. Ads outside the EU return those fields as null. That is how Meta publishes it, not a gap in the scraper.
- Advertiser targeting summaries only exist for social issue, electoral, and political advertisers. Commercial advertisers return the profile fields but empty targeting arrays.
- Sorting is not available. The Ad Library does not honour a sort order for anonymous access, so results come back in Meta's default ordering.
- A residential proxy is required. Meta rate-limits datacenter IPs within seconds.
- Category wording follows the country you scrape from. A US route returns "Sportswear Store" where a UK route returns "Sportswear shop". Pin a proxy country if you need identical strings across runs.
- Enrichment adds one request per ad, so large runs with
enrichDetailsare noticeably slower. Budget about 2 seconds per ad.
Technical details
- Architecture: HTTP only, no browser automation. Fast and cheap to run.
- Authentication: anonymous. No Facebook account, no cookies, no API key.
- Session caching: the anonymous session is reused for up to 20 hours across runs.
- Proxy rotation: residential IPs rotate automatically when Meta rate-limits a request.
- Pagination: cursor based, 30 ads per request, no depth limit.
- Retries: blocked or failed requests retry on a fresh IP before giving up.
FAQ
Q: Do I need a Facebook account? No. The actor uses anonymous access. The Meta Ad Library is a public transparency tool.
Q: Why does it need a proxy?
Meta rate-limits Apify's shared datacenter IPs within seconds. A residential proxy is required for reliable operation. You can bring your own through proxyConfiguration.proxyUrls.
Q: What's the difference between search and advertiser mode?
search finds ads matching a keyword across all advertisers. advertiser gets all ads from specific Facebook pages, which is more precise for competitor tracking.
Q: Can I paste any Meta Ad Library URL?
Yes. Go to facebook.com/ads/library, apply filters, copy the URL, paste into urls. All filters (keyword, country, platforms, languages, date range) are extracted automatically. Paste several URLs and each one is scraped with its own filters.
Q: What does enrichDetails: true do?
Makes one additional request per ad to fetch Instagram follower count, page verification status, entity type, page category, "About" text, and Instagram username. Slower, but it gives the richest advertiser profile.
Q: Does it work for political ads?
Yes. Set adType: "political_and_issue_ads". Political ads include spend, impressionsText, impressionsIndex, and reachEstimate data, and their advertisers expose a full targeting summary.
Q: Is the data legal to collect? The Meta Ad Library is published by Meta as a public transparency tool and requires no login to view. This actor reads only what any visitor can see.
Your feedback Found a bug or need a field that isn't here? Open an issue at console.apify.com/actors/XxAZnG8fiEX9QilOW/issues and it goes straight to me.