Install
openclaw skills install @blakefolgado/ad-library-scraperSearch public ad libraries through ToolRouter's MCP server - Meta (Facebook and Instagram) Ad Library, Google Ads Transparency Center, LinkedIn, TikTok and Reddit ads. Use when the user wants to see a competitor's running ads, ad copy and creative, how long ads have run, which platforms they run on, or video ad transcripts.
openclaw skills install @blakefolgado/ad-library-scraperRead the public ad libraries that Meta, Google, LinkedIn, TikTok and Reddit publish, from one MCP connection. Returns ad copy, creative URLs, start dates, platforms and, where the library publishes it, reach and spend.
Install with pnpm dlx skills add Humanleap/agent-skills --skill ad-library-scraper. Connect the client's remote MCP server to https://api.toolrouter.com/mcp (Claude: Customize → Connectors → Add custom connector; Claude Code: claude mcp add toolrouter -- npx -y toolrouter-mcp). Setup: https://toolrouter.com/docs/markdown/quickstart.
tool and skill below, or call discover. Never invent an input field.The server provisions an anonymous account on first use. Paid calls need credits: if use_tool returns a claim link, give it to the user so they can sign in and add credits. Most ad library calls cost $0.005; discover shows the live price. get_google_company_ads with get_ad_details: true costs more per ad, so leave it off until the user needs full detail.
search_facebook_ad_companies → page_id. Google: search_google_advertisers → advertiser_id, or pass the domain.get_facebook_company_ads with page_id, country, status:"ACTIVE" and trim:true. get_google_company_ads with domain or advertiser_id.get_facebook_ad with get_transcript:true for a video ad's script; get_google_ad for one Google creative.All tool: "ad-library-search".
| Job | skill | Input |
|---|---|---|
| Find a brand's Meta page ID | search_facebook_ad_companies | {"query":"Notion"} |
| A brand's active Meta ads in one country | get_facebook_company_ads | {"page_id":"825120160874613","country":"GB","status":"ACTIVE","trim":true} |
| Meta ads mentioning a keyword | search_facebook_ads | {"query":"protein bar","country":"US","search_type":"keyword_exact_phrase","trim":true} |
| One Meta ad, with video transcript | get_facebook_ad | {"url":"https://www.facebook.com/ads/library/?id=123","get_transcript":true} |
| Find a Google advertiser | search_google_advertisers | {"query":"Shopify"} |
| A domain's Google ads | get_google_company_ads | {"domain":"shopify.com","region":"US"} |
| One Google ad (text via OCR) | get_google_ad | {"url":"https://adstransparency.google.com/advertiser/AR.../creative/CR..."} |
| LinkedIn ads by company | search_linkedin_ads | {"company":"Salesforce"} |
| TikTok ads by advertiser | search_tiktok_ads | {"advertiser_name":"Duolingo"} |
| One TikTok ad (hook, landing page, video) | get_tiktok_ad | {"ad_id":"<id or library.tiktok.com URL>"} |
| Reddit promoted posts | search_reddit_ads | {"query":"project management"} |
Call these through use_tool with tool, skill and input.
web-scraper/scrape_page to read the offer behind the ad.social-media-scraper skill to compare what a brand promotes with what it posts.search_facebook_ads is a keyword search across all advertisers: "notion" also matches unrelated ads that use the word. Resolve the page ID for brand research.status:"ALL" for history. Use trim:true to keep responses small, and cursor to page.search_google_advertisers.query or advertiser_name to search_tiktok_ads, not both.Connect → resolve page/advertiser ID → company ads (country, active, trim) → open top ads → table of hooks, dates and platforms.