hermosodocs

Ad spy & research

Find the ads already running in a market — paid libraries and organic feeds — and tear down what makes them work.

16 tools. Every name, description and parameter on this page is generated from the running MCP server — see how this reference is built.

research / discovery

find_competitors#

Find competitors read-only

Discover a brand's competitor / similar / adjacent brands from its domain (Claude grounded by web search). mode=competitors (default, excludes the searched company), inspiration (best relevant ads incl. it), or company. 0 ScrapeCreators credits.

ParameterTypeDescription
domainrequiredstringthe brand domain, e.g. flourish.com
mode"competitors" | "inspiration" | "company"'competitors' (default, excludes the searched company), 'inspiration' (best relevant ads incl. it), or 'company'

pull_competitor_ads#

Pull competitor ads read-only

Pull a brand's real running ads across Meta / Google / LinkedIn ad libraries (deduped, sorted, right page resolved). Spends ScrapeCreators credits.

ParameterTypeDescription
companyNamestringthe advertiser name
domainstringthe advertiser domain
platformsstring[]default ['facebook']; add 'google','linkedin'
countrystring2-letter, default 'US'
limitnumbermax ads per platform (default 30)
sortstring'longest_running' (default) etc.

research_ads#

Research ads read-only

Natural-language ad research: a Claude tool-use loop over Meta/Google/LinkedIn ad libraries + organic TikTok. Returns a summary + the found ads (with their served URLs). Spends LLM tokens + ScrapeCreators credits.

ParameterTypeDescription
queryrequiredstringwhat to research, e.g. "the longest-running protein-pancake ads on Meta"
brandstring | objectbrand name or profile object to tailor the research to; omit to use the workspace’s saved brand

structured ad-spy

search_meta_ads#

Search Meta ads read-only

Structured Meta (Facebook/Instagram) Ad Library pull — use when you know exactly WHAT to fetch: a keyword (query) OR one advertiser (companyName / pageId). Returns compact JSON {page_name, body, cta, link, dates, media} per ad. For open-ended research that needs judgment across platforms, use research_ads instead. Spends ScrapeCreators credits (~1–2).

ParameterTypeDescription
querystringkeyword search across ALL advertisers (use INSTEAD of companyName/pageId)
companyNamestringone advertiser’s ads by brand name
pageIdstringone advertiser’s ads by Facebook page id (most precise)
countrystring2-letter code or 'ALL' (default ALL)
status"ACTIVE" | "INACTIVE" | "ALL"ACTIVE = currently running; default ALL (includes proven past winners)
mediaType"ALL" | "IMAGE" | "VIDEO" | "MEME" | "IMAGE_AND_MEME" | "NONE"filter by creative type (default ALL)
limitintegermax ads returned (1–25, default 8)

search_google_ads#

Search Google ads read-only

Structured Google Ads Transparency pull for ONE advertiser (by domain or advertiserId) — use when you know the brand; use research_ads for open-ended research. Deliberately fetches the cheap BASIC listing (get_ad_details=false, ~1 credit — the detailed variant with per-ad headlines costs 25 credits/call and is not exposed here). Returns compact JSON {advertiser, format, adUrl, image, firstShown, lastShown} per ad.

ParameterTypeDescription
domainstringthe advertiser's domain, e.g. nike.com
advertiserIdstringGoogle advertiser id (AR…) when the domain is ambiguous
regionstring2-letter region, default US
limitintegermax ads returned (1–25, default 8)

search_linkedin_ads#

Search LinkedIn ads read-only

Structured LinkedIn Ad Library search by company name, keyword, or companyId — use for a targeted B2B pull; use research_ads for open-ended research. Returns compact JSON {advertiser, headline, description, cta, link, media, dates, impressions} per ad — LinkedIn is the one library exposing real impression counts. Spends ScrapeCreators credits (~1).

ParameterTypeDescription
companystringadvertiser company name
keywordstringkeyword across all advertisers
companyIdstringLinkedIn company id (numeric) when the name is ambiguous
countriesstringCSV of 2-letter codes like 'US,CA'; omit or 'ALL' = worldwide
limitintegermax ads returned (1–25, default 8)

search_tiktok#

Search TikTok read-only

Organic TikTok keyword search (there is NO TikTok ad library) — top-performing videos to mine for hooks/trends/remixable creative. Returns compact JSON {desc, author, handle, plays, likes, link, cover} per video, ranked by plays. Use research_ads for open-ended research. Spends ScrapeCreators credits (~1).

ParameterTypeDescription
queryrequiredstringkeyword or hashtag (no # needed)
limitintegermax videos returned (1–25, default 8)

search_instagram#

Search Instagram read-only

Organic Instagram REELS keyword search (/v2/instagram/reels/search — ScrapeCreators' only IG keyword surface; profile/hashtag pulls go through scrapecreators_fetch with a handle). Returns compact JSON {desc, author, handle, plays, likes, link, cover} per reel, ranked by plays. Spends ScrapeCreators credits (~1).

ParameterTypeDescription
queryrequiredstringkeyword to search reels for
limitintegermax reels returned (1–25, default 8)

search_youtube#

Search YouTube read-only

Organic YouTube keyword search (/v1/youtube/search) — videos to mine for hooks/angles/long-form structure. Returns compact JSON {desc (title), author, handle, plays, link, cover} per video, ranked by views. Spends ScrapeCreators credits (~1).

ParameterTypeDescription
queryrequiredstringkeyword to search videos for
limitintegermax videos returned (1–25, default 8)

search_reddit#

Search Reddit read-only

Reddit keyword search (/v1/reddit/search, top-ranked) — a goldmine for the customer's OWN words (pain points, objections, language) to mine into ad hooks and copy. Returns compact JSON {desc (title+selftext), subreddit, upvotes, comments, link} per post. Spends ScrapeCreators credits (~1).

ParameterTypeDescription
queryrequiredstringwhat to search Reddit for
limitintegermax posts returned (1–25, default 8)

search_threads#

Search Threads read-only

Organic Threads keyword search (/v1/threads/search) — short-form text/social posts for trend + voice research. Returns compact JSON {desc, author, handle, likes, link, cover} per post. Spends ScrapeCreators credits (~1).

ParameterTypeDescription
queryrequiredstringkeyword to search Threads for
limitintegermax posts returned (1–25, default 8)

scrapecreators_fetch#

Fetch ScrapeCreators endpoint read-only

Generic ScrapeCreators escape hatch for any ALLOWLISTED long-tail endpoint the dedicated search_* tools don't cover — e.g. {path:'/v1/instagram/profile', params:{handle:'nike'}}. Allowlisted platform families: TikTok (+ TikTok Shop), Instagram, YouTube, Facebook (organic profiles/posts/events/marketplace), LinkedIn (organic posts/companies), Twitter/X, Reddit, Threads, Snapchat, Pinterest, Twitch, Bluesky, Truth Social, Rumble, Spotify, SoundCloud, GitHub, Google search, link-in-bio pages (Linktree etc.). Param names vary per endpoint (profiles use `handle`, keyword searches use `query`, Reddit uses `subreddit`). WARNING: returns RAW provider JSON — large and messy; prefer the dedicated search_* tools. Spends ScrapeCreators credits.

ParameterTypeDescription
pathrequiredstringexact SC endpoint path, e.g. '/v1/tiktok/profile' — non-allowlisted paths are rejected
paramsobjectendpoint query params, e.g. {handle:'nike'}

research analysis & creative remix

competitor_teardown#

Competitor teardown read-only

Tear a competitor's ad strategy down into an actionable playbook: their opening-hook MIX, longest-running campaign THEMES, the WHITE SPACE nobody in their set runs, 2-3 render-ready COUNTER-PLAYS, and the territories they own that you should avoid. Pass `competitor` {name, domain?}. CONTRACT: supply `ads` (raw ad objects from a prior pull_competitor_ads / search_meta_ads call) to tear exactly those down, OR omit `ads` and this pulls the competitor's real Meta ads first (spends ~1-2 ScrapeCreators credits, longest-running = proven winners). Auto-tailors the white space + counter-plays to YOUR saved brand. Spends LLM tokens (0 SC credits when you pass ads).

ParameterTypeDescription
competitorrequiredobjectthe competitor to tear down
adsobject[]ad objects to tear down (from pull_competitor_ads / search_meta_ads). Omit to auto-pull their Meta ads first.
languagestringoutput language (default English)

check_ad_policy#

Check ad policy read-only

Pre-flight ad copy against Meta's REAL, live Advertising Standards before you run it — a flat 1-credit check. Pulls Meta's actual policy pages and returns a verdict (pass / fix / block) where every flagged issue QUOTES Meta's own policy text verbatim plus a compliant rewrite that keeps the sell. It's a check, not an edit — it never changes the creative. Especially worth running for regulated-adjacent categories (health/supplements, weight-loss or beauty results claims, finance/crypto/insurance, alcohol, dating, gambling) or ANY strong/absolute/guaranteed claim.

ParameterTypeDescription
copyrequiredstringthe ad copy / script / on-screen text to check
claimsstringthe claims / proof points the ad makes
categorystringthe product category — helps pick the relevant policy pages
imageDescriptionstringa description of the creative / image when relevant

remix_static#

Remix a static ad

One-click STATIC-AD REMIX: rebuild a competitor/reference STATIC (image) ad as an on-brand version — SAME layout, composition and energy, but YOUR product, brand colours, logo and voice, with every trace of the source brand removed. Pass `imageUrl` = the static ad image to remix. Uses your saved brand (pass brandId to target a specific brand — that switches this key's active brand like use_brand). IMAGES ONLY — for video ads use render_ad. Bills as one image generation.

ParameterTypeDescription
imageUrlrequiredstringthe URL of the static ad image to remix
brandIdstringa brand id/name from list_brands to remix for; omit to use the active brand

mine_angles#

Mine customer angles read-only

Mine ad ANGLES from real customer language: gathers the customer's own words (Reddit, TikTok, the brand's review page + review-site results) and returns a RANKED angle bank — each angle tagged (pain / outcome / identity / fear / competitive-displacement / social-proof / contrast), 2-5 VERBATIM proof quotes, a 0-100 score with breakdown, and a ready-to-run hook in the customer's own voice. Reads YOUR saved brand (pass brandId to target a specific brand — that switches this key's active brand like use_brand). To tear down a COMPETITOR use competitor_teardown instead. Spends a few ScrapeCreators credits + LLM tokens.

ParameterTypeDescription
brandIdstringa brand id/name from list_brands to mine for; omit to use the active brand