Facebook Ad Library Scraper - Active Ads & Creatives avatar

Facebook Ad Library Scraper - Active Ads & Creatives

Pricing

from $22.00 / 1,000 results

Go to Apify Store
Facebook Ad Library Scraper - Active Ads & Creatives

Facebook Ad Library Scraper - Active Ads & Creatives

Scrape Facebook's public Ad Library for any brand. Returns active ad count, per-creative text, CTA, start date, and platform mix (Facebook, Instagram, Messenger, Audience Network).

Pricing

from $22.00 / 1,000 results

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

5

Monthly active users

6 days ago

Last modified

Share

Facebook Ad Library Scraper

Scrape public Meta Ad Library results for brands, keywords, and ad categories. The actor talks to Meta Ad Library's public GraphQL surface directly, so it avoids browser rendering while still returning ad IDs, page details, creative text, CTA/link fields, media URLs, dates, and platform mix where Meta exposes the data.

Value prop

Meta's Ad Library is one of the most accessible public sources for seeing which ads are currently active for a brand or keyword. This actor packages that public Ad Library view into Apify dataset rows so growth teams, agencies, researchers, and compliance teams can monitor ad activity without manually searching the Library one brand at a time.

Best fit:

  • Growth teams tracking competitor creative angles and CTAs.
  • Agencies building swipe files and pitch research.
  • Brand teams auditing their own active ad inventory.
  • Researchers monitoring political, issue, housing, employment, or credit ads.
  • Compliance teams checking regulated ad categories.

What's new

  • Brand and keyword search against Meta Ad Library's public GraphQL responses.
  • Country filtering with ALL or ISO country codes such as US, IN, GB, CA, and AU.
  • Ad category targeting for all ads, political and issue ads, housing ads, employment ads, and credit ads where available.
  • Optional creative capture limit so you can run count-only checks or collect sample ads.

What data you get

FieldDescription
brandBrand or keyword searched
countryCountry filter applied, or ALL
adTypeAd category requested
urlMeta Ad Library search URL
activeWhether active matching ads were detected
adCountMatching ad count reported by Meta when available
creativesArray of captured ad rows
creativeCountNumber of ad rows captured

Creative fields

FieldDescription
ad_archive_idMeta Ad Library ID
page_id / page_nameAdvertiser page details
is_activeWhether Meta marks the ad as active
start_date / end_dateUnix timestamps returned by Meta
publisher_platformPlatforms such as Facebook, Instagram, Messenger, Threads, or Audience Network
body_textPrimary creative text when available
cta_text / link_urlCTA and destination link when available
image_url / video_urlFirst detected media URL when available

Quick-start input examples

Track active ads for brands worldwide

{
"brands": ["allbirds", "hoka", "on running"],
"country": "ALL",
"adType": "all",
"maxCreatives": 20
}

Check one country

{
"brands": ["nykaa", "myntra"],
"country": "IN",
"adType": "all",
"maxCreatives": 50
}

Political or issue ad monitoring

{
"brands": ["climate policy", "election campaign"],
"country": "US",
"adType": "political_and_issue_ads",
"maxCreatives": 100
}

Count-only monitoring

{
"brands": ["example brand"],
"country": "ALL",
"adType": "all",
"maxCreatives": 0
}

Sample output snippet

{
"brand": "allbirds",
"country": "US",
"adType": "all",
"url": "https://www.facebook.com/ads/library/?active_status=all&ad_type=all&country=US&q=allbirds",
"active": true,
"adCount": 17,
"creatives": [
{
"ad_archive_id": "2351811061967398",
"page_id": "1770436946575287",
"page_name": "Clove & Twine",
"is_active": true,
"start_date": 1775113200,
"end_date": 1781679600,
"publisher_platform": ["FACEBOOK", "INSTAGRAM", "AUDIENCE_NETWORK"],
"body_text": "Custom merch made simple.",
"cta_text": "Shop now",
"link_url": "https://example.com",
"image_url": "https://..."
}
],
"creativeCount": 1
}

Use cases

  • Competitor ad monitoring: See whether a brand is running active ads and collect examples of visible copy.
  • Creative research: Build a swipe file of CTAs, hooks, platform mix, and messaging angles.
  • Brand auditing: Check your own active ads by country and category.
  • Agency research: Prepare pitches with public competitor ad examples.
  • Political and issue monitoring: Track active political or issue ad visibility in supported countries.
  • Regulated category checks: Review housing, employment, and credit ad examples where Meta exposes them.

Pricing examples

This actor uses pay-per-result pricing on Apify. In the standard output, one dataset item is returned per searched brand or keyword, with creatives nested inside that row.

Example cost formula:

number of searched brands or keywords x current price per result = estimated run cost

Example at a hypothetical $0.002 per result:

Brands or keywords searchedExample cost
25$0.05
100$0.20
1,000$2.00

Check the actor pricing tab for the current live price. If you need pricing per captured creative instead of per searched brand, ask for a custom output shape.

Limitations

  • Coverage varies by country and ad category because Meta controls what the public Ad Library exposes.
  • In some regions, commercial ads may be less visible than political, issue, housing, employment, or credit ads.
  • Meta can change the public GraphQL document IDs or response shape; the actor keeps the request isolated so this can be refreshed quickly.
  • Apify cloud direct egress can return false zero-count responses from Meta, so the default uses residential proxy while still avoiding browser compute.
  • Text snippets and media URLs depend on what Meta includes in the public snapshot payload.
  • Spend, impression, demographic, and disclaimer fields are not consistently available for standard commercial ads.
  • A brand active in one country can return no results in another country filter.

Competitor and comparison notes

  • Compared with Meta's Ad Library UI: This actor is better for repeatable monitoring, exports, and multiple-brand checks. The UI is better for manual review of a small number of ads.
  • Compared with Meta APIs: API access and field availability depend on Meta's permissions and ad category rules. This actor is designed for public Ad Library pages and self-serve Apify workflows.
  • Compared with social post scrapers: This actor focuses on active paid ads, not organic posts.
  • Compared with full creative intelligence platforms: This actor is a lightweight data extraction tool. It does not include built-in spend estimation, creative scoring, or dashboard analytics.

Pairs well with Instagram Scraper for organic post monitoring and TikTok Scraper for cross-platform competitor tracking.

FAQ

Do I need a Facebook account? No. The actor uses public Meta Ad Library GraphQL responses.

Why do results differ by country? Meta shows different ad inventory by region, and availability can vary by ad category and local rules.

Can I get ad spend data? Not reliably for standard commercial ads. Spend ranges are most commonly exposed for regulated categories such as political or issue ads where Meta provides disclosures.

Can I get images or videos? Yes when Meta includes media URLs in the public snapshot payload. Some ads expose only partial creative metadata.

Can I monitor the same brands every day? Yes. Schedule the actor in Apify and compare counts or creative snippets over time.

Support and custom builds

Need media capture, spend/disclaimer fields where available, deduplication, daily monitoring, Slack alerts, Looker/Sheets exports, or a custom ad intelligence workflow? Contact Thirdwatch at thirdwatch.dev or through the Apify actor support channel.

Last verified: 2026-06