Facebook Ads Library Scraper

Scrape public Meta/Facebook Ads Library ads by keyword, page, country, status, and media for competitive ad intelligence.

Data fields

FieldTypeDescription
querystring | nullValue exported as query.
countrystringValue exported as country.
advertiserNamestring | nullValue exported as advertiserName.
advertiserPageUrlstring | nullValue exported as advertiserPageUrl.
libraryIdstring | nullValue exported as libraryId.
adStatusstring | nullValue exported as adStatus.
startedAtstring | nullValue exported as startedAt.
endedAtstring | nullValue exported as endedAt.

Input preview

queryKeyword query
advertiserPageUrlAdvertiser page URL
pageIdAdvertiser page ID
countryCountry
activeStatusAd status
adTypeAd type

API and agents

This actor can be run through Apify API, datasets, webhooks, schedules, and the official Apify MCP server.

How this actor works

See example inputs, outputs, API usage, and practical limits before running this actor on Apify.

Open Apify page

Track public Meta and Facebook ads without building your own browser automation. This actor searches the public Meta Ads Library by keyword or advertiser page and saves structured ad records for competitive intelligence, brand monitoring, market research, and reporting workflows.

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.
  • 🏢 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.
  • 🖼️ Filter by media type when Meta exposes the option.
  • 📦 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?

Field Description
query Keyword used for the run, when keyword mode is used.
country Country filter used for the search.
advertiserName Advertiser or page name visible on the ad card.
advertiserPageUrl Public advertiser page URL when exposed.
libraryId Meta Ads Library ID for the public ad.
adStatus Active or inactive status when visible.
startedAt Start date text when visible.
endedAt End date text when visible.
platforms Meta platforms detected in the card text.
adText Main visible ad copy.
caption Optional caption field.
adTitle Short visible title/headline when detected.
creativeType Image, video, or unknown.
imageUrls Creative image URLs when exposed in the page.
videoUrls Creative video URLs when exposed in the page.
landingUrl Destination URL when visible.
snapshotUrl Meta Ads Library snapshot URL.
sourceUrl Ads Library search URL used for extraction.
scrapedAt ISO timestamp when the item was scraped.

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 options

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.

Country

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

Ad status

Choose one of:

  • active
  • inactive
  • all

Ad type

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

Media type

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 controls how many records are saved. Start with 10 and increase gradually.

Proxy configuration

Leave proxy settings 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.

Example input

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

Example output

{
  "query": "coffee",
  "country": "US",
  "advertiserName": "Example Coffee",
  "advertiserPageUrl": "https://www.facebook.com/example",
  "libraryId": "1234567890",
  "adStatus": "Active",
  "startedAt": "Jan 1, 2026",
  "endedAt": null,
  "platforms": ["Facebook", "Instagram"],
  "adText": "Try our new roast today.",
  "caption": null,
  "adTitle": "New roast",
  "creativeType": "image",
  "imageUrls": ["https://..."],
  "videoUrls": [],
  "landingUrl": "https://example.com",
  "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 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.

Support

If you need a field that appears in the Ads Library page but is missing from the dataset, open an issue with a sample run and the public ad snapshot URL.

Common questions

Questions and answers reused from the canonical actor README.

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.