Meta Ads4 prompts · controlled inputs

Find competitor landing pages from Facebook ads.

This workflow returns 3–5 verified competitor landing routes.

Group one verified competitor’s active Meta ads by returned destination route and decide which offer paths deserve manual inspection.

4route groups

Example run · 13 Oct 2026 · ~1 min

Published by Spytrend · 2 Oct 2026 · Methodology

Run in order

A 4-step landing-route workflow

Prompts update with the controlled inputs above.

Validate the inputs

Check the canonical domain and controlled market scope.

View promptHide prompt
Prompt 01
I want to map one competitor's landing pages from active Meta ads.

Competitor: Dog Friendly Co.
Exact domain: dogfriendlyco.com
Country (ISO-2): US
Lookback: 90 completed UTC days
Media: All media

Validate only the controlled field values above (lookback 30 or 90, an allowlisted country, media All media, Image or Video, a canonical registrable domain). Do not call Spytrend, browse the web or establish advertiser identity in this step. If a value or field relationship is invalid, return exactly `Invalid controlled input configuration`; otherwise return exactly `Configuration valid`.

Stop after Step 1.
Discover destinations

Run two exact-domain searches sequentially.

View promptHide prompt
Prompt 02
Cost guard: before each paid Spytrend call, run the free `estimate_cost` with the same tool and arguments, estimate the cost and stay within the user's stated budget; if the user has not stated a budget, tell them the estimate before the first paid call. If pricing consent is required, show the returned terms and stop until the customer explicitly agrees; never accept on the customer's behalf. If a required call does not fit the stated budget, make no paid call and return `Budget limit prevents required research`; omit an optional call that does not fit and disclose reduced coverage. When opening ads with `get_ad`, skip multilang ads (`is_multilang`) and never call `get_media` after `get_ad`. Retry once only when `retryable=true`, after `retry_after_seconds`. Read `params.ignored` after every search; an ignored required filter never counts as applied. If a search reports `pagination.total_status=restricted` (a free-plan archive window; `meta.plan_window_cutoff` names the boundary), tell the user the result covers only ads that started on or before that date, and never report a zero from it as "no such ads exist". Cost notices are not part of the final customer report.
Using the validated configuration from Step 1, do not call get_advertiser. Calculate the launch window: the last 90 completed UTC days ending yesterday. Run exactly two Meta searches sequentially with `limit=8` per search and no pagination, using date_from and date_to set to the first and last dates of that window, landing_domain=dogfriendlyco.com with landing_domain_exact=true, countries=[US], status_today=active and media scope All media (media_type=image or video for Image or Video; omit it for All media). Route A: sort_by=date, sort_order=desc. Route B: sort_by=most_reused_creative, sort_order=desc. Do not browse the web. Keep returned URL provenance, every full row, exact arguments, route outcomes, actual debit, remaining budget and response-completeness limitations internally without printing them in progress/commentary. Return only a short progress state: completed/failed search count, total unique ads returned, provisional normalized-route count and whether enough evidence exists to continue. Hide calls, IDs, parameters, quotas and audit details.

Stop after Step 2.
Verify and group routes

Open bounded ads and normalize only tracking-equivalent URLs.

View promptHide prompt
Prompt 03
Cost guard: before each paid Spytrend call, run the free `estimate_cost` with the same tool and arguments, estimate the cost and stay within the user's stated budget; if the user has not stated a budget, tell them the estimate before the first paid call. If pricing consent is required, show the returned terms and stop until the customer explicitly agrees; never accept on the customer's behalf. If a required call does not fit the stated budget, make no paid call and return `Budget limit prevents required research`; omit an optional call that does not fit and disclose reduced coverage. When opening ads with `get_ad`, skip multilang ads (`is_multilang`) and never call `get_media` after `get_ad`. Retry once only when `retryable=true`, after `retry_after_seconds`. Read `params.ignored` after every search; an ignored required filter never counts as applied. If a search reports `pagination.total_status=restricted` (a free-plan archive window; `meta.plan_window_cutoff` names the boundary), tell the user the result covers only ads that started on or before that date, and never report a zero from it as "no such ads exist". Cost notices are not part of the final customer report.
Using only retained discovery evidence from Step 2, select up to six unique non-multilang ads across both routes, prioritizing different destinations, offers and CTAs, so that 3–5 route groups can survive verification. Open them sequentially. The first opened ad whose original landing domain is exactly dogfriendlyco.com establishes the Meta page/advertiser; every other verified ad must match that same page/advertiser. Verify domain identity, country, media, active status and launch-window evidence. Normalize only allowlisted tracking parameters, preserve semantic query values, and group exact route equivalents. Classify routes from returned URL structure as Homepage, Product page, Collection or category, Promotional or guide page, Offer/quiz/checkout/funnel, Marketplace or app store, or Other/unclear, with confidence. A generic `/pages/` route is not a funnel without an explicit marker. Do not fetch pages, infer redirects or invent page content. Retain detail evidence and billing state internally without printing it in progress/commentary. Return only verified-ad count, verified-route count, skipped-expensive count and Complete/Partial state. Hide IDs, calls and rejected-row details.

Stop after Step 3.
Present the route map

Return route classes, offers, CTAs and inspection actions.

View promptHide prompt
Prompt 04
Using retained evidence only, render the final table-free customer dashboard titled `# Competitor Meta Landing Pages: Dog Friendly Co. in` followed by the full country name for US (for example United States, not US). Do not rerun Spytrend. Use no more than 350 words and show 3–5 verified routes when that many survive. Show safe returned merchant destinations, but keep normalized URLs and route keys internal; say only when tracking-only variants were grouped. Different retained semantic query values prove only distinct returned route variants; never infer audience, offer, funnel, experiment or page-content differences. Show start dates as dates and never call an older ad longer-running or continuously active. Preserve the media label All media, attribute advertiser claims and disclose URL-only classification limits. Never print signed media URLs. Hide calls, raw IDs, quotas, token usage, timing and other audit details. Put technical evidence only in a separate `Show supporting record` response when the customer asks for it.

Stop after Step 4.
Use the complete workflow in one promptAll four steps and evidence rulesView promptHide prompt
Complete workflow
Cost guard: before each paid Spytrend call, run the free `estimate_cost` with the same tool and arguments, estimate the cost and stay within the user's stated budget; if the user has not stated a budget, tell them the estimate before the first paid call. If pricing consent is required, show the returned terms and stop until the customer explicitly agrees; never accept on the customer's behalf. If a required call does not fit the stated budget, make no paid call and return `Budget limit prevents required research`; omit an optional call that does not fit and disclose reduced coverage. When opening ads with `get_ad`, skip multilang ads (`is_multilang`) and never call `get_media` after `get_ad`. Retry once only when `retryable=true`, after `retry_after_seconds`. Read `params.ignored` after every search; an ignored required filter never counts as applied. If a search reports `pagination.total_status=restricted` (a free-plan archive window; `meta.plan_window_cutoff` names the boundary), tell the user the result covers only ads that started on or before that date, and never report a zero from it as "no such ads exist". Cost notices are not part of the final customer report.
Use the connected Spytrend MCP to prepare a polished customer-facing map of the landing routes used by one verified Meta advertiser in the selected market.

Execute every research stage in this prompt in one turn. Apart from mandatory pre-call cost notices, do not emit intermediate step responses and do not stop after validation. Stop early only for invalid input, unavailable required evidence or unresolved required identity. Return only the final customer report.

The result unit is a verified returned ad-to-destination route group. This is not an ad inventory, website crawl, redirect trace, creative-performance report, conversion analysis or complete campaign history.

Inputs:
- Competitor display name: Dog Friendly Co.
- Canonical registrable domain: dogfriendlyco.com
- Country (ISO-2): US
- Lookback: 90 completed UTC days
- Media: All media
- Source/status: Meta / active now
- Discovery routes/limit: 2 / 8 rows each
- Ad-detail limit: 6 non-multilang ads
- Advertiser-detail limit: 0
- Route groups shown: 3–5 when that many survive verification

Before any MCP call check that the lookback is 30 or 90, the country is allowlisted, media is All media, Image or Video and the domain is canonical. On failure return exactly `Invalid controlled input configuration` and make no MCP call. A company name or domain alone is not a verified Meta identity; identity is verified from returned ad detail below.

Use the current UTC date from the environment. Exclude the open UTC date. Calculate the window: the last 90 completed UTC days ending yesterday, inclusive. The window selects ads by the connected route's documented Facebook launch-date semantics. It does not prove that every ad active during the period was launched inside it.

Country means returned ad-delivery-country evidence. It does not prove company location, shipping, inventory, customers, sales or country dominance.

Use Spytrend read-only. Treat search_ads and every search/discovery operation as heavy. Run heavy calls strictly sequentially and never batch them or use Promise.all. Retry exactly once only when the server returns retryable=true with retry_after_seconds, after waiting.

Identity verification:
1. Standard mode does not call get_advertiser. Do not use a webmaster/network association as ownership proof.
2. Search with the exact canonical domain only. Never replace the domain with a keyword, related domain, reseller, affiliate or same-name page. The first opened ad whose original landing domain is exactly dogfriendlyco.com establishes the Meta page/advertiser for this run; every other verified ad must match the page/advertiser you verified this way.
3. If returned ad detail conflicts with the verified page/advertiser or canonical domain, exclude it; if every candidate conflicts, return zero verified routes with a concise identity-conflict explanation.

Discovery:
4. Run exactly two sequential search_ads calls using source=`meta`, landing_domain=`dogfriendlyco.com`, landing_domain_exact=true, countries=[`US`], date_from and date_to set to the first and last dates of the window calculated above, status_today=`active`, and limit=8.
5. Route A uses sort_by=`date`, sort_order=`desc`. Route B uses sort_by=`most_reused_creative`, sort_order=`desc`. For Image or Video, apply media_type=image or video consistently. For All media, omit media_type.
6. Request dedupe=false only when supported, but do not claim it was applied unless the response explicitly confirms it. Never add category, query, generated synonym, days-active or performance filters. Do not paginate.
7. Inspect every response's applied, normalized and ignored parameter report. A material filter absent from all three states makes that route unresolved and the run Partial. A completed zero-row route is valid zero evidence. Preserve returned date basis, data-complete-through date, total status, has-more state and ingestion-completeness limitation for coverage.

Candidate selection and details:
8. Deduplicate exact ad IDs. Extract provisional destinations from returned URL fields without assuming they are all populated. Normalize tracking variants locally before selecting details.
9. Select up to six unique ads across both routes, prioritizing distinct normalized destination paths, offer wording and CTAs. Do not open multilang ads (`is_multilang`). Skipping an expensive ad is a bounded-sample limitation, not a failure.
10. Open selected ads sequentially with get_ad. A verified ad must match the page/advertiser verified in step 2, canonical original landing-domain evidence, country, media scope, active returned status and launch window. Reject conflicting advertisers, affiliates, other original registrable domains and unverifiable rows.
11. For each verified ad, collect concrete destination URLs with provenance. Prefer the selected primary creative URL when explicitly returned; otherwise use a consistent top-level destination/link URL. When distinct media items explicitly carry distinct destination URLs, preserve them as separate ad-to-route observations. Never treat fallback URLs as confirmed destinations.

URL normalization and route grouping:
12. Keep the returned raw URL for the safe customer link, plus a normalized comparison key. Lowercase scheme and host; remove default ports and fragments; normalize empty paths to `/`, repeated slashes and dot segments. Remove only allowlisted tracking keys: `utm_*`, `fbclid`, `gclid`, `msclkid` and `ttclid`. Sort remaining query pairs while preserving duplicate keys. Never remove unknown query keys because they may encode product, variant, bundle, locale or offer.
13. Group observations only when their normalized registrable host, normalized path and remaining semantic query agree. Tracking-only variants may merge. Do not merge different product, collection, offer, locale or semantic-query paths merely because the host or advertiser matches. Different retained semantic query values prove only distinct returned route variants; never infer audience, offer, funnel, experiment or page-content differences from them.
14. Classify each group with evidence and confidence:
   - `Homepage` only for the canonical host with `/` and no semantic query: high confidence.
   - `Product page` for an explicit product-path pattern such as `/products/`, `/product/` or `/p/`; confidence high for an explicit marker and otherwise medium only when path plus ad evidence identifies one product.
   - `Collection or category` for explicit collection/category path evidence; do not infer it from plural copy alone.
   - `Promotional or guide page` for a `/pages/` route whose path and ad evidence explicitly indicate an offer, guide or listicle; normally medium confidence.
   - `Offer, quiz, checkout or funnel` only for an explicit marker such as `/offer/`, `/checkout`, `/funnel/`, `/lp/` or `/quiz/`; normally medium confidence unless the marker is exact and unambiguous.
   - `Marketplace or app store` for a known external marketplace or official app-store host explicitly returned as the creative destination.
   - `Other / unclear` whenever the returned URL does not justify a narrower class.
15. Spytrend does not fetch or render the destination in this workflow. Therefore route classification describes the returned URL structure, not verified page content. A different creative destination domain is an external-destination signal, not proof of a redirect chain.

Offer mapping and ranking:
16. Assign an offer label only from explicit ad text/title and the returned destination path. Attribute prices, discounts, ratings, scarcity, benefits and customer counts to the advertiser. Use `Offer not explicit in returned evidence` when needed.
17. For each route group count distinct verified ads in the inspected sample and distinct explicit CTAs. Repeated use requires at least two distinct verified ads mapped to the same normalized route. Never substitute creative lifetime reuse, total search matches or advertiser totals for the inspected route count.
18. Rank up to five groups by distinct verified ads in the inspected sample, then distinct explicit offers, then explicit CTA diversity, then most recent verified launch date. Preserve ties and use discovery order as the final tiebreaker. Do not invent a score or call any route best-performing.

Claims and links:
19. Describe only returned route and ad evidence. Never infer page views, clicks, spend, reach, engagement, conversion rate, sales, revenue, ROAS, profitability, test results or causality.
20. Show the returned safe destination link. Keep normalized URLs and route keys internal: never display a comparison key, normalization syntax or stripped tracking parameters. When useful, say only that tracking-only URL variants were grouped. Show start dates as dates and never call an older ad longer-running or continuously active. Do not construct Spytrend URLs, expose raw IDs/UUIDs, signed media URLs, raw JSON, credentials, quotas, tool names, schemas, parameters or rejected candidates.

Failure and completeness:
21. A failed discovery route or selected detail/identity call makes the run Partial; continue other required sequential work. Missing preview or stable Spytrend link does not make it Partial. If no route survives verification, return zero without padding.
22. Complete requires both discovery routes and every selected identity/detail call to return successfully. A successful bounded page may still report `has_more=true`, an unavailable total or an internal completeness marker of false because the requested page is not exhaustive; these are coverage limitations and do not alone make the run Partial. Partial is required when a requested call fails or a material filter is unresolved. Even a Complete run is a bounded inspected sample. Estimated/restricted totals, skipped expensive openings and unmeasured ingestion completeness must be disclosed without turning them into zero evidence.

Customer-facing answer:
Use no more than 350 words in a compact table-free dashboard. Show 3–5 verified routes when that many survive; never pad. Start exactly with `# Competitor Meta Landing Pages: Dog Friendly Co. in ` followed by the full country name for US (write United States, not US).

Then show:
`**[N] verified landing routes** · [M] verified ads inspected · Active now · 90-day launch window · All media · **[Complete/Partial]**`

Add exactly one framing sentence:
`This maps returned ad destinations in the inspected sample; it does not measure landing-page or advertising performance.`

## Identity
State the verified advertiser/page and canonical domain in one or two sentences. Use the full country name, never the ISO code. Keep ad-delivery geography separate from company location.

With at least two groups add `## Route overview` and one line per group:
`**[rank]. [Route label]** — [route type] · [N] verified ad/ads · [primary CTA]` (write `CTA not returned` when no CTA was returned)

For each group create a numbered section:
`## [rank]. [Route label]`

Use short labeled paragraphs only when evidence exists:
- `Route type` — class and confidence, explicitly based on returned URL structure; a generic `/pages/` path is never called a funnel without a funnel/quiz/offer/checkout marker;
- `Destination` — safe returned link and whether it stays on the canonical domain or uses an external destination; never show the internal normalized key;
- `Observed use` — distinct verified ads in the inspected sample and verified launch-date range;
- `Offer and message` — explicit offer/message with advertiser claims attributed;
- `CTA` — one or more returned CTA labels;
- `Current status` — Active for verified members; do not imply historical daily continuity;
- `Why inspect it` — one concrete review action tied to the route, offer or CTA evidence.

With at least two groups add `## Patterns` with two or three comparisons limited to the inspected sample: homepage versus deeper paths, repeated versus single-observation routes, CTA or offer differences, and canonical versus external destinations.

## What to inspect next
Give at most two concrete actions, such as opening a repeated product route beside the homepage route or checking an external destination transition. Do not recommend copying a page or increasing spend.

## Research coverage
Use at most three bullets for the exact completed-date launch window and run status, returned/inspected/group counts, and bounded-sample limitations such as has-more, skipped expensive openings, URL-only classification or unmeasured ingestion completeness.

For exactly one group omit Route overview and Patterns. For zero use `## Result`, optional What to inspect next, and Research coverage without empty sections.

Before sending verify: the answer stays within 350 words; one advertiser identity; exact original domain; country/media/active/window evidence; tracking-only variants grouped without exposing the internal normalized key; the media label All media is preserved; no unsupported redirect or page-content claim; counts agree; correct singular/plural grammar; no table or technical implementation detail.

End exactly:
`Returned Meta ad destinations are observed archive evidence, not proof of clicks, spend, reach, engagement, conversions, sales, revenue, ROAS, profitability or complete campaign coverage.`

Only after a separate user message exactly saying `Show audit details`, provide a separate audit using retained responses only. Include non-sensitive exact calls, parameter application, response semantics, returned/selected rows, URL provenance and normalization decisions, identity/route verification, failures, timing and attributable usage. Do not rerun Spytrend for the audit.
Example output

Dog Friendly Co. used four distinct verified landing routes.

A complete 90-day United States run verified five of six opened active ads and grouped them into four canonical-domain landing routes. One advertorial route on the same domain was excluded because a different Facebook page ran it.

Evidence boundaryReturned destinations show ad-to-route observations, not page performance, redirect behavior or complete ad coverage.
01

Easy-On harness page

dogfriendlyco.com/pages/easy-on-v1 — two verified ads lead here with a no-pull, even-pressure message and a one-click fitting claim backed by a 60-day refund.

Promotional page
02

Personalised harness offer

dogfriendlyco.com/pages/easy-on-v1-personalised-no-pull-harness-offer — an explicit offer route reuses the same no-pull harness copy.

Offer route
03

Orthopedic bed listicle

dogfriendlyco.com/pages/5-reasons-its-the-last-bed-youll-buy — a five-reasons guide route with the advertiser’s joint-pain claim and a 60-day risk-free trial.

Guide route
04

Better dog bed listicle

dogfriendlyco.com/pages/5-reasons-better-dog-bed — a second bed listicle carries the same copy under a 10-year no-sag guarantee headline.

Guide route
Example run · 13 Oct 2026 · 16 rows · 6 opened ads · 5 verified ads · 4 displayed route groups · Complete.
Methodology

How ad destinations become verified route groups.

Published by Spytrend from a dated, bounded example.

Exact identity

Searches use one canonical domain; opened ads must match one verified advertiser or page.

01

Bounded verification

At most six ordinary-price ads are opened across distinct routes, offers and CTAs.

02

Conservative normalization

Only tracking-only variants are grouped; semantic query values remain distinct.

03

URL-only classification

Route type comes from returned URL structure, not rendered page content.

04
FAQ

Before you run it.

Does this crawl competitor websites?

No. It uses returned ad destinations and does not fetch page content.

Can it measure landing-page conversion?

No. It reports route observations, not clicks, conversion rate or revenue.

Why can two similar URLs remain separate?

Semantic path or query differences may represent different offers and are preserved.

What happens to expensive ad openings?

Known multilang openings with higher token cost are skipped within this bounded workflow.

Spytrend MCP

Map competitor landing routes from active Meta ads.

Connect Spytrend MCP, choose the controlled inputs and run the four prompts.