Find the ads already running in a market — paid libraries and organic feeds — and tear down what makes them work.
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).
| Parameter | Type | Description |
|---|
query | string | keyword search across ALL advertisers (use INSTEAD of companyName/pageId) |
companyName | string | one advertiser’s ads by brand name |
pageId | string | one advertiser’s ads by Facebook page id (most precise) |
country | string | 2-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) |
limit | integer | max 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.
| Parameter | Type | Description |
|---|
domain | string | the advertiser's domain, e.g. nike.com |
advertiserId | string | Google advertiser id (AR…) when the domain is ambiguous |
region | string | 2-letter region, default US |
limit | integer | max 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).
| Parameter | Type | Description |
|---|
company | string | advertiser company name |
keyword | string | keyword across all advertisers |
companyId | string | LinkedIn company id (numeric) when the name is ambiguous |
countries | string | CSV of 2-letter codes like 'US,CA'; omit or 'ALL' = worldwide |
limit | integer | max 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).
| Parameter | Type | Description |
|---|
queryrequired | string | keyword or hashtag (no # needed) |
limit | integer | max 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).
| Parameter | Type | Description |
|---|
queryrequired | string | keyword to search reels for |
limit | integer | max 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).
| Parameter | Type | Description |
|---|
queryrequired | string | keyword to search videos for |
limit | integer | max 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).
| Parameter | Type | Description |
|---|
queryrequired | string | what to search Reddit for |
limit | integer | max 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).
| Parameter | Type | Description |
|---|
queryrequired | string | keyword to search Threads for |
limit | integer | max 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.
| Parameter | Type | Description |
|---|
pathrequired | string | exact SC endpoint path, e.g. '/v1/tiktok/profile' — non-allowlisted paths are rejected |
params | object | endpoint 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).
| Parameter | Type | Description |
|---|
competitorrequired | object | the competitor to tear down |
ads | object[] | ad objects to tear down (from pull_competitor_ads / search_meta_ads). Omit to auto-pull their Meta ads first. |
language | string | output 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.
| Parameter | Type | Description |
|---|
copyrequired | string | the ad copy / script / on-screen text to check |
claims | string | the claims / proof points the ad makes |
category | string | the product category — helps pick the relevant policy pages |
imageDescription | string | a 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.
| Parameter | Type | Description |
|---|
imageUrlrequired | string | the URL of the static ad image to remix |
brandId | string | a 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.
| Parameter | Type | Description |
|---|
brandId | string | a brand id/name from list_brands to mine for; omit to use the active brand |