Meta Ads Library Scraper (Pay per Event)
Pricing
from $1.00 / 1,000 results
Meta Ads Library Scraper (Pay per Event)
Scrape Meta Ad Library by keyword or Facebook page URL. Get ad text, CTA, headlines, platforms, languages, targeting, reach data, and delivery dates. Supports all countries, languages, and filters. Works with any Ad Library search URL. Lightning fast, structured JSON output.
Pricing
from $1.00 / 1,000 results
Rating
0.0
(0)
Developer
Eimantas V
Actor stats
1
Bookmarked
37
Total users
23
Monthly active users
10 days ago
Last modified
Categories
Share
Meta Ads Library Scraper
Apify Actor that scrapes the Meta Ad Library. Search by keyword, paste Facebook page URLs, or use Ad Library URLs with filters — get structured ad data back.
What data you get
- Ad text — full ad copy (multiple creative variations if applicable)
- CTA captions & headlines — call-to-action text and link preview titles
- Publisher platforms — facebook, instagram, messenger, audience_network, threads
- Languages — detected ad languages
- Dates & status — creation date, delivery start/stop dates, active or inactive
- Targeting — target ages, gender, locations (UK & EU ads)
- Reach breakdown — age/country/gender reach data (UK & EU ads)
- Impressions — impression count ranges (political/issue ads only)
- Ad snapshot URL — direct link to view the ad in the Ad Library
- Advertiser info — page name, page ID, page URL
Input
Search Queries / Keywords
Search across all ads by keyword. Keywords are matched against ad text, images, and CTA buttons.
Loop EarplugsNike running shoesAG1 supplement
You can also paste full Ad Library URLs here — all filters from the URL are preserved:
https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=Loop+Earplugshttps://www.facebook.com/ads/library/?active_status=active&content_languages[0]=en&publisher_platforms[0]=instagram&publisher_platforms[1]=facebook&view_all_page_id=15087023444&media_type=image
Supported URL parameters: q, view_all_page_id, content_languages[N], publisher_platforms[N], media_type, active_status, country, search_type.
Page URLs (max 10)
Facebook page URLs to scrape all ads from. The page ID is automatically resolved from the page HTML.
https://www.facebook.com/nikehttps://www.facebook.com/SHEIN/https://www.facebook.com/profile.php?id=123456789
You can provide up to 10 page URLs (API limit for search_page_ids).
Filter parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
| Max Results | integer | 50 | Maximum number of ads to return (across all inputs combined) |
| Only Total Count | boolean | false | Return only the count of matching ads — no ad data fetched |
| Keyword Match Type | select | Unordered | KEYWORD_UNORDERED treats each word independently and finds ads containing all words in any order. KEYWORD_EXACT_PHRASE matches the exact phrase — separate multiple phrases with commas to match all of them |
| Delivery Date From | string | — | Only return ads delivered after this date (inclusive). Format: YYYY-MM-DD |
| Delivery Date To | string | — | Only return ads delivered before this date (inclusive). Format: YYYY-MM-DD |
| Publisher Platforms | multi-select | (all) | Filter by platform: Facebook, Instagram, Audience Network, Messenger, WhatsApp, Oculus, Threads |
| Active Status | select | ALL | ALL, ACTIVE, or INACTIVE. Overridden if already set in an Ad Library URL |
| Countries | multi-select | US | Countries where ads were delivered. 250+ supported |
| Languages | multi-select | (all) | Filter by language: English, Spanish, French, etc. (80+ languages) |
| Proxy Configuration | object | disabled | Optional proxy configuration |
Example input
{"searchQueries": ["Loop Earplugs"],"pageUrls": ["https://www.facebook.com/nike","https://www.facebook.com/SHEIN/"],"maxResults": 100,"activeStatus": "ACTIVE","countries": ["US"],"searchType": "KEYWORD_UNORDERED"}
Output
Each ad is pushed as a separate item to the default dataset:
{"adId": "1926905081295969","adArchiveId": "1926905081295969","adCreationTime": "2026-03-28","advertiserName": "AG1 by Athletic Greens","advertiserPageId": "130735813680498","advertiserPageUrl": "https://www.facebook.com/130735813680498","adText": "AG1 is the daily supplement trusted by thousands. One scoop covers your bases with 75 vitamins, minerals and whole food sourced nutrients.","ctaCaption": "drinkag1.com","headline": "AG1 Supplement by Athletic Greens","description": "Try AG1 and get a free Welcome Kit with your first order.","publisherPlatforms": ["facebook","instagram","audience_network","messenger"],"languages": ["en"],"startDate": "2026-03-29","endDate": "","isActive": true,"impressions": null,"snapshotUrl": "https://www.facebook.com/ads/library/?id=1926905081295969","ageCountryGenderReachBreakdown": [{"country": "US","age_gender_breakdowns": [{"age_range": "25-34","male": 1200,"female": 980},{"age_range": "35-44","male": 850,"female": 720}]}],"bylines": "","targetAges": ["25", "65"],"targetGender": "All","targetLocations": [{"name": "United States","num_obfuscated": 0,"type": "countries","excluded": false}],"euTotalReach": null,"beneficiaryPayers": null,"scrapedAt": "2026-04-08T11:15:36.400Z"}
Output fields
| Field | Type | Description |
|---|---|---|
adId | string | Unique ad identifier (Library ID) |
adArchiveId | string | Same as adId |
adCreationTime | string | Date the ad was created |
advertiserName | string | Name of the Facebook page running the ad |
advertiserPageId | string | Numeric page ID |
advertiserPageUrl | string | Link to the advertiser's Facebook page |
adText | string | Full ad creative body text (multiple variations joined with newlines) |
ctaCaption | string | CTA link caption (e.g. domain name) |
headline | string | Link preview headline |
description | string | Link preview description |
publisherPlatforms | string[] | Platforms the ad runs on (facebook, instagram, messenger, audience_network, threads) |
languages | string[] | Detected ad languages (ISO 639-1 codes) |
startDate | string | Delivery start date |
endDate | string | Delivery end date (empty if still active) |
isActive | boolean | Whether the ad is currently running |
impressions | object/null | Impression count range ({lowerBound, upperBound}). Only available for political/issue ads. Returns null for commercial ads |
snapshotUrl | string | Link to view the ad in the Ad Library |
ageCountryGenderReachBreakdown | array/null | Reach by age, country, and gender. Available for UK & EU ads and political ads in Brazil |
targetAges | string[] | Targeted age range. Available for UK & EU ads |
targetGender | string | Targeted gender (Women, Men, or All). Available for UK & EU ads |
targetLocations | array/null | Targeted locations with inclusion/exclusion. Available for UK & EU ads |
bylines | string | "Paid for by" disclosure. Available for political/issue ads only |
euTotalReach | number/null | Estimated reach across the EU. Available for EU ads only |
beneficiaryPayers | array/null | Beneficiary and payer info. Available for EU ads only |
scrapedAt | string | ISO timestamp when the data was collected |