What mcp-meta-ad-library-monitor does
mcp-meta-ad-library-monitor searches Meta's Ad Library for ads associated with a company and returns flat JSON rows that can be consumed by MCP clients or downstream workflows. Each row represents one ad and may include the advertiser page, creative text, link headline, creation and delivery dates, Meta snapshot URL, publisher platforms, language, and fetch status.
The server is intended for searches across Facebook and Instagram through Meta's sanctioned Ad Library Graph API. It also reports how the advertiser was matched, how many candidate pages were rejected by the identity check, how many ads matched before any limit, and what the selected search could have covered.
How it works
mcp-meta-ad-library-monitor is a thin client around the Mamba Labs Meta Ad Library Monitor actor on Apify. Search execution happens on Apify, while the MCP package supplies the actor inputs and returns its output without adding separate search logic.
A company domain can help derive the search term and verify that a matched advertiser page belongs to the intended company. A company name is recommended because Meta's advertiser search is fuzzy and the identity check can compare the matched page against that name. If neither is supplied appropriately, matching may be weaker.
Coverage depends on Meta's dataset. The Ad Library includes all ads delivered to audiences in the EU, regardless of subject, and worldwide social issue, election, and political ads. Ordinary commercial ads outside the EU may therefore be absent. Every result includes a coverage note to make an empty result easier to interpret.
Setup and configuration
Run the package with Node.js 18 or newer, an Apify account and API token, and your own Meta app access token. A standard Claude Desktop configuration starts the package with npx and supplies APIFY_TOKEN in the environment. The Meta token can be set as META_ACCESS_TOKEN or passed to a call as metaAccessToken; without either, the request fails before an Apify run starts.
Search calls require ad_reached_countries. Supported values include EU, GB, US, DE, FR, NL, ES, IT, IE, and ALL_EU_PLUS_UK. The default search status is ACTIVE; ALL and INACTIVE are also available. Searches can be limited to political and issue ads, selected media types, and 10, 25, 50, or 100 rows. Successful lookups are cached for seven days unless skipCache is set to true.
Tools and capabilities
The primary tool is find_meta_ads. It supports:
- Company name and domain searches
- Country audience selection
- Active, inactive, or all ad status
- All ads or political and issue ads
- Image, video, meme, none, or all media types
- A maximum row count per company
- Optional cache bypass
- Flat snake_case output suitable for downstream processing
- Permanent Meta snapshot URLs for rendered ads
- Coverage notes and advertiser identity-match information
Political and issue ad results may include impressions and spend as bands. Those fields are only populated for that archive, and null values do not mean zero spend.
Limitations and notes
Political and issue ad data requires a verified identity on the Meta account. Meta access is required because the Ad Library API is not open. The tool does not provide unrestricted commercial-ad coverage worldwide: ordinary product ads in places such as the US or UK may legitimately return not_found when they are outside the API's published coverage.
The maxAds setting caps returned rows and acts as a cost control; it does not change the reported number of matching ads. The complete actor input and output schema is maintained on the referenced Apify Store page.