Meta Ads Library Scraper 📣 $0.75/1k avatar

Meta Ads Library Scraper 📣 $0.75/1k

Pricing

from $0.68 / 1,000 ads

Go to Apify Store
Meta Ads Library Scraper 📣 $0.75/1k

Meta Ads Library Scraper 📣 $0.75/1k

Collect structured Meta and Facebook ad data from Ad Library searches and advertiser Page URLs. Very high data coverage: up to 48 fields are available for each ad.

Pricing

from $0.68 / 1,000 ads

Rating

0.0

(0)

Developer

123 Webdata

123 Webdata

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Share

Meta Ads Library Scraper

Collect live and historical ads from Meta's public Ad Library. Scrape keyword searches, Ad Library filters, and ads run by specific Facebook Pages. The Actor returns structured ad, advertiser, creative, spend, reach, transparency, and regional-registration data without opening an ad page in a browser.

Issues and feature requests

If you encounter an issue or need a field added, open an issue on the Actor page or write to hello@123webdata.com.

For custom requirements, contact 123 Web Data.

Output example (simplified)

AdvertiserAdActiveStartedPlatformsCurrencyPosition
Nikehttps://www.facebook.com/ads/library/?id=1550534860016399true2024-03-04 12:00:00FACEBOOK, INSTAGRAMUSD1

Every row also contains the complete Meta creative snapshot and the other declared fields listed below.

How to scrape the Meta Ad Library

  1. Open Meta Ad Library.
  2. Choose a country, ad category, active status and any keyword or filters.
  3. Copy the final URL from the address bar.
  4. Paste one or more URLs into Ad Library URLs.

Example search URL:

https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=nike

The Actor sends supported search filters from the pasted URL to Meta's own JSON search endpoint. It does not reject a URL because of its locale, regional hostname, path, query names, filter combination, or pagination state. Unsupported or inaccessible page shapes are reported in the run status and recorded in the Actor's support notes.

Scrape advertiser Pages

Paste Facebook Page or advertiser URLs into Advertiser Page URLs. Vanity names, numeric IDs, profile.php?id= URLs and regional hostnames are accepted.

https://www.facebook.com/depop
https://www.facebook.com/profile.php?id=156405867784232

Optional Page filters control active status, date period, sort order and country for advertiser Page runs.

Collect creative details

Enable Include ad details to make an additional JSON request for each emitted ad. This adds advertiser registration, AAA eligibility, violation, verification and location-transparency data. Leave it disabled for faster, lower-cost runs.

Pagination and limits

Enable Use pagination to follow Meta's result cursor until a limit is reached. Disable it to collect only the first result page. Maximum ads per source applies to each URL. Maximum ads to save is the global cap across all URLs.

Pricing

This Actor uses pay-per-event pricing. Its running costs are included.

  • Actor start: $0.015 per GB. The default 2 GB memory allocation charges $0.03 once per run.
  • Ad: $0.00075 each ($0.75 per 1,000). One event is charged for each saved unique ad.
Ads in one runAdsActor startTotal
100$0.075$0.03$0.105
1,000$0.75$0.03$0.78

Apify's Free plan currently includes $5 in monthly usage credits. If the full $5 is available for this Actor, one run covers about 6,600 ads after the start charge. Other Apify usage reduces the available credit.

Input

FieldTypeDescription
adLibraryUrlsarrayMeta Ad Library search and filter URLs
advertiserPageUrlsarrayFacebook advertiser or Page URLs
maxTotalResultsintegerMaximum ads saved across every source
maxResultsPerSourceintegerMaximum ads saved from each source
scrapeAdDetailsbooleanAdd the detail-only fields listed below
usePaginationbooleanFollow Meta cursors beyond the first result page
pageAdFiltersobjectActive status, period, sort order and country for advertiser Pages
proxyConfigurationobjectOptional Apify Residential proxy controls, including countryCode
runTagstringOptional label copied unchanged to every row

The Actor always requires Apify Residential proxy because Meta applies stricter limits to datacenter traffic.

What data you get in each mode

Every saved ad is one record. A unique ad is charged once.

Standard result

The standard result contains:

ad_archive_id, ad_id, collation_count, collation_id, is_active, page_id, page_is_deleted, page_name, snapshot, has_user_reported, report_count, menu_items, state_media_run_label, impressions_with_index, gated_type, categories, is_aaa_eligible, contains_digital_created_media, reach_estimate, currency, spend, start_date, end_date, start_date_formatted, end_date_formatted, publisher_platform, targeted_or_reached_countries, contains_sensitive_content, total_active_time, regional_regulation_data, hide_data_status, fev_info, url, ad_library_url, total, position, runTag, ads_count, scraped_at

Page-scoped searches also include pageInfo.

Detailed result

Include ad details adds:

advertiser, aaa_info, insights, violation_types, verified_voice_context, transparency_by_location, is_siep_advertiser_eligible_for_ai_disclosure, is_violating_eu_siep

Creative text, titles, calls to action, links, cards, images and videos remain in the nested snapshot object exactly as Meta returns them.

Output example (full)

{
"ad_archive_id": "1550534860016399",
"collation_count": null,
"collation_id": null,
"is_active": true,
"page_id": "115939511520844",
"page_is_deleted": false,
"page_name": "Nike",
"snapshot": {
"body": {
"text": "Example ad copy"
},
"title": "Example title",
"cta_text": "Shop now",
"link_url": "https://www.nike.com/",
"images": [],
"videos": [],
"cards": []
},
"publisher_platform": [
"FACEBOOK",
"INSTAGRAM"
],
"start_date": 1709553600,
"end_date": 1712232000,
"start_date_formatted": "2024-03-04 12:00:00",
"end_date_formatted": "2024-04-04 12:00:00",
"currency": "USD",
"url": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=nike",
"ad_library_url": "https://www.facebook.com/ads/library/?id=1550534860016399",
"total": 10000,
"position": 1,
"runTag": "campaign-2026-10",
"ads_count": 1,
"scraped_at": "2026-10-23T16:00:00.000Z"
}

Use cases

  • Monitor ads by competitor, brand or Facebook Page
  • Research creative and copy across markets
  • Build political, issue and regional-transparency datasets
  • Track active periods, spend ranges, impressions and reach
  • Compare placement and platform behavior
  • Create recurring ad-monitoring workflows through the Apify API

Limitations

  • Meta controls the data it exposes and can rate-limit requests across a residential address.
  • Some fields are valid only for political, issue, EU, UK or Brazil transparency datasets and are empty elsewhere.
  • Advertiser Page rows include the complete pageInfo object when Meta returns it in the Page JSON response. The current logged-out Page search can omit that auxiliary object; the ad rows remain complete, but the Actor does not fetch Page HTML merely to reconstruct it.
  • Exact spend and reach ranges depend on the country and ad category selected in the supplied URL.
  • The Actor follows Meta's cursors and limits; it does not invent additional ads after Meta stops returning pages.
  • A public Page URL can be valid while Meta still refuses its Page search. The exact limitation is recorded in the Actor's support documentation when observed.

Integrations

Use the Actor with the Apify API, JavaScript or Python clients, webhooks, schedules, Make, Zapier, Google Sheets, Airtable, BigQuery or your own data pipeline. Every ad is one dataset item for simple export and event billing.

Questions or custom integrations: hello@123webdata.com.