Facebook Ads Library Scraper - Reports & Monitor avatar

Facebook Ads Library Scraper - Reports & Monitor

Pricing

from $0.42 / 1,000 ad results

Go to Apify Store
Facebook Ads Library Scraper - Reports & Monitor

Facebook Ads Library Scraper - Reports & Monitor

Scrape public Facebook and Instagram ads by keyword, Page ID, or URL. Extract creatives and transparency data, analyze political-ad reports, resolve branded profiles, and monitor new, changed, stopped, or reactivated ads.

Pricing

from $0.42 / 1,000 ad results

Rating

0.0

(0)

Developer

ScrapingMonkey

ScrapingMonkey

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Facebook Ads Library Scraper - Ads, Creatives, Transparency and Political Reports

Extract public Facebook and Instagram ads, complete creative variants, advertiser transparency, political spending reports, branded-profile matches, and scheduled changes from Meta Ads Library.

  • Search by keyword, exact phrase, advertiser Page ID, or a current Ads Library URL
  • Extract ad text, landing pages, image/video media, carousel cards, platforms, dates, and status
  • Enrich ads with advertiser, audience, geographic, EU/UK/BR, payer, financial-services, and violation data when Meta publishes it
  • Build country report tables with totals, ranked advertisers, regional spending, keywords, trackers, and snapshot availability
  • Monitor new, changed, stopped, and reactivated ads with persistent scheduled-run state
  • Process multiple queries, pages, countries, and direct ad IDs in one run
  • No Facebook login, Meta API token, or user-supplied proxy is required; all requests use the built-in Apify Residential Proxy
  • Export results to JSON, CSV, Excel, XML, RSS, or access them through the Apify API

What can you do with this Actor?

ModeInputOutputBest for
searchKeywords, Page IDs, or Ads Library URLsPublic ad records and complete creativesCompetitor research and creative discovery
detailsNumeric archive IDs or direct ad URLsOne enriched record per public adCompliance, advertiser due diligence, and EU transparency
politicalKeywords, Page IDs, countries, bylines, and regionsPolitical ads enriched with available spend, reach, audience, and regulatory dataElection, policy, and public-interest research
reportCountry, report date, time range, advertiser filterOverview, advertiser, location, and download-availability recordsPolitical-spend rankings and country analysis
brandedContentCreator or business names and platformMatching public Facebook or Instagram profilesResolving entities before branded-content research
monitorThe same sources and filters as Search plus a monitor keyOnly new, changed, stopped, or reactivated adsScheduled competitor and campaign alerts

One mode runs at a time. Search and Political can enrich every ad with Details in the same run. All result types use the same stable 52-field top-level contract and appear in one Results table.

Quick start

  1. Open the Actor and click Try for free.
  2. Keep Search ads selected and enter a brand, product, or advertiser name.
  3. Choose countries and set Maximum results per source.
  4. Click Start.
  5. Preview the single Results table or download it in your preferred format.

The default input searches for Nike in the United States and is ready to run.

Input examples

Search public ads

{
"mode": "search",
"searchQueries": ["Nike", "running shoes"],
"countries": ["US"],
"activeStatus": "active",
"maxResults": 50
}

maxResults applies independently to every query, Page ID, or search URL. One dataset row represents one deduplicated ad archive ID.

Search an advertiser page and fetch transparency details

{
"mode": "search",
"pageIds": ["1347126975377308"],
"countries": ["US", "GB"],
"includeAdDetails": true,
"maxResults": 100
}

Fetch direct ad details

{
"mode": "details",
"adArchiveIds": [
"27570265279288753",
"https://www.facebook.com/ads/library/?id=123456789012345"
],
"countries": ["US"]
}

Political and issue ads

{
"mode": "political",
"searchQueries": ["healthcare policy"],
"countries": ["US"],
"activeStatus": "all",
"bylines": [],
"regions": [],
"maxResults": 100
}

Country political-ad report

{
"mode": "report",
"reportCountry": "US",
"reportTimePreset": "LAST_30_DAYS",
"reportSortColumn": "SPEND",
"reportSortDescending": true,
"maxResults": 100
}

Resolve branded-content profiles

{
"mode": "brandedContent",
"searchQueries": ["Nike"],
"brandedPlatform": "INSTAGRAM",
"brandedStartDate": "2026-08-01",
"brandedEndDate": "2026-08-11",
"maxResults": 20
}

Monitor ads on a schedule

{
"mode": "monitor",
"searchQueries": ["competitor brand"],
"countries": ["US"],
"monitorKey": "competitor-us-ads",
"monitorBehavior": "newAndChanged",
"maxResults": 500
}

Complete output examples

Every runtime row contains exactly the same 52 top-level fields. Unavailable or unrelated values are represented by null, [], false, or 0; top-level keys are not omitted. raw is null unless includeRaw is enabled.

Complete ad output - 52 top-level fields

{
"recordType": "ad",
"resultType": "ad",
"id": "27570265279288753",
"adArchiveId": "27570265279288753",
"adId": "120219576487120654",
"adLibraryUrl": "https://www.facebook.com/ads/library/?id=27570265279288753",
"pageId": "1347126975377308",
"pageName": "Example Sports",
"pageUrl": "https://www.facebook.com/1347126975377308",
"isActive": true,
"status": "active",
"startDate": "2026-08-01T00:00:00Z",
"endDate": null,
"daysRunning": 10,
"totalActiveSeconds": 864000,
"platforms": ["FACEBOOK", "INSTAGRAM"],
"categories": ["UNKNOWN"],
"currency": "USD",
"spend": null,
"impressions": null,
"reachEstimate": null,
"targetedCountries": ["US"],
"body": "Move every day in the new training collection.",
"title": "Built for your next run",
"caption": "EXAMPLE.COM",
"description": "Shop the latest performance styles.",
"ctaText": "Shop now",
"ctaType": "SHOP_NOW",
"destinationUrl": "https://example.com/running",
"destinationDomain": "example.com",
"displayFormat": "SINGLE_IMAGE",
"media": [
{
"type": "image",
"url": "https://scontent.example/ad-original.jpg",
"thumbnailUrl": "https://scontent.example/ad-preview.jpg",
"width": 1080,
"height": 1080
}
],
"cards": [
{
"body": "Daily trainer",
"title": "Road Runner 2",
"caption": "EXAMPLE.COM",
"description": "Responsive everyday cushioning.",
"ctaText": "Shop now",
"ctaType": "SHOP_NOW",
"destinationUrl": "https://example.com/road-runner",
"destinationDomain": "example.com",
"media": [
{
"type": "image",
"url": "https://scontent.example/card.jpg",
"thumbnailUrl": "https://scontent.example/card-preview.jpg",
"width": 1080,
"height": 1080
}
]
}
],
"creativeVariants": [
{
"index": 0,
"text": "A second public creative variation.",
"destinationUrl": "https://example.com/variant",
"destinationDomain": "example.com",
"media": [
{
"type": "video",
"url": "https://video.example/variant.mp4",
"thumbnailUrl": "https://video.example/variant.jpg",
"width": 1080,
"height": 1920
}
]
}
],
"creativeVariantCount": 1,
"mediaCount": 2,
"collation": {"id": "701234567890", "count": 3},
"containsDigitalCreatedMedia": false,
"containsSensitiveContent": false,
"stateMediaRunLabel": null,
"adMetadata": {
"fevInfo": null,
"gatedType": null,
"hideDataStatus": null,
"reportCount": 0,
"isAaaEligible": true,
"pageIsDeleted": false,
"hasUserReported": false,
"menuItems": []
},
"creativeMetadata": {
"additionalInfo": null,
"event": null,
"brandedContent": null,
"rootResharedPost": null,
"isReshared": false,
"disclaimerLabel": null,
"byline": null,
"pageLikeCount": 125000,
"pageCategories": ["Sportswear Store"],
"countryIsoCode": "US",
"brazilTaxId": null,
"ecCertificates": [],
"pageProfilePictureUrl": "https://scontent.example/page.jpg"
},
"regionalRegulationData": null,
"advertiser": null,
"transparency": null,
"report": null,
"brandedContent": null,
"source": {
"mode": "search",
"query": "running shoes",
"pageId": null,
"countries": ["US"],
"sourceUrl": "https://www.facebook.com/ads/library/?country=US&q=running+shoes",
"rank": 1,
"reportDate": null,
"timePreset": null
},
"monitorStatus": null,
"changedFields": [],
"scrapedAt": "2026-08-11T08:00:00Z",
"raw": null
}

Complete adDetail output - 52 top-level fields

{
"recordType": "ad",
"resultType": "adDetail",
"id": "27570265279288753",
"adArchiveId": "27570265279288753",
"adId": "120219576487120654",
"adLibraryUrl": "https://www.facebook.com/ads/library/?id=27570265279288753",
"pageId": "208685479508187",
"pageName": "Example Public Campaign",
"pageUrl": "https://www.facebook.com/208685479508187",
"isActive": false,
"status": "inactive",
"startDate": "2026-07-01T00:00:00Z",
"endDate": "2026-07-31T00:00:00Z",
"daysRunning": 30,
"totalActiveSeconds": 2592000,
"platforms": ["FACEBOOK", "INSTAGRAM"],
"categories": ["POLITICAL_AND_ISSUE_ADS"],
"currency": "USD",
"spend": {"lowerBound": 1000, "upperBound": 1499, "index": null, "text": null},
"impressions": {"lowerBound": 100000, "upperBound": 124999, "index": 8, "text": null},
"reachEstimate": {"lowerBound": 90000, "upperBound": 110000, "index": null, "text": null},
"targetedCountries": ["US"],
"body": "A public issue-ad message.",
"title": "Learn about the proposal",
"caption": "EXAMPLE.ORG",
"description": "Read the public policy summary.",
"ctaText": "Learn more",
"ctaType": "LEARN_MORE",
"destinationUrl": "https://example.org/proposal",
"destinationDomain": "example.org",
"displayFormat": "VIDEO",
"media": [
{
"type": "video",
"url": "https://video.example/policy.mp4",
"thumbnailUrl": "https://video.example/policy.jpg",
"width": 1920,
"height": 1080
}
],
"cards": [],
"creativeVariants": [],
"creativeVariantCount": 1,
"mediaCount": 1,
"collation": {"id": null, "count": 1},
"containsDigitalCreatedMedia": false,
"containsSensitiveContent": false,
"stateMediaRunLabel": null,
"adMetadata": {
"fevInfo": null,
"gatedType": null,
"hideDataStatus": null,
"reportCount": 0,
"isAaaEligible": false,
"pageIsDeleted": false,
"hasUserReported": false,
"menuItems": []
},
"creativeMetadata": {
"additionalInfo": null,
"event": null,
"brandedContent": null,
"rootResharedPost": null,
"isReshared": false,
"disclaimerLabel": "Paid for by Example Committee",
"byline": "Example Committee",
"pageLikeCount": 5300,
"pageCategories": ["Political Organization"],
"countryIsoCode": "US",
"brazilTaxId": null,
"ecCertificates": [],
"pageProfilePictureUrl": "https://scontent.example/committee.jpg"
},
"regionalRegulationData": {"regions": ["US"]},
"advertiser": {"page_id": "208685479508187", "page_name": "Example Public Campaign", "page_spend": 24500},
"transparency": {
"insights": {"age_gender": [{"age_range": "25-34", "female": 0.51, "male": 0.47, "unknown": 0.02}]},
"transparencyByLocation": {
"br_transparency": null,
"eu_transparency": {"targets_eu": true, "eu_total_reach": 25000, "age_audience": {"min": 18, "max": 65}, "gender_audience": "ALL", "location_audience": [{"name": "Germany", "type": "COUNTRY", "excluded": false, "num_obfuscated": 25000}]},
"uk_transparency": null
},
"verifiedVoiceContext": {"types": [], "ad_library_all_geo_fin_serv_info": {"finserv_data": []}},
"violationTypes": [{"name": "Example policy notice", "link": "https://example.org/policy", "is_legal": true}],
"isViolatingEuSiep": false,
"eligibleForAiDisclosure": true
},
"report": null,
"brandedContent": null,
"source": {
"mode": "details",
"query": null,
"pageId": "208685479508187",
"countries": ["US"],
"sourceUrl": "https://www.facebook.com/ads/library/?id=27570265279288753&country=US",
"rank": null,
"reportDate": null,
"timePreset": null
},
"monitorStatus": null,
"changedFields": [],
"scrapedAt": "2026-08-11T08:01:00Z",
"raw": null
}

Complete reportOverview output - 52 top-level fields

{
"recordType": "report",
"resultType": "reportOverview",
"id": "report-overview-US-2026-08-11-LAST_30_DAYS",
"adArchiveId": null,
"adId": null,
"adLibraryUrl": null,
"pageId": null,
"pageName": null,
"pageUrl": null,
"isActive": null,
"status": null,
"startDate": null,
"endDate": null,
"daysRunning": null,
"totalActiveSeconds": null,
"platforms": [],
"categories": [],
"currency": null,
"spend": null,
"impressions": null,
"reachEstimate": null,
"targetedCountries": [],
"body": null,
"title": null,
"caption": null,
"description": null,
"ctaText": null,
"ctaType": null,
"destinationUrl": null,
"destinationDomain": null,
"displayFormat": null,
"media": [],
"cards": [],
"creativeVariants": [],
"creativeVariantCount": 0,
"mediaCount": 0,
"collation": null,
"containsDigitalCreatedMedia": null,
"containsSensitiveContent": null,
"stateMediaRunLabel": null,
"adMetadata": null,
"creativeMetadata": null,
"regionalRegulationData": null,
"advertiser": null,
"transparency": null,
"report": {
"country": "US",
"reportDate": "2026-08-11",
"timePreset": "LAST_30_DAYS",
"totalAds": 24500,
"totalSpend": 12500000,
"keywords": ["healthcare", "jobs", "election"],
"spendTrackerData": [{"page_id": "208685479508187", "spend": 24500}],
"spendTrackerTypeahead": [{"page_id": "208685479508187", "page_name": "Example Public Campaign"}],
"advertiser": null,
"location": null,
"availableDownloads": [],
"supportedCountries": [],
"hasNextPage": false,
"endCursor": null
},
"brandedContent": null,
"source": {
"mode": "report",
"query": null,
"pageId": null,
"countries": ["US"],
"sourceUrl": "https://www.facebook.com/ads/library/report/",
"rank": null,
"reportDate": "2026-08-11",
"timePreset": "LAST_30_DAYS"
},
"monitorStatus": null,
"changedFields": [],
"scrapedAt": "2026-08-11T08:02:00Z",
"raw": null
}

Complete reportAdvertiser output - 52 top-level fields

{
"recordType": "report",
"resultType": "reportAdvertiser",
"id": "report-advertiser-US-208685479508187",
"adArchiveId": null,
"adId": null,
"adLibraryUrl": null,
"pageId": "208685479508187",
"pageName": "Example Public Campaign",
"pageUrl": "https://www.facebook.com/208685479508187",
"isActive": null,
"status": null,
"startDate": null,
"endDate": null,
"daysRunning": null,
"totalActiveSeconds": null,
"platforms": [],
"categories": [],
"currency": "USD",
"spend": null,
"impressions": null,
"reachEstimate": null,
"targetedCountries": [],
"body": null,
"title": null,
"caption": null,
"description": null,
"ctaText": null,
"ctaType": null,
"destinationUrl": null,
"destinationDomain": null,
"displayFormat": null,
"media": [],
"cards": [],
"creativeVariants": [],
"creativeVariantCount": 0,
"mediaCount": 0,
"collation": null,
"containsDigitalCreatedMedia": null,
"containsSensitiveContent": null,
"stateMediaRunLabel": null,
"adMetadata": null,
"creativeMetadata": null,
"regionalRegulationData": null,
"advertiser": null,
"transparency": null,
"report": {
"country": "US",
"reportDate": "2026-08-11",
"timePreset": "LAST_30_DAYS",
"totalAds": 312,
"totalSpend": 245000,
"keywords": [],
"spendTrackerData": [],
"spendTrackerTypeahead": [],
"advertiser": {
"rank": 1,
"id": "1073538731696428",
"pageId": "208685479508187",
"name": "Example Public Campaign",
"iconUrl": "https://scontent.example/campaign.jpg",
"disclaimer": "Paid for by Example Committee",
"detailedSpends": [{"amount": 245000, "currency": "USD"}],
"showDetailedSpends": true,
"isDeleted": false
},
"location": null,
"availableDownloads": [],
"supportedCountries": [],
"hasNextPage": true,
"endCursor": "AQHS-example-cursor"
},
"brandedContent": null,
"source": {
"mode": "report",
"query": null,
"pageId": null,
"countries": ["US"],
"sourceUrl": "https://www.facebook.com/ads/library/report/",
"rank": null,
"reportDate": "2026-08-11",
"timePreset": "LAST_30_DAYS"
},
"monitorStatus": null,
"changedFields": [],
"scrapedAt": "2026-08-11T08:02:01Z",
"raw": null
}

Complete reportLocation output - 52 top-level fields

{
"recordType": "report",
"resultType": "reportLocation",
"id": "report-location-US-California",
"adArchiveId": null,
"adId": null,
"adLibraryUrl": null,
"pageId": null,
"pageName": null,
"pageUrl": null,
"isActive": null,
"status": null,
"startDate": null,
"endDate": null,
"daysRunning": null,
"totalActiveSeconds": null,
"platforms": [],
"categories": [],
"currency": "USD",
"spend": null,
"impressions": null,
"reachEstimate": null,
"targetedCountries": [],
"body": null,
"title": null,
"caption": null,
"description": null,
"ctaText": null,
"ctaType": null,
"destinationUrl": null,
"destinationDomain": null,
"displayFormat": null,
"media": [],
"cards": [],
"creativeVariants": [],
"creativeVariantCount": 0,
"mediaCount": 0,
"collation": null,
"containsDigitalCreatedMedia": null,
"containsSensitiveContent": null,
"stateMediaRunLabel": null,
"adMetadata": null,
"creativeMetadata": null,
"regionalRegulationData": null,
"advertiser": null,
"transparency": null,
"report": {
"country": "US",
"reportDate": "2026-08-11",
"timePreset": "LAST_30_DAYS",
"totalAds": null,
"totalSpend": 875000,
"keywords": [],
"spendTrackerData": [],
"spendTrackerTypeahead": [],
"advertiser": null,
"location": {
"rank": 1,
"name": "California",
"detailedSpends": [{"amount": 875000, "currency": "USD"}],
"showDetailedSpends": true
},
"availableDownloads": [],
"supportedCountries": [],
"hasNextPage": false,
"endCursor": null
},
"brandedContent": null,
"source": {
"mode": "report",
"query": null,
"pageId": null,
"countries": ["US"],
"sourceUrl": "https://www.facebook.com/ads/library/report/",
"rank": null,
"reportDate": "2026-08-11",
"timePreset": "LAST_30_DAYS"
},
"monitorStatus": null,
"changedFields": [],
"scrapedAt": "2026-08-11T08:02:02Z",
"raw": null
}

Complete reportDownload output - 52 top-level fields

{
"recordType": "report",
"resultType": "reportDownload",
"id": "report-download-US-2026-08-11",
"adArchiveId": null,
"adId": null,
"adLibraryUrl": null,
"pageId": null,
"pageName": null,
"pageUrl": null,
"isActive": null,
"status": null,
"startDate": null,
"endDate": null,
"daysRunning": null,
"totalActiveSeconds": null,
"platforms": [],
"categories": [],
"currency": null,
"spend": null,
"impressions": null,
"reachEstimate": null,
"targetedCountries": [],
"body": null,
"title": null,
"caption": null,
"description": null,
"ctaText": null,
"ctaType": null,
"destinationUrl": null,
"destinationDomain": null,
"displayFormat": null,
"media": [],
"cards": [],
"creativeVariants": [],
"creativeVariantCount": 0,
"mediaCount": 0,
"collation": null,
"containsDigitalCreatedMedia": null,
"containsSensitiveContent": null,
"stateMediaRunLabel": null,
"adMetadata": null,
"creativeMetadata": null,
"regionalRegulationData": null,
"advertiser": null,
"transparency": null,
"report": {
"country": "US",
"reportDate": "2026-08-11",
"timePreset": "LAST_30_DAYS",
"totalAds": null,
"totalSpend": null,
"keywords": [],
"spendTrackerData": [],
"spendTrackerTypeahead": [],
"advertiser": null,
"location": null,
"availableDownloads": [
{
"key": "2026-08-10",
"value": [
{"available": true, "query_time": "YESTERDAY"},
{"available": true, "query_time": "LAST_30_DAYS"}
]
}
],
"supportedCountries": ["ALL", "US", "GB", "DE"],
"hasNextPage": false,
"endCursor": null
},
"brandedContent": null,
"source": {
"mode": "report",
"query": null,
"pageId": null,
"countries": ["US"],
"sourceUrl": "https://www.facebook.com/ads/library/report/",
"rank": null,
"reportDate": "2026-08-11",
"timePreset": "LAST_30_DAYS"
},
"monitorStatus": null,
"changedFields": [],
"scrapedAt": "2026-08-11T08:02:03Z",
"raw": null
}

Complete brandedProfile output - 52 top-level fields

{
"recordType": "brandedContent",
"resultType": "brandedProfile",
"id": "branded-profile-17841400602400210",
"adArchiveId": null,
"adId": null,
"adLibraryUrl": null,
"pageId": "17841400602400210",
"pageName": "Nike",
"pageUrl": "https://www.instagram.com/nike/",
"isActive": null,
"status": null,
"startDate": null,
"endDate": null,
"daysRunning": null,
"totalActiveSeconds": null,
"platforms": [],
"categories": [],
"currency": null,
"spend": null,
"impressions": null,
"reachEstimate": null,
"targetedCountries": [],
"body": null,
"title": null,
"caption": null,
"description": null,
"ctaText": null,
"ctaType": null,
"destinationUrl": null,
"destinationDomain": null,
"displayFormat": null,
"media": [],
"cards": [],
"creativeVariants": [],
"creativeVariantCount": 0,
"mediaCount": 0,
"collation": null,
"containsDigitalCreatedMedia": null,
"containsSensitiveContent": null,
"stateMediaRunLabel": null,
"adMetadata": null,
"creativeMetadata": null,
"regionalRegulationData": null,
"advertiser": null,
"transparency": null,
"report": null,
"brandedContent": {
"rank": 1,
"platform": "INSTAGRAM",
"entityId": "17841400602400210",
"name": "Nike",
"handle": "nike",
"followers": 300000000,
"isVerified": true,
"profilePictureUrl": "https://scontent.example/nike.jpg",
"creator": null,
"brandPartner": null,
"contentType": null,
"publishedAt": null,
"postUrl": null,
"mediaUrl": null
},
"source": {
"mode": "brandedContent",
"query": "Nike",
"pageId": "17841400602400210",
"countries": [],
"sourceUrl": "https://www.facebook.com/ads/library/branded_content/?id=17841400602400210&query=Nike&target=instagram",
"rank": 1,
"reportDate": null,
"timePreset": null
},
"monitorStatus": null,
"changedFields": [],
"scrapedAt": "2026-08-11T08:03:00Z",
"raw": null
}

Complete adChange output - 52 top-level fields

{
"recordType": "ad",
"resultType": "adChange",
"id": "27570265279288753",
"adArchiveId": "27570265279288753",
"adId": "120219576487120654",
"adLibraryUrl": "https://www.facebook.com/ads/library/?id=27570265279288753",
"pageId": "1347126975377308",
"pageName": "Example Sports",
"pageUrl": "https://www.facebook.com/1347126975377308",
"isActive": false,
"status": "inactive",
"startDate": "2026-08-01T00:00:00Z",
"endDate": "2026-08-11T07:55:00Z",
"daysRunning": 10,
"totalActiveSeconds": 860100,
"platforms": ["FACEBOOK", "INSTAGRAM"],
"categories": ["UNKNOWN"],
"currency": "USD",
"spend": null,
"impressions": null,
"reachEstimate": null,
"targetedCountries": ["US"],
"body": "Move every day in the updated training collection.",
"title": "Built for your next run",
"caption": "EXAMPLE.COM",
"description": "Shop the latest performance styles.",
"ctaText": "Shop now",
"ctaType": "SHOP_NOW",
"destinationUrl": "https://example.com/running",
"destinationDomain": "example.com",
"displayFormat": "SINGLE_IMAGE",
"media": [
{
"type": "image",
"url": "https://scontent.example/ad-updated.jpg",
"thumbnailUrl": "https://scontent.example/ad-updated-preview.jpg",
"width": 1080,
"height": 1080
}
],
"cards": [],
"creativeVariants": [],
"creativeVariantCount": 1,
"mediaCount": 1,
"collation": {"id": "701234567890", "count": 3},
"containsDigitalCreatedMedia": false,
"containsSensitiveContent": false,
"stateMediaRunLabel": null,
"adMetadata": {
"fevInfo": null,
"gatedType": null,
"hideDataStatus": null,
"reportCount": 0,
"isAaaEligible": true,
"pageIsDeleted": false,
"hasUserReported": false,
"menuItems": []
},
"creativeMetadata": {
"additionalInfo": null,
"event": null,
"brandedContent": null,
"rootResharedPost": null,
"isReshared": false,
"disclaimerLabel": null,
"byline": null,
"pageLikeCount": 125100,
"pageCategories": ["Sportswear Store"],
"countryIsoCode": "US",
"brazilTaxId": null,
"ecCertificates": [],
"pageProfilePictureUrl": "https://scontent.example/page.jpg"
},
"regionalRegulationData": null,
"advertiser": null,
"transparency": null,
"report": null,
"brandedContent": null,
"source": {
"mode": "monitor",
"query": "Example Sports",
"pageId": null,
"countries": ["US"],
"sourceUrl": "https://www.facebook.com/ads/library/?country=US&q=Example+Sports",
"rank": 1,
"reportDate": null,
"timePreset": null
},
"monitorStatus": "stopped",
"changedFields": ["isActive", "status", "endDate", "body", "media"],
"scrapedAt": "2026-08-11T08:04:00Z",
"raw": null
}

What data can you extract?

CategoryComplete field inventory
Row identityrecordType, resultType, id
Ad and advertiser identityadArchiveId, adId, adLibraryUrl, pageId, pageName, pageUrl
LifecycleisActive, status, startDate, endDate, daysRunning, totalActiveSeconds
Distributionplatforms, categories, targetedCountries
Spend and deliverycurrency, spend, impressions, reachEstimate
Creativebody, title, caption, description, ctaText, ctaType, destinationUrl, destinationDomain, displayFormat
Media and variantsmedia, cards, creativeVariants, creativeVariantCount, mediaCount, collation
Safety and metadatacontainsDigitalCreatedMedia, containsSensitiveContent, stateMediaRunLabel, adMetadata, creativeMetadata
Regulation and detailsregionalRegulationData, advertiser, transparency
Specialized workflowsreport, brandedContent
Provenance and monitoringsource, monitorStatus, changedFields, scrapedAt, raw

Nested ad metadata preserves FEV data, gated/hide status, report count, AAA eligibility, deleted-page status, user-report state, and menu items. Creative metadata preserves additional information, events, branded-content metadata, reshared posts, disclaimer/byline, page likes/categories, country, Brazil tax ID, EC certificates, and profile image. Transparency preserves insights, regional tables, verified-voice and financial-services data, violations, EU SIEP state, and AI-disclosure eligibility.

Input parameters

ParameterTypeRequiredDefaultDescription
modestringYessearchsearch, details, political, report, brandedContent, or monitor
searchQueriesstring[]Search/Political/Branded/Monitor['Nike']Keywords, exact phrases, creator names, or businesses; limit is per query
pageIdsstring[]No[]Numeric Facebook Page IDs, each used as an independent ad source
pageUrlsstring[]No[]Current Ads Library advertiser/search URLs
adArchiveIdsstring[]Details[]Numeric archive IDs or direct Ads Library URLs containing ?id=
startUrlsstring[]No[]Mixed public Ads Library search, advertiser, or direct-ad URLs
countriesstring[]No['US']ISO alpha-2 countries or ALL
languagestringNoen-USFacebook request locale
adTypestringNoALLAll, political/issues, housing, employment, credit, or financial-services ads
activeStatusstringNoallall, active, or inactive
searchTypestringNokeyword_unorderedUnordered keywords, exact phrase, or page matching
mediaTypestringNoallAll, image, meme, image+memes, video, or no image/video
publisherPlatformsstring[]No[]Facebook, Instagram, Audience Network, Messenger, WhatsApp, or Threads
contentLanguagesstring[]No[]Meta ad-content language filters
bylinesstring[]No[]Political-ad disclaimer/byline filters
regionsstring[]No[]Meta delivery-region filter values
dateFromstringNo-Minimum start date, YYYY-MM-DD
dateTostringNo-Maximum start date, YYYY-MM-DD
sortModestringNononeMeta order, impressions, reach, or recent
sortDirectionstringNodescdesc or asc
maxResultsintegerNo50Maximum ads per source, report advertisers, or profiles per query; 1-5,000
maxItemsintegerNo0Global deduplicated row limit; 0 disables the Actor-level limit
includeAdDetailsbooleanNofalseEnrich every search result with public transparency details
includeRawbooleanNofalsePreserve complete Meta source objects under raw
maxConcurrencyintegerNo3Parallel independent sources/details; 1-10
maxRequestRetriesintegerNo5Retry and proxy-rotation attempts; 1-10
reportCountrystringReportUSCountry used by Ad Library Report
reportDatestringNoRun dateReport snapshot date, YYYY-MM-DD
reportTimePresetstringNoLAST_30_DAYSYesterday, 7, 30, 90 days, or lifetime
reportQuerystringNo''Optional advertiser-name filter
reportSortColumnstringNoSPENDRank by SPEND or ADS
reportSortDescendingbooleanNotrueHighest report values first
trackedPageIdsstring[]No[]Page IDs for the report spend tracker
includeReportDownloadsbooleanNotrueAdd report-snapshot availability and supported countries
brandedPlatformstringBrandedINSTAGRAMINSTAGRAM or FACEBOOK
brandedStartDatestringNo-Selected profile-page start date, YYYY-MM-DD
brandedEndDatestringNo-Selected profile-page end date, YYYY-MM-DD
monitorKeystringMonitorfacebook-ads-monitorStable persistent monitor identity
monitorBehaviorstringNonewAndChangedNew only, or new+changed+stopped+reactivated

Use cases

Competitor creative intelligence

Search competitor names and product terms, compare copy, CTAs, formats, landing domains, carousel cards, and creative variants, then schedule recurring exports.

Political and public-interest research

Combine Political mode with Report mode to study public messages, disclaimers, estimated delivery, advertiser spending, geographic distribution, and country-level rankings.

Compliance and advertiser due diligence

Use Details mode for public advertiser, payer/beneficiary, EU/UK/BR targeting, verified-voice, financial-services, and policy-violation fields when Meta publishes them.

Campaign monitoring

Run Monitor mode from an Apify schedule. Every stable monitorKey keeps independent state and emits meaningful new, changed, stopped, and reactivated records for webhooks or downstream alerts.

Lead and landing-page research

Export advertiser names, Page IDs, destination domains, creative messages, and active dates to enrich CRM, market-research, or agency prospecting workflows.

Performance and cost

This Actor uses pay-per-event billing. Check the Actor's Pricing tab for the current price of each event:

EventWhen it is charged
ad-resultOne stored non-enriched public ad
ad-detailOne stored ad with the detail/transparency request completed
report-recordOne stored overview, advertiser, location, or download-availability report row
branded-contentOne stored matched branded-profile row
ad-changeOne stored new, changed, stopped, or reactivated monitor row

No event is charged for a failed request, a retry, a duplicate discarded before storage, or a zero-result source. Detail enrichment increases requests and runtime. Report mode makes several section requests, and includeRaw increases dataset storage. maxConcurrency=2 or 3 is a practical starting point for stability; measured run times and costs depend on Meta response speed, filters, countries, and result volume.

API usage

Replace YOUR_USERNAME with the published Actor owner name:

curl -X POST \
"https://api.apify.com/v2/acts/YOUR_USERNAME~facebook-ads-library-scraper/runs?token=APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"mode": "search",
"searchQueries": ["running shoes"],
"countries": ["US"],
"maxResults": 25
}'

Use the dataset with Google Sheets, Make, Zapier, n8n, Airbyte, webhooks, Slack, an Apify schedule, or your data warehouse.

Best for / not for

Best for: public ad discovery, competitor research, complete creative extraction, political-ad analytics, public regulatory transparency, advertiser rankings, and scheduled change detection.

Not for: private profiles, account-only data, personal targeting identities, ad creation or modification, CAPTCHA solving, private Meta API access, or guaranteed historical coverage beyond what Meta currently publishes.

Limits and good to know

  • One mode runs per Actor run; Search/Political can include Details enrichment.
  • maxResults is per independent query, Page ID, or search URL; maxItems is global after deduplication.
  • Meta decides which countries, historical ads, spend ranges, audience fields, media URLs, and regulatory details are publicly available.
  • Branded Content mode currently resolves the public creator/business profiles exposed by Meta's logged-out typeahead and selected profile page; it does not claim account-only partnership posts.
  • Report dates and downloadable snapshots can lag behind the current date and differ by country.
  • Media URLs are source URLs and can expire; download them promptly if your workflow needs durable copies.
  • The Actor retries temporary rate limits, blocked proxy sessions, timeouts, server failures, and stale persisted-query IDs. Independent failed sources do not erase successful results.
  • Current persisted-query IDs and anonymous bootstrap fields are discovered at runtime; captured tokens, cookies, or user credentials are not embedded.
  • The production Actor always uses Apify Residential Proxy. There is no proxy field in the public input.

Frequently asked questions

Do I need a Facebook account or Meta API token?

No. The Actor uses only public, logged-out Ads Library pages. Meta may still limit availability by country, ad category, or source state.

Can I search several brands and countries in one run?

Yes. Add up to 100 queries/Page IDs/URLs. maxResults applies to each independent source before global deduplication and maxItems.

Why are spend, impressions, audience, or transparency fields empty?

Meta publishes those fields mainly for regulated or region-specific ads. Normal commercial ads often expose complete creatives and status but no spend or audience range.

Yes. It preserves top-level media, carousel cards, and extra text/link/media variants instead of returning only the first visible creative.

Can I monitor ads continuously?

Use Monitor mode with the same monitorKey on an Apify schedule. The Actor compares stable ad snapshots and emits new, changed, stopped, or reactivated ads according to monitorBehavior.

Why did a run return fewer results than the limit?

The limit is a maximum. Meta can return fewer public matches, end pagination, remove ads, restrict a category, or temporarily rate-limit a source. Duplicate archive IDs are stored once.

Do I need to configure a proxy?

No. Apify Residential Proxy is mandatory and configured internally for every production request.

Responsible use

This Actor extracts publicly available Ads Library information. Users are responsible for complying with applicable laws, privacy and election regulations, contractual obligations, and Meta's terms. Do not use the output to infer sensitive personal attributes or target individuals.

Facebook, Instagram, Meta, and Ads Library are trademarks of Meta Platforms, Inc. This Actor is independent and is not affiliated with, endorsed by, or sponsored by Meta.

Support

If you encounter a problem, create an issue in the Actor's Issues tab. Include the run ID, mode, country, and a non-sensitive reproducible query, Page ID, or public ad archive ID. Never include proxy credentials, cookies, or private account data.