Facebook Ads Library Scraper & Ad Intelligence avatar

Facebook Ads Library Scraper & Ad Intelligence

Pricing

from $0.28 / 1,000 item extracteds

Go to Apify Store
Facebook Ads Library Scraper & Ad Intelligence

Facebook Ads Library Scraper & Ad Intelligence

Export public Meta/Facebook ads by keyword, advertiser, or Ads Library URL. Filter by country, status, date, platform, language, and media; capture creative URLs, CTA, landing pages, page metadata, and public transparency ranges.

Pricing

from $0.28 / 1,000 item extracteds

Rating

0.0

(0)

Developer

Hanna Nosova

Hanna Nosova

Maintained by Community

Actor stats

0

Bookmarked

5

Total users

4

Monthly active users

11 days ago

Last modified

Share

Facebook Ads Library Scraper

Export public Meta and Facebook ads without building your own browser automation. Search by keyword, advertiser/page, or a full Ads Library URL; filter by country, status, date, placement, language, and media; and save structured creative intelligence for monitoring, research, and reporting.

Use it to collect public ad copy, advertiser names, library IDs, status, delivery dates, platforms, creative media URLs when exposed, landing links, and snapshot links from Facebook Ads Library.

What does Facebook Ads Library Scraper do?

Facebook Ads Library Scraper helps you turn public ad search pages into a clean dataset.

  • ๐Ÿ”Ž Search public ads by keyword such as a brand, product, category, or campaign topic.
  • ๐Ÿ”— Paste full Ads Library URLs to preserve filters created in Meta's interface.
  • ๐Ÿข Search advertiser/page ads when you have a Facebook Page ID or supported page URL.
  • ๐ŸŒ Filter by country code such as US, GB, DE, or FR.
  • โœ… Choose active, inactive, or all public ads.
  • ๐ŸŽฏ Choose exact-phrase or unordered keyword matching, Meta placements, and ad languages.
  • ๐Ÿ–ผ๏ธ Capture complete image/video arrays and a URL-only downloadable-media manifest, including dynamic creative variants exposed by Meta.
  • ๐Ÿ“Š Extract CTA, page/about metadata, and public spend, reach, impressions, and currency ranges when visible.
  • ๐Ÿ”— Optionally enrich public landing pages with redirects, metadata, product/price, and ecommerce indicators.
  • ๐Ÿงฑ Enforce date and global item caps before item billing; null, blocked, handled-error, and unverifiable out-of-range rows are never emitted as paid items.
  • ๐Ÿ“ฆ Export results as JSON, CSV, Excel, XML, RSS, or through the Apify API.

Who is it for?

This actor is useful for teams that need public ad intelligence at repeatable intervals.

  • ๐Ÿ“ฃ Marketing teams tracking competitor messaging.
  • ๐Ÿงช Growth teams testing positioning across markets.
  • ๐Ÿงพ Agencies preparing client competitor reports.
  • ๐Ÿ›ก๏ธ Brand monitors watching impersonation or risky ad claims.
  • ๐ŸŽ“ Researchers studying public advertising trends.
  • ๐Ÿงฐ Data teams feeding ad examples into dashboards and AI workflows.

Why use it?

The Meta Ads Library website is built for browsing. It is not convenient when you need a repeatable table of public ads. This actor packages the workflow into an Apify actor so you can schedule it, call it from an API, and combine the output with the rest of your data stack.

What data can you extract?

FieldDescription
queryKeyword used for the run, when keyword mode is used.
runTagOptional user label copied to every row for downstream routing.
countryCountry filter used for the search.
advertiserNameAdvertiser or page name visible on the ad card.
advertiserPageUrlPublic advertiser page URL when exposed.
advertiserPageId / pageMetadataPublic page ID plus visible name, URL, profile image, category, follower/like, and disclaimer metadata.
libraryIdMeta Ads Library ID for the public ad.
creativeVariantIdDeterministic dedupe key for one library ID + creative variant.
adStatusActive or inactive status when visible.
startedAtStart date text when visible.
endedAtEnd date text when visible.
platformsMeta platforms detected in the card text.
adTextMain visible ad copy.
captionOptional caption field.
adTitle / callToActionVisible headline and CTA when detected.
creativeTypeImage, video, mixed, or unknown.
imageUrls / videoUrlsDeduplicated creative asset arrays.
creativeVariants / mediaManifestVariant-aware asset groups plus downloadable URLs, type, extension, and optional reachability status. No media binary is stored by default.
spend / reach / impressions / currencyPublic transparency ranges when Meta exposes them.
landingUrl / landingPageDestination URL and optional landing-page/ecommerce enrichment.
diagnosticsPer-item partial/missing-field and date-verification details. Run-level source, retry, block, deadline, cap, and rejection counts are saved in RUN_SUMMARY and the backward-compatible OUTPUT record.
snapshotUrlMeta Ads Library snapshot URL.
sourceUrlAds Library search URL used for extraction.
scrapedAtISO timestamp when the item was scraped.

Pricing

This Actor uses pay-per-event pricing. One start event is charged after valid input is confirmed, then the item event is charged only for valid ad records saved to the dataset. Prices match the Actor configuration; your Apify plan determines the item tier.

EventFreeBronzeSilverGoldPlatinumDiamond
Run start$0.005$0.005$0.005$0.005$0.005$0.005
1,000 saved ads$0.53550$0.46565$0.36321$0.27939$0.18626$0.13038

Apify may separately charge for platform compute, storage, proxy traffic, or data transfer. Start with the default maxItems: 10, verify the dataset, and then scale.

Quick start

  1. Open the actor on Apify.
  2. Enter a keyword such as coffee or a known advertiser page ID.
  3. Choose a country such as US.
  4. Keep maxItems low for the first run.
  5. Start the actor.
  6. Download the dataset or call it through the API.

Input settings

Input labelJSON keyDescription
Keyword queryquerySearch term; separate multiple terms with commas or new lines.
Ads Library URLsstartUrlsFull public Ads Library URLs; takes precedence over query/page inputs.
Advertiser page URLadvertiserPageUrlPublic Facebook advertiser Page URL.
Advertiser page IDpageIdNumeric Facebook Page ID for advertiser mode.
Keyword matchingsearchTypeWords in any order or exact phrase.
CountrycountryTwo-letter Ads Library country code.
Ad statusactiveStatusActive, inactive, or all ads.
Ad typeadTypeAll ads or political and issue ads.
Media typemediaTypeFilter by image, video, meme, or no media.
PlatformsplatformsOptional Facebook, Instagram, Messenger, Audience Network, Threads, or WhatsApp placements.
LanguageslanguagesOptional Meta ad-language codes.
Start datestartDateOptional delivery-date lower bound (YYYY-MM-DD).
End dateendDateOptional delivery-date upper bound (YYYY-MM-DD).
Maximum adsmaxItemsHard global cap on valid, billed creative variants.
Enrich landing pagesenrichLandingPagesAdd public landing-page and ecommerce metadata.
Validate creative media URLsvalidateMediaUrlsCheck media-manifest URL reachability.
Safe run deadlinemaxRunSecondsStop opening sources early enough to preserve saved results.
Run tagrunTagOptional label copied to each row for spreadsheets and pipelines.
Proxy configurationproxyConfigurationOptional Apify Proxy settings.

Keyword query

Use query to search public ads by text. Enter one keyword, or separate multiple keywords with commas/new lines when you want one combined export. Examples:

  • nike
  • coffee
  • running shoes
  • meal delivery
  • coffee, nike, travel

Advertiser page URL or page ID

Use pageId when you know the numeric Facebook Page ID. Some page URLs also contain an ID and can be passed as advertiserPageUrl.

Full Ads Library URLs

Use startUrls when you already configured a search in Meta Ads Library. This is also the most flexible way to carry filters Meta adds to its public URL. Only facebook.com/ads/library/ URLs are accepted.

Country

Use a two-letter Ads Library country code. The default is US.

Ad status

Set activeStatus to one of:

  • active
  • inactive
  • all

Ad type

The adType default is all. Political and issue ads are available through the dedicated option where supported by Meta.

Media type

Set mediaType to choose all media, image, video, memes, image and meme, or no-media results.

Date range

Use optional startDate and endDate in YYYY-MM-DD format when you need a delivery date window.

Maximum ads

maxItems is a hard global cap across all queries. It is applied after date validation and creative-variant dedupe but before dataset write/item billing.

Optional landing-page and media validation

Set enrichLandingPages: true to fetch public destinations and add final URL, HTTP status, title, description, canonical URL, ecommerce detection, product name, price, and currency. Set validateMediaUrls: true to make lightweight HEAD requests and annotate each media-manifest URL with reachability/status. Both are off by default to minimize requests.

Proxy configuration

Leave proxyConfiguration empty for direct access. If Meta shows verification or empty pages for your run, enable Apify Proxy and choose the lowest-cost proxy group that works for your target country.

Ready-to-run examples

Use these public Store examples as starting points:

Example input

{
"query": "coffee",
"country": "US",
"activeStatus": "active",
"adType": "all",
"mediaType": "all",
"maxItems": 10,
"enrichLandingPages": false,
"validateMediaUrls": false
}

Example output

{
"query": "coffee",
"country": "US",
"advertiserName": "Example Coffee",
"advertiserPageUrl": "https://www.facebook.com/example",
"libraryId": "1234567890",
"creativeVariantId": "variant_6df4d9a1",
"pageMetadata": { "pageId": "987654321", "name": "Example Coffee" },
"adStatus": "Active",
"startedAt": "Jan 1, 2026",
"endedAt": null,
"platforms": ["Facebook", "Instagram"],
"adText": "Try our new roast today.",
"caption": null,
"adTitle": "New roast",
"callToAction": "Shop now",
"creativeType": "image",
"imageUrls": ["https://cdn.example/creative.jpg"],
"videoUrls": [],
"creativeVariants": [{ "variantId": "variant_6df4d9a1", "imageUrls": ["https://cdn.example/creative.jpg"], "videoUrls": [] }],
"mediaManifest": [{ "url": "https://cdn.example/creative.jpg", "type": "image", "fileExtension": "jpg", "reachable": null }],
"spend": { "lower": 100, "upper": 199, "text": "$100-$199" },
"reach": { "lower": 1000, "upper": 5000, "text": "1K-5K" },
"impressions": null,
"currency": "USD",
"landingUrl": "https://example.com",
"landingPage": null,
"diagnostics": { "partial": false, "missingFields": [], "dateVerified": false },
"snapshotUrl": "https://www.facebook.com/ads/library/?id=1234567890",
"sourceUrl": "https://www.facebook.com/ads/library/...",
"scrapedAt": "2026-07-03T00:00:00.000Z"
}

Tips for better results

  • Use specific brand or product terms instead of very broad terms.
  • Match the country to the market you are researching.
  • Use active for current competitive monitoring.
  • Use all when building historical examples.
  • Increase maxItems only after a small run succeeds.
  • Keep separate runs for different brands so exports stay easy to compare.

Scheduling

You can schedule the actor in Apify to run daily, weekly, or monthly. Common schedules include:

  • Daily brand monitoring.
  • Weekly competitor ad review.
  • Monthly creative swipe-file export.
  • Campaign launch monitoring during a specific date range.

Integrations

Use the dataset output with:

  • Google Sheets exports for quick reporting.
  • BI dashboards for competitor trend tracking.
  • Slack or email alerts through Apify integrations.
  • Webhooks that trigger when a run finishes.
  • Data warehouses through Apify API calls.
  • AI analysis pipelines that summarize ad themes.

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('fetch_cat/facebook-ads-library-scraper').call({
query: 'coffee',
country: 'US',
activeStatus: 'active',
maxItems: 10,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient('YOUR_APIFY_TOKEN')
run = client.actor('fetch_cat/facebook-ads-library-scraper').call(run_input={
'query': 'coffee',
'country': 'US',
'activeStatus': 'active',
'maxItems': 10,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
print(items)

cURL

curl -X POST 'https://api.apify.com/v2/acts/fetch_cat~facebook-ads-library-scraper/runs?token=YOUR_APIFY_TOKEN' \
-H 'Content-Type: application/json' \
-d '{"query":"coffee","country":"US","activeStatus":"active","maxItems":10}'

MCP usage

Use Apify MCP with Claude Desktop or Claude Code to run the actor from natural language prompts.

MCP URL:

https://mcp.apify.com?tools=fetch_cat/facebook-ads-library-scraper

Claude Code setup:

$claude mcp add --transport http apify-facebook-ads-library https://mcp.apify.com?tools=fetch_cat/facebook-ads-library-scraper

Claude Desktop JSON config:

{
"mcpServers": {
"apify-facebook-ads-library": {
"url": "https://mcp.apify.com?tools=fetch_cat/facebook-ads-library-scraper"
}
}
}

Example prompts:

  • "Run Facebook Ads Library Scraper for coffee ads in the US and summarize the top messages."
  • "Collect 20 active ads for this advertiser page ID and group the copy themes."
  • "Compare Facebook and Instagram platform mentions in the latest dataset."

Legality

Facebook Ads Library Scraper is intended for public ad transparency data. Use the actor responsibly, respect applicable laws and platform rules, and avoid collecting private account data or attempting to bypass access controls.

This actor is designed for public Ads Library data. Do not use it to collect private account data, bypass access controls, or violate Meta's terms. Review your use case, jurisdiction, and compliance obligations before using scraped data in production.

Troubleshooting

The run returns no ads

The query may have no public ads in the selected country/status combination. Try a broader keyword, a different country, or activeStatus: all.

Meta shows verification

Try Apify Proxy, lower maxItems, or run again later. Verification pages can happen on public sites with automated traffic.

Advertiser page URL does not work

Use a numeric pageId if the URL does not contain one. Vanity page URLs do not always expose a numeric ID.

Limits

  • This actor does not log in to Facebook.
  • Some fields are only saved when visible in the public card.
  • Creative URLs may expire or vary by region.
  • Very broad searches may require multiple runs split by country or date range.
  • The default 2 GB memory allocation provides headroom for Meta's browser-heavy public interface; lowering task memory can make broad searches less reliable.

Privacy and data handling

This Actor uses your URLs, search terms, identifiers, filters, and limits only to fetch the requested public Ads Library data and write results to your Apify dataset and key-value store. It does not accept Facebook passwords or store login credentials.

Data may pass through Apify platform services and Apify Proxy during a run. FetchCat does not send inputs or outputs to advertising networks, data brokers, or model-training services, and does not retain run data outside Apify storage unless you explicitly share a run for transient support debugging.

You are responsible for using the Actor lawfully, respecting applicable terms, and reviewing public output before storing, sharing, or combining it with other data.

Explore related actors from the same catalog:

Support

If you need a field that appears in the Ads Library page but is missing from the dataset, open an issue and include:

  • The Apify run ID or run URL.
  • The exact input JSON, with secrets removed.
  • The expected output.
  • The actual output the dataset returned.
  • A reproducible public URL, such as the public ad snapshot or Ads Library search URL.

FAQ

Can I scrape inactive ads?

Yes. Set activeStatus to inactive or all.

Can I use it without a Facebook account?

Yes. The actor is designed for public Ads Library pages and does not accept credentials.

Can I run it every day?

Yes. Use Apify schedules and keep inputs focused for predictable costs.

Does it include Instagram ads?

When Meta exposes platform labels on the ad card, the platforms field can include Instagram.

Can I export to CSV?

Yes. Apify datasets can be downloaded as CSV, JSON, Excel, XML, RSS, and HTML.