Meta Ad Spy avatar

Meta Ad Spy

Pricing

from $0.34 / 1,000 ads

Go to Apify Store
Meta Ad Spy

Meta Ad Spy

Meta Ad Spy scrapes Facebook Ads Library to find winning products, dropshipping trends, and top Shopify ad angles. Discover long-running Meta ads, top CTAs, hooks, formats, and competitor creatives by keyword to validate products before you spend.

Pricing

from $0.34 / 1,000 ads

Rating

0.0

(0)

Developer

DeepMine

DeepMine

Maintained by Community

Actor stats

2

Bookmarked

11

Total users

1

Monthly active users

a day ago

Last modified

Share

Meta Ad Spy: Facebook & Instagram Competitor Ads

Paste a competitor's Facebook page and get every ad it runs on Facebook and Instagram, with the creative, cards, variants, dates, placements and how long each ad has run.

AdvertiserAdHeadlineFormatDays runningSame creativeStarted
GymsharkYour go to gym set just got a summer upgrade πŸ‘€Shop Best SellersDynamic creative10812026-07-02
GymsharkThe pieces everyone’s talking about. Shop our best…Shop Best SellersCatalog (6 cards)172026-10-01
GymsharkMegan Thee Stallion does gym and has the receipts…Real hot girl sh*t takes work πŸ’…Dynamic creative422026-10-14

$0.45 per 1,000 ads on Starter ($0.55 Free, $0.39 Scale, $0.34 Business), ad details included. No start fee, and the search summary is free. The prefilled run (up to 30 ads) costs about $0.01.

What you can do with it

  • Spy on competitors. Every active ad of an advertiser, from its Facebook page link, page id, Ad Library link or name.
  • Research products and niches. Search ads by keyword or product (e.g. posture corrector), in any country.
  • Look up single ads. Paste Library IDs or ad links and get those ads, whatever their country or status.
  • Build swipe files. Ad text, headline, button, landing page, picture and video, and every card of carousel, dynamic and catalog ads.
  • See what keeps running. How long each ad has run and how many ads use the same creative, with every variant on request.
  • Watch competitors launch. Schedule it with Only new ads and get just the ads started since the last run.

No login, no cookies, no browser extension: the data comes from Meta's public Ad Library.

Input

FieldWhat it does
🏒 Competitors (advertisers)Facebook page links (facebook.com/gymshark), page ids, Ad Library links of an advertiser, or page names exactly as they show on the ads.
πŸ” Keywords or products (searchQueries)Ad Library keyword searches, one per line.
πŸ†” Ad IDs (adIds)Single ads: Library IDs or ad links (facebook.com/ads/library/?id=...).
🌍 Country (country)Where the ads ran: a two-letter code (US, GB, DE, ...) or ALL. Default US.
πŸ’― Max ads (maxAdsPerQuery)Ads per competitor, search or URL (default 200). You pay per ad, so this caps the cost.
🧬 Every variant (includeVariants)Also get each creative's other ads (see Variants below). Each is an ad row.
πŸ“‹ Details (includeAdDetails)The advertiser's verification, Instagram account and followers; for ads shown in the EU or UK, reach, reach by country, ages, gender, payer and beneficiary.
πŸ”” Only new ads (onlyNewAds)Monitor mode: only ads started since the last run that weren't returned before.
FiltersAd Library URLs (startUrls), ad status, media type, ad category, exact phrase, dates shown.

Example: {"advertisers": ["https://www.facebook.com/Gymshark/", "https://www.facebook.com/nike"], "country": "US", "maxAdsPerQuery": 100}

Output

One row per ad. The Console shows it as tables (Overview, Stats, Creatives, Political, Details); export as JSON, CSV or Excel. The main fields:

  • pageName, pageUrl, pageId: the advertiser.
  • adText, adTextSnippet, headline, ctaText, landingUrl: the ad's text, headline, button and where it leads.
  • image, videoUrl: the picture (or video frame) and the video file. Meta's media links expire about 5 days after the run.
  • cards: for carousel, dynamic creative and catalog ads, every card's headline, text, description, landingUrl, ctaText, image and videoUrl.
  • format: Image, Video, Carousel, Dynamic creative, Catalog, ...
  • platforms: where the ad runs (placements): Facebook, Instagram, Messenger, Threads, Audience Network, WhatsApp.
  • isActive, startedAt, lastShownAt: whether it still runs, the day it started and the last day it ran.
  • adArchiveId, adLibraryUrl: the ad's Library ID and its page in the Ad Library.
  • rank, totalCount, searchInput: its place in the search (1 = most impressions), Meta's count of ads for the search, and which competitor or search found it.
  • With details: isPageVerified, instagramUrl, instagramFollowers, euReach, ukReach, targetAges, targetGender, reachByCountry, payer, beneficiary.
  • After these, each row also has Meta's full record (snapshot with every card, image and video, collationId, startDate, endDate, ...), in the same form as other Ad Library scrapers.

Spy signals, and what they mean

  • daysActive: days from the day the ad started to the last day it ran (today, for active ads). It shows how long the advertiser kept paying to show the ad.
  • collationCount (🧬 Same Creative): how many ads use this same creative and text, Meta's count of the ad's group. Meta gives it on one ad of each group, so it's often empty.
  • adsCount: how many ads Meta lists together with this one in the results.
  • Variants: with Every variant on, the other ads of each group come as rows too (other versions, start dates, placements of the same creative). Group them by collationId.

These are signals of what advertisers keep running, not results: Meta publishes no sales, clicks, conversions or return on ad spend for commercial ads. Spend and impressions ranges exist only for ads about social issues, elections or politics (set Ad category).

Search summary (free)

Each run also writes one summary per competitor or search to the SUMMARY record (Output tab, Search summary). It is free: it isn't a dataset row.

  • totalAds: ads the run returned for it.
  • battleTestedCount, gainingTractionCount, newTestCount: ads that started 30 or more days ago, 14 to 29 days ago, and under 14 days ago.
  • avgAdAgeDays, longestRunningDays, longestRunningAdId, longestRunningBody: average days since start, and the ad that started longest ago.
  • topFormat, topCta, topAdvertisers, topHooks: the most used format and button, the advertisers with the most ads (with counts), and the most used opening lines.
  • scrapeStatus, scrapeError: ok, failed (with why) or not_found.

Saved inputs from the earlier version

Tasks, schedules and API calls made for the earlier version keep working:

  • productKeywords is read as Keywords or products, advertiserNames as Competitors (now looked up as the advertiser's page), maxAdsPerAdvertiser as Max ads.
  • A run whose input uses one of those fields gets the earlier rows: its keys first, in the same order and form (rowType, query, advertiser, adArchiveId, adAgeDays, trendLabel, body, headline, cta as SHOP_NOW, format as VIDEO or DCO, imageUrl, videoUrl, linkUrl, startDate and endDate as ISO dates, ...), then the fields above.
  • The summary rows are now the free SUMMARY record, with the same keys, instead of rows in the dataset.
  • Max ads is now exact (the earlier version could return 30 ads for a max of 17), pageLikes is filled, and videoUrl is the standard-definition file (HD is in snapshot.videos).

Pricing

FreeStarterScaleBusiness
Ad$0.55$0.45$0.39$0.34

Prices per 1,000 ads, ad details included; no start fee. You pay only for ad rows: summaries, ads not found and failed searches are free. With Only new ads you pay only for the new ads. Set a maximum charge in the run options to cap a run.

Limitations

  • Meta shows commercial ads' spend and reach only for ads shown in the EU or UK (with Details), and spend ranges only for political and issue ads.
  • An advertiser given by name must match its page name exactly; a page link or id always works.
  • Image and video links expire about 5 days after the run: download what you want to keep.
  • About 3 minutes per 1,000 ads.

FAQ

Do I need a Facebook account or cookies? No. It reads Meta's public Ad Library, logged out.

Can I track a competitor every day? Yes: turn on Only new ads and schedule the run. Each run returns only the ads started since the last one.

Does it show which ads make money? No one can from the Ad Library: Meta publishes no sales or return on ad spend. Long-running ads and creatives used in many ads are the public signals; this Actor gives you both, with their definitions above.

Feedback

Something missing or wrong? Open an issue in the Issues tab and we'll look at it. If Meta Ad Spy helps you, a short review on the Store helps others find it.