Competitor Meta Ads
sonar_ad_spy_adsA Facebook page's cached Meta ads (Facebook, Instagram, Messenger, Audience Network): stats over every cached ad (active count, longest running, new in 30 days, format and placement mix, max variants), the ads matching the filters with copy, CTA, landing URL, placements, days running and a longevity tier (30d+/60d+/90d+), and daily history of active/new ads (creative velocity). No spend or impression data exists for ads outside the EU — longevity and variants are the signals. Compact by default (no expiring media links; fields: "full" adds them). Media URLs are expiring CDN links; always give users each ad's permanent library_url. refresh_due: true means the copy is over 24h old (sonar_ad_spy_refresh fetches it). Cached read. Requires an Indie or Agency plan (a trial counts).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | longest running (default), newest, or most variants. | |
| limit | No | Ads to return (1-300, default 50). | |
| fields | No | "compact" (default): each ad without its expiring `media` links and `media_expires_at` — ids, the permanent `library_url`, dates, days running, longevity, format, copy, CTA, landing URL, placements, variants and EU reach stay (about 2.4× smaller). "full": adds each ad's `media` (video/image CDN links, which expire) and `media_expires_at` — only for downloading media right away. | compact |
| format | No | Only ads in this format. | |
| status | No | active (default) = running now; all = include stopped ads. | |
| min_days | No | Only ads running at least this many days — longevity is the honest 'winner' signal (30/60/90). | |
| history_days | No | Days of daily active/new-ad history (default 30). | |
| advertiser_id | Yes | Sonar advertiser id of a Facebook page (`advertiser_id` from sonar_ad_spy_competitors, or `advertiser.id` from sonar_ad_spy_open_page). | |
| include_hidden | No | Include ads this account removed from its scans. |