Meta Ads Library Scraper API | ๐Ÿ’ต from $0.40/1K avatar

Meta Ads Library Scraper API | ๐Ÿ’ต from $0.40/1K

Under maintenance

Pricing

from $0.40 / 1,000 meta ads

Go to Apify Store
Meta Ads Library Scraper API | ๐Ÿ’ต from $0.40/1K

Meta Ads Library Scraper API | ๐Ÿ’ต from $0.40/1K

Under maintenance

[from $0.40 / 1K ads + small per-run fee] Paste a Meta Ads Library URL or search by keyword/Page ID. Export Facebook and Instagram ads with creatives, landing pages and optional reach/spend details, or count-only results.

Pricing

from $0.40 / 1,000 meta ads

Rating

0.0

(0)

Developer

WebData Labs

WebData Labs

Maintained by Community

Actor stats

1

Bookmarked

38

Total users

18

Monthly active users

5 days ago

Last modified

Share

Meta Ads Library Scraper

Paste a Meta Ads Library URL and export public Facebook and Instagram ads, or search by filters from an API or AI agent.

Meta Ads Library Scraper returns clean ad rows with copy, creatives, CTAs, landing pages, advertiser identity, platforms, and delivery dates. Optional premium modes add public reach/spend disclosures or a fast total-count result. No Facebook login or Meta developer token is required.

โœ… What you get / โŒ What this isn't

โœ… You get:

  • URL-first input that preserves Meta's complete filter state
  • Keyword and Page-ID inputs for APIs, n8n, and AI agents
  • Ad copy, headlines, CTAs, landing pages, images, videos, and carousel cards
  • Optional per-ad reach, spend, impressions, and regulation data when Meta exposes it
  • Count-only monitoring without downloading ad rows
  • Deep pagination up to 10,000 unique ads per run
  • Pay-per-event pricing: a small per-run fee plus a price per ad, and runs Meta refuses are free

โŒ This is not:

  • An Ads Manager or private-account scraper
  • A source of audience or spend data Meta does not publish
  • An AI creative-analysis product
  • A guarantee that inactive commercial ads remain available forever

๐Ÿ”Ž Why use this Meta Ads Library scraper?

Use a copied URL when you already configured a search in the Meta Ads Library. The URL carries country, status, category, media, platform, language, and future filters that a fixed form may not know about.

Use searchQueries or pageIds when an API, automation, or AI agent needs to construct the input. Both entry paths live in one Actor so scheduled monitoring and interactive research use the same output contract.

๐Ÿ“Š What data do you get?

DataMain fields
Ad identitylibraryId, adUrl, collationId
AdvertiserpageId, pageName, pageUrl, pageCategories, pageLikeCount
CreativebodyText, headline, description, ctaText, landingPageUrl
MediaimageUrls, videoUrls, videoThumbnailUrls, cards, creativeType
DeliveryisActive, startDate, endDate, publisherPlatforms
TransparencyadDetails.reachEstimate, spend, impressions, targetedCountries, regionalRegulationData
ProvenancesourceType, sourceValue, sourceUrl, countryCode, observedAt
Count modetotalCount, countIsEstimate

๐Ÿ‘ฅ Who is it for?

  • Performance marketers tracking competitor ads and offers
  • Creative strategists building swipe files
  • Agencies monitoring client categories
  • Researchers studying political, issue, employment, housing, credit, or EU ad transparency
  • Developers and AI agents that need predictable JSON instead of browser work

โš™๏ธ How to scrape Meta Ads Library

  1. Open Meta Ads Library and configure the filters you want.
  2. Copy the full browser URL into startUrls.
  3. Choose a result limit.
  4. Enable ad details or count-only mode only when needed.
  5. Run the Actor and export the dataset as JSON, CSV, Excel, XML, or another Apify-supported format.

๐Ÿ“ฅ Input

By URL

The copied URL is the primary input. Its filters are preserved. A fallback field changes the URL only when you explicitly supply that field.

{
"startUrls": [
{
"url": "https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=running+shoes&media_type=video"
}
],
"maxResults": 100
}

By filters - for API and AI agents

{
"searchQueries": ["running shoes"],
"countryCode": "US",
"activeStatus": "active",
"mediaType": "video",
"category": "all",
"sortBy": "recent",
"maxResults": 100
}

For an exact advertiser:

{
"pageIds": ["20409006880"],
"countryCode": "US",
"activeStatus": "active",
"maxResults": 100,
"isDetailsPerAd": true
}

At least one entry mode is required: startUrls, searchQueries, or pageIds. Compatibility aliases are also accepted: url, urls, adLibraryUrls, query, queries, keywords, searchTerms, and pageId. A Page ID can also be pasted as an Ads Library link containing view_all_page_id.

If one entry is unusable (for example a Page username instead of a numeric ID), it is skipped and listed in the run's OUTPUT record while the other entries still run. If nothing usable is left, the run ends without charge and its single dataset row (resultType: "error") says what to fix.

FieldPurpose
startUrlsCopied Meta Ads Library URLs
searchQueriesKeywords or advertiser names
pageIdsNumeric Facebook Page IDs
countryCode, activeStatus, mediaTypeFilters or explicit URL overrides
dateFrom, dateToInclusive date overrides in YYYY-MM-DD
sortByMeta default, impressions, or recent
categoryAll, political/issue, housing, employment, or credit ads
isDetailsPerAdAdd the public per-ad transparency payload
onlyTotalReturn one count row per input source, without ad rows
maxResultsTotal unique ad rows, up to 10,000

Reliability settings, retries, delays, and proxy rotation are managed by the Actor.

๐Ÿ“ค Output

Ad row with optional premium fields:

{
"resultType": "ad",
"libraryId": "266617227767457",
"pageId": "108824017345866",
"pageName": "Example Advertiser",
"bodyText": "Public ad copy",
"headline": "Public headline",
"landingPageUrl": "https://example.com/offer",
"publisherPlatforms": ["FACEBOOK", "INSTAGRAM"],
"adDetails": {
"reachEstimate": ">1M",
"spend": "$100K - $125K",
"currency": "USD",
"disclosureAvailable": true
},
"observedAt": "2026-07-30T12:00:00.000Z"
}

Count-only row:

{
"resultType": "count",
"sourceType": "keyword",
"sourceValue": "shopify",
"totalCount": 10681,
"countIsEstimate": true,
"observedAt": "2026-07-30T12:00:00.000Z"
}

๐Ÿ’ต How much does it cost to scrape Meta Ads Library?

Platform usage and proxies are included. Each run pays one small start fee, charged only once Meta has actually answered, so a run Meta refuses or an unusable input costs nothing.

EventFreeBronzeSilverGold, Platinum, Diamond
actor-start once per run$0.0100$0.0080$0.0060$0.0040
ad-scraped per ad$0.0010$0.0008$0.0006$0.0004
ad-details-scraped per available detail row$0.0030$0.0024$0.0018$0.0012
total-count per input source$0.0100$0.0100$0.0100$0.0100

On the Free plan:

  • 100 base ad rows cost $0.11 ($0.01 start + $0.10).
  • 1,000 base ad rows cost $1.01.
  • 100 ads with per-ad details cost $0.41.
  • One count-only query costs $0.02.

Meta usually publishes reach and spend for regulated ad categories and EU transparency records, not ordinary commercial ads. When those disclosures are absent, adDetails.disclosureAvailable is false, the row explains why, and ad-details-scraped is not charged.

๐Ÿ” Example tasks

TaskJob
Track Shopify Facebook adsExact advertiser Page ID
Find Facebook competitor adsCompetitor discovery
Export ecommerce Meta ad creativesEcommerce swipe file
Research SaaS ad copySaaS messaging research
Find AI tool adsAI category research
Research real estate adsReal-estate creative research
Research solar lead-generation adsLead-gen offer research
Research skincare creativesConsumer creative research

๐Ÿค– Use with AI agents via MCP

Install Apify MCP for Claude Code or Cursor and expose this Actor:

apify mcp install claude-code --tools webdata_labs/meta-ads-library-scraper
apify mcp install cursor --tools webdata_labs/meta-ads-library-scraper

You can also configure the remote MCP server at https://mcp.apify.com and authenticate through OAuth. Then ask the agent: "Run webdata_labs/meta-ads-library-scraper for Nike ads in the US and return 20 results." Filter inputs are designed so the agent does not need to construct a Meta URL.

See the Apify MCP documentation.

๐Ÿ” Use this Actor in n8n

  1. Add the Apify community node. Self-hosted n8n uses @apify/n8n-nodes-apify; n8n Cloud can install it from the node panel.
  2. Add Run Actor and choose webdata_labs/meta-ads-library-scraper.
  3. Paste one of the JSON inputs above and enable Wait for finish.
  4. Add Get Dataset Items and map defaultDatasetId from the run result.
  5. Send rows to Google Sheets, a database, Slack, or your AI workflow.

See the Apify n8n integration guide.

๐Ÿ” Ad intelligence across Meta, Google, LinkedIn, and TikTok

ActorUse it for
Google Ads Transparency ScraperGoogle advertiser creatives and campaigns
LinkedIn Ads Library ScraperB2B competitor ads
TikTok Creative Center Ad IntelligenceTikTok ads and creative trends
AI Ad Creative Intelligence APIAnalyze creative patterns after collection
Website Contact ExtractorEnrich advertiser landing pages with public contacts

โš ๏ธ Limits and caveats

  • The Actor extracts only public Meta Ads Library data.
  • Reach, spend, demographics, and inactive history are not available for every category or country.
  • Search totals are approximate and can change between runs.
  • Creative CDN URLs can expire, so download media promptly if you need durable copies.
  • Dynamic creative can contain many text and media variants; arrays preserve them.
  • Meta can change public page structures and may temporarily throttle requests.
  • Do not use the output for unlawful profiling, harassment, spam, or policy-violating automation.

โ“ FAQ

Does it require a Facebook login or Meta developer token?

No. It uses public Meta Ads Library pages.

Does a URL override the fallback filters?

The URL wins by default. A fallback field overrides the corresponding URL parameter only when you explicitly supply it.

Can it return only the number of ads?

Yes. Set onlyTotal: true. The Actor returns one count row per URL, keyword, or Page ID and does not download ad rows.

Why are reach or spend empty on a commercial ad?

Meta does not publish those disclosures for most ordinary commercial ads. Select a regulated category or use EU transparency records when that data is required.

The Actor accesses public advertising-transparency data, but legality depends on your jurisdiction and use. Follow applicable laws, Meta's terms, data-protection rules, and your organization's policies. Obtain legal advice for regulated or high-risk use.

๐Ÿ“ Changelog

  • 2026-09-26: Focused on ads and ad details: advertiser About profiles were removed (includeAboutPage is now ignored and never charged). Deep searches recover from Meta's per-IP rate limits instead of stopping early. Unusable entries are skipped instead of failing the run, more input aliases are accepted, and the start fee is charged only after Meta answers.

  • 2026-07-30: URL-first input, explicit URL overrides, aliases, sorting and category filters, count-only mode, per-ad transparency details, advertiser About profiles, and premium event pricing.

  • 2026-07-23: Initial public release with keyword, Page-ID, URL, date-range, and deep-pagination support.

๐Ÿ› ๏ธ Support

Open an issue from the Actor page and include the run URL, non-secret input, expected result, and one affected query, Page ID, or public Ads Library URL.