Facebook Ads Library Scraper: Meta Ads + Instagram Data avatar

Facebook Ads Library Scraper: Meta Ads + Instagram Data

Pricing

$0.99 / 1,000 ad results

Go to Apify Store
Facebook Ads Library Scraper: Meta Ads + Instagram Data

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

Sourabh Kumar

Maintained by Community

Actor 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:

  • payer and beneficiary: the disclosed funder of the ad
  • euTransparency.ageAudience and genderAudience: the age range and gender the advertiser targeted
  • euTransparency.locationAudience: the countries and regions targeted, including the ones the advertiser excluded
  • euTransparency.euTotalReach: how many people the ad reached in the EU
  • euTransparency.ageCountryGenderReachBreakdown: reach split by country, age band, and gender
  • adLibraryUrl, 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

FieldTypeDefaultDescription
modeselectsearchsearch (by keyword), advertiser (by page), or resolve (brand name to page IDs)
querystringmarketingKeyword to search for, or the brand name in resolve mode
advertiserUrlslistFacebook Page URLs or numeric Page IDs
urlslistFull Ads Library URLs (all filters parsed automatically)
countrystringUSISO 2-letter country code
countrieslistMultiple countries (overrides single country)
activeStatusselectactiveactive, inactive, or all
adTypeselectallall or political_and_issue_ads
mediaTypeselectallall, image, or video
platformslistFACEBOOK, INSTAGRAM, MESSENGER, THREADS, WHATSAPP
languageslistContent language codes (e.g. en, es, fr)
startDatedateOnly return ads that started on or after this date
endDatedateOnly return ads that started on or before this date
maxResultsinteger100Max ads (0 = unlimited)
enrichDetailsbooleanfalseFetch Instagram followers + page verification per ad
includeTransparencybooleanfalseAdd EU reach, targeting, payer and beneficiary per ad
includeAdvertiserIntelbooleanfalseAdd advertiser profile and targeting summary (advertiser mode)
audienceTimeframeselectLAST_30_DAYSWindow for the advertiser targeting summary
proxyConfigurationobjectApify ResidentialRequired. 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
}
{
"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 enrichDetails to 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 enrichDetails are 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.