Meta Ad Library Advertiser Disclosure Scraper avatar

Meta Ad Library Advertiser Disclosure Scraper

Pricing

from $2.40 / 1,000 record scrapeds

Go to Apify Store
Meta Ad Library Advertiser Disclosure Scraper

Meta Ad Library Advertiser Disclosure Scraper

Search Meta Ad Library ads by keyword, advertiser page, country and ad type. Returns spend and impressions ranges, reach estimates, per-country reach, payer byline, state-media and AI-media disclosure flags, and creative-variant collation counts the standard scrapers omit.

Pricing

from $2.40 / 1,000 record scrapeds

Rating

0.0

(0)

Developer

BowTiedRaccoon

BowTiedRaccoon

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a month ago

Last modified

Categories

Share

Scrape the Meta Ad Library by keyword, advertiser page, country, and ad type. Returns the usual creative fields plus the disclosure layer most scrapers skip — spend and impressions ranges, reach estimates, per-country reach, payer byline, state-media and AI-generated-media flags, and creative-variant collation counts.


Meta Ad Library Advertiser Disclosure Scraper Features

  • Searches by free-text keyword or by a specific advertiser's Page ID
  • Filters by country, ad type (all ads, political and issue, housing, employment, financial products), and active status
  • Returns EU/political disclosure fields — spend range, impressions range, reach estimate, and per-country targeted/reached breakdown
  • Surfaces the payer byline on political and issue ads, plus state-media and AI-generated-media disclosure flags
  • Reports collation_count — how many near-identical creative variants Meta collapsed into one card, which most competing scrapers silently drop
  • Optionally pulls each advertiser's Page creation date from their public transparency panel, deduplicated across the run so you don't pay for the same lookup twice
  • Runs on any of Meta's 200+ Ad Library country scopes, not just the US

Who Uses Meta Ad Library Data?

  • Compliance and brand-safety teams — track political and issue ad spend, payer disclosures, and state-media labels across a watchlist of advertisers.
  • Competitive intelligence analysts — pull a competitor's full creative rotation, including how many variants Meta grouped under one ad.
  • Political and campaign researchers — monitor spend ranges, reach estimates, and per-country targeting on issue ads without manually clicking through the Ad Library UI.
  • Ad agencies — benchmark creative formats, CTAs, and landing pages across an industry, or check what a specific brand is currently running.
  • Trust and safety researchers — flag ads with report counts, gated types, and AI-generated-media disclosures.

How Meta Ad Library Advertiser Disclosure Scraper Works

  1. Give it one or more keywords, one or more advertiser Page IDs, or both, plus the countries and ad type you want.
  2. It runs one search per keyword/page × country combination and pulls every ad record from that search page.
  3. Each record is normalized into a flat row — dates, spend ranges, and reach estimates parsed out of Meta's raw text into usable numbers.
  4. If Page Transparency lookup is enabled, it adds one extra row per unique advertiser found, carrying their Page creation date.

Input

{
"keywords": ["nike"],
"countries": ["US"],
"adType": "all",
"activeStatus": "active",
"fetchPageTransparency": false,
"maxItems": 30
}
FieldTypeDefaultDescription
keywordsarray["nike"]Free-text keyword searches, matched against ad creative and advertiser name. Each keyword runs as a separate query per selected country. Provide this, pageIds, or both.
pageIdsarray[]Meta advertiser Page IDs to look up directly — every ad that page is running, instead of or alongside keyword search.
countriesarray["US"]Ad Library country scope(s) to search, from Meta's own 200+ country list (or ALL). Each selected country is a separate query.
adTypestringallall, political_and_issue_ads, housing_ads, employment_ads, or financial_products_and_services_ads.
activeStatusstringactiveactive, inactive, or all.
fetchPageTransparencybooleanfalseWhen enabled, adds one extra row per unique advertiser carrying their Page creation date (see Output below).
maxItemsinteger30Maximum number of records to return across all query combinations.

Political/issue ad search example — pulls the full EU/US disclosure layer:

{
"keywords": ["senate"],
"countries": ["US"],
"adType": "political_and_issue_ads",
"activeStatus": "all",
"maxItems": 100
}

Direct advertiser lookup with Page Transparency enrichment:

{
"pageIds": ["15087023444"],
"countries": ["US"],
"fetchPageTransparency": true,
"maxItems": 50
}

Meta Ad Library Advertiser Disclosure Scraper Output Fields

Ad records

{
"ad_archive_id": "1509773093567021",
"page_id": "112727500143177",
"page_name": "Whatnot",
"advertiser_byline": null,
"is_active": true,
"start_date": "2025-11-14T08:00:00.000Z",
"end_date": "2026-08-09T07:00:00.000Z",
"total_active_time_seconds": null,
"publisher_platforms": ["FACEBOOK", "INSTAGRAM", "MESSENGER"],
"display_format": "VIDEO",
"ad_creative_bodies": ["Yup, you can buy new outfits without breaking the bank. Save on fashion. Shop on Whatnot!"],
"ad_creative_link_titles": [],
"ad_creative_link_descriptions": [],
"link_url": "http://itunes.apple.com/app/id1488269261",
"cta_type": "INSTALL_MOBILE_APP",
"image_urls": [],
"video_urls": ["https://video-ord5-2.xx.fbcdn.net/..."],
"categories": ["UNKNOWN"],
"spend_lower_bound": null,
"spend_upper_bound": null,
"currency": null,
"impressions_lower_bound": null,
"impressions_upper_bound": null,
"reach_estimate": null,
"targeted_or_reached_countries": [],
"state_media_run_label": null,
"contains_digital_created_media": false,
"collation_id": "849763014216568",
"collation_count": null,
"gated_type": "ELIGIBLE",
"report_count": null,
"has_user_reported": false,
"page_profile_url": "https://www.facebook.com/RealWhatnot/",
"page_transparency_creation_date": null,
"page_transparency_admin_countries": [],
"page_transparency_previous_names": [],
"search_country": "US",
"search_query": "nike",
"scraped_at": "2026-08-10T04:31:56.126Z"
}
FieldTypeDescription
ad_archive_idstringMeta's Ad Library ID — the record's primary key. Null on advertiser-summary rows.
page_idstringAdvertiser's Facebook Page ID
page_namestringAdvertiser's Facebook Page name
advertiser_bylinestringDisclosed payer string ("Paid for by...") on political/issue ads
is_activebooleanWhether the ad is currently running
start_date / end_datestringISO date the ad began / stopped running
total_active_time_secondsintegerTotal time the ad has been active, when disclosed
publisher_platformsarrayfacebook, instagram, audience_network, messenger, threads
display_formatstringVIDEO, IMAGE, DCO, CAROUSEL, etc.
ad_creative_bodies / ad_creative_link_titles / ad_creative_link_descriptionsarrayAd copy text
link_urlstringThe ad's landing page
cta_typestringCall-to-action type (SHOP_NOW, LEARN_MORE, etc.)
image_urls / video_urlsarrayCreative media URLs
categoriesarrayMeta's ad category taxonomy, including political/issue flags
spend_lower_bound / spend_upper_boundnumberEU/political disclosure spend range
currencystringCurrency code for the spend range (political/issue ads)
impressions_lower_bound / impressions_upper_boundintegerImpressions range (political/issue ads)
reach_estimateintegerEstimated reach (political/issue ads)
targeted_or_reached_countriesarrayEU DSA per-country reach/targeting disclosure
state_media_run_labelstringState-controlled-media disclosure label, when present
contains_digital_created_mediabooleanAI/synthetic-media disclosure flag
collation_id / collation_countstring / integerAd-set grouping key and how many near-identical variants Meta collapsed into this record
gated_typestringMeta's eligibility/gating classification
report_count / has_user_reportedinteger / booleanUser report disclosure, when Meta discloses it
page_profile_urlstringURL of the advertiser's Facebook Page
page_transparency_creation_datestringOnly populated on advertiser-summary rows — see below
page_transparency_admin_countries / page_transparency_previous_namesarrayReserved fields — Meta discloses these only for a subset of pages, usually empty
search_country / search_querystringThe query this record came from
scraped_atstringISO timestamp when this record was scraped

Advertiser-summary rows (fetchPageTransparency: true)

When enabled, the run adds one extra row per unique advertiser, join it to the ad rows above on page_id:

{
"ad_archive_id": null,
"page_id": "15087023444",
"page_profile_url": "https://www.facebook.com/15087023444/",
"page_transparency_creation_date": "2008-05-21",
"search_country": "US",
"scraped_at": "2026-08-10T04:36:13.960Z"
}

Every other field on this row is null or an empty array — ad_archive_id being null is how you tell an advertiser-summary row apart from an ad row.


Resuming a large crawl

Every run emits a resumeCursor in its Output. If a large crawl stops before it finishes — because it hit maxItems, your spend cap (maxTotalChargeUsd), or was aborted — start a new run with the same input plus that resumeCursor to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.

  • You are not re-charged for records the earlier run already delivered.
  • Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its resumeCursor is no longer valid.
  • resumeCursor is opaque — supply it unmodified.

FAQ

How do I scrape the Meta Ad Library?

Meta Ad Library Advertiser Disclosure Scraper needs no account, login, or API key. Give it a keyword or advertiser Page ID and a country, and it returns every matching ad with the disclosure fields Meta attaches to it.

What data can I get from Meta's Ad Library?

Every field on an ad's card, plus the fields most scrapers leave behind — spend and impressions ranges, reach estimates, per-country targeting, payer byline, and creative-variant collation counts. Political and issue ads carry the full disclosure set; other ad types return the fields Meta discloses for them.

Can I filter by ad type or country?

Yes. adType filters to all ads, political and issue ads, housing ads, employment ads, or financial products ads. countries accepts any of Meta's 200+ Ad Library country scopes, and you can select more than one — each runs as its own query.

How much does Meta Ad Library Advertiser Disclosure Scraper cost to run?

Pay-per-result pricing, billed per ad record returned. maxItems caps total spend per run.

No. Keyword search alone works fine. A Page ID gets you every ad a specific advertiser is running, which is faster than guessing keywords when you already know who you're watching.


Need More Features?

Need custom fields, filters, or a different target site? File an issue or get in touch.

Why Use Meta Ad Library Advertiser Disclosure Scraper?

  • Disclosure fields included — spend ranges, impressions, reach, byline, and collation counts come standard, not as an add-on.
  • Honest about collation — reports how many creative variants Meta grouped under one card, so you know when a single result is hiding a bigger rotation.
  • Country-flexible — search any of Meta's 200+ Ad Library country scopes in one run, not just the US.