Skip to main content
Glama

Facebook Ad Library Search

social_facebook_ad_library_search_ads
Read-only

Searches the Meta Ad Library by keyword and returns matching ads. Supports filtering by language with a 2-letter code such as EN or ES. Each result includes ad_archive_id, page_name, is_active, publisher_platform, and a snapshot with body text, images, videos, and cta_text. Both GET and POST are supported. Use GET for normal requests. If the cursor becomes too large after extensive pagination, use POST and send the same parameters in the JSON body. Completed lookups cost at least 10 Nexscope credits. Actual cost depends on the operation and requested options. Repeated requests may purchase data again. Facebook Ad Library Search API View Pricing Search Meta Ad Library by keyword. Use GET normally; for long pagination cursors, use POST with the same parameters in the JSON body. 1 credit per request GET /v1/facebook/adLibrary/search/ads Actual supplier units are reported per request. Examples are not guaranteed prices.

Input Schema

NameRequiredDescriptionDefault
trimNoSet to true for a trimmed down version of the response
queryYesKeyword to search for
cursorNoCursor to paginate through results
statusNoStatus of the ad. Defaults to ACTIVE.
ad_typeNoSearch for all ads or only political and issue ads
countryNoThis can only be one country. It has to be the 2 letter code for the country. It defaults to ALL.
sort_byNoSort by impressions (high to low), or Most Recent (relevancy_monthly_grouped). Defaults to impressions.
end_dateNoImpressions end date. Needs to be in YYYY-MM-DD format.
languageNoLanguage to filter ads on. Needs to be a 2 letter language code, such as EN, ES, or FR.
media_typeNoMedia type of the ad. Defaults to ALL. Meme just means the ad has text and an image. No clue why they call it meme.
start_dateNoImpressions start date. Needs to be in YYYY-MM-DD format.
search_typeNoIf you want to search by exact phrase or not

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, openWorldHint, destructiveHint=false, all consistent with a search), the description discloses credit cost, that repeated requests may re-purchase data, and the GET-vs-POST cursor strategy. The cost information is muddled because it states 'at least 10 Nexscope credits' and later '1 credit per request', which could mislead an agent estimating cost, but the behavioral substance is still present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and useful, but the text then repeats the GET/POST guidance verbatim in two places and includes marketing boilerplate ('View Pricing', 'Actual cost depends on the operation...', 'Examples are not guaranteed prices'). It also carries mutually inconsistent credit figures, which wastes attention and undermines trust.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so listing the returned fields (ad_archive_id, page_name, is_active, publisher_platform, snapshot contents, cta_text) is genuinely additive. Combined with cost, pagination and HTTP-method guidance, an agent has enough to call this correctly; only result-count limits and rate limits are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already explains query, cursor, status, ad_type, country, dates, media_type, sort_by, search_type and trim. The description only echoes the language parameter's 2-letter code format, which is redundant, and adds nothing new about the remaining eleven parameters. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource ('Searches the Meta Ad Library by keyword and returns matching ads'), which distinguishes it from siblings like social_facebook_ad_library_ad and social_facebook_ad_library_company_ads by making clear this is keyword-driven search rather than lookup by ID or by advertiser. It does not name any sibling explicitly, so the differentiation is inferential rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives invocation guidance (use GET normally, POST with the same parameters in the body when the cursor grows too large), which is genuinely useful. However, it offers no guidance on when to choose this tool over the sibling ad/company_ads/transcript tools, and no exclusions or prerequisites are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.