Meta Ad Intelligence avatar

Meta Ad Intelligence

Pricing

from $0.34 / 1,000 ads

Go to Apify Store
Meta Ad Intelligence

Meta Ad Intelligence

Meta Ad Intelligence scrapes Facebook Ads Library to discover who is advertising in your niche, rank competitors by dominance score and share of voice, flag new entrants, and reveal top ad formats, CTAs, hooks, and creative trends for market research.

Pricing

from $0.34 / 1,000 ads

Rating

0.0

(0)

Developer

DeepMine

DeepMine

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

0

Monthly active users

5 hours ago

Last modified

Share

Meta Ad Intelligence: Competitor Ads & Creatives

Type a market keyword and see who advertises for it on Facebook and Instagram, ranked, with every ad and free tables by advertiser, landing domain, format and what changed since your last run.

AdvertiserAds (of 30)ShareAvg days runningFormatsLanding domain
KURU Footwear723.33%98Dynamic creative (7)kurufootwear.com
HOKA413.33%156Image (3), Catalog (1)hoka.com
Cholesterol Relief Community413.33%142Image (4)shop.pipitea.com

$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 five tables are free. The prefilled run (up to 60 ads) costs about $0.03.

What you can do with it

  • Map a market. Who advertises for a keyword, product or niche, how many ads each runs, for how long, in which formats and to which sites.
  • Rank competitors. The Advertisers table orders them by a dominance score (ads × average days running) and their share of the ads found.
  • See where the traffic goes. The Domains table groups the ads by landing site; the Formats table by image, video, carousel, dynamic creative or catalog.
  • Track changes. Run it again (or schedule it) and the Changes table lists the ads that are new, back, stopped or no longer listed since the last run of the same search.
  • Study creatives. Every ad's text, headline, button, landing page, picture, video and cards, with each variant on request.
  • Analyse a competitor. Paste its Facebook page and get the same tables for its own ads.

No login, no cookies, no API key: the data comes from Meta's public Ad Library, and every table is counted from the rows, with no AI or estimate.

Input

FieldWhat it does
🔎 Market keywords (searchQueries)Ad Library keyword searches, one per line. Each is one market in the tables.
🏢 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.
🌍 Country (country)Where the ads ran: a two-letter code (US, GB, DE, ...) or ALL. Default US.
💯 Max ads (maxAdsPerQuery)Ads per keyword, competitor or URL (default 200), most impressions first. You pay per ad, so this caps the cost.
🧬 Every variant (includeVariants)Also get each creative's other ads (other versions, start dates, placements). 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)Only ads started since the last run that weren't returned before; the tables then count only those.
FiltersAd Library URLs (startUrls), ad IDs (adIds), ad status, media type, ad category, exact phrase, dates shown.
Row layout (rowLayout)Current, or the earlier version's (see below).

Example: {"searchQueries": ["running shoes", "trail running shoes"], "country": "US", "maxAdsPerQuery": 200, "rowLayout": "current"}

Output

Ads (the dataset, one row per ad, the only thing you pay for). The Console shows it as tables; export as JSON, CSV or Excel.

  • pageName, pageUrl, pageId: the advertiser.
  • adText, headline, ctaText, landingUrl, image, videoUrl, cards: the creative (Meta's media links expire about 5 days after the run).
  • format, platforms: Image, Video, Carousel, Dynamic creative, Catalog; Facebook, Instagram, Messenger, ...
  • startedAt, lastShownAt, daysActive, isActive: the day the ad started and the last day it ran (from the Ad Library), the days between, and whether it still runs.
  • firstObservedAt, previouslyObservedAt: when this Actor first found the ad for the same search, and the last run before this one that did (empty for an ad seen for the first time). These are our observations, not Meta's dates.
  • collationCount, adsCount, adArchiveId, adLibraryUrl, rank, totalCount, searchInput, and Meta's full record after them.

Free tables (Output tab; records in the run's key-value store, not dataset rows, so never charged):

  • MARKET: one row per search. totalAds, totalAdvertisers, topAdvertiser, topAdvertiserSharePct, topDominanceScore, topFormat, topCta, topAdvertisers, topHooks (most used opening lines), battleTestedCount, gainingTractionCount, newTestCount (ads started 30+, 14-29 and under 14 days ago), avgAdAgeDays, longestRunningAdId, topLandingDomain, formats; scope says what the counts are of, with metaCount (Meta's count for the search), sampleComplete and foundByEarlierSearches; and the changes: newAds, backAds, stoppedAds, noLongerListed, notInThisSample, previousRunAt.
  • ADVERTISERS: per search and advertiser page. advertiserAdCount, shareOfVoicePct, advertiserAvgAdAgeDays, dominanceScore, isNewEntrant, advertiserTopFormat, advertiserTopCta, then activeAds, oldestStartedAt, newestStartedAt, longestRunningDays, formats, topLandingDomain, landingDomains, creativeGroups, platforms, firstObservedAt, newAds, noLongerListed.
  • DOMAINS: per search and landing domain: ads, sharePct, advertisers, topAdvertisers, formats, activeAds, avgAdAgeDays, start dates.
  • FORMATS: per search and format: the same counts, with the age bands.
  • CHANGES: one row per ad that is new, back, stopped or no longer listed since the last run of the same search, with its dates.

The rows of ADVERTISERS, DOMAINS and FORMATS add up to the search's totalAds (ads without a landing page or format have a row of their own).

Signals, and what they mean

  • daysActive and the age bands: how long the advertiser kept the ad running. avgAdAgeDays and advertiserAvgAdAgeDays count days since the ad started.
  • dominanceScore: an advertiser's ads × their average days running, among the ads found. Many ads that keep running score high.
  • shareOfVoicePct, sharePct: the advertiser's (domain's, format's) share of the ads this run returned for the search, not of the market, impressions or spend. A search stopped at Max ads counts its most-impressions-first sample; scope says which.
  • isNewEntrant: the advertiser's oldest ad found started at most 30 days ago.
  • collationCount (same creative) and creativeGroups: how many ads use the same creative and text, and how many different creatives an advertiser runs.

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); EU and UK reach comes with Details for ads shown there.

Tracking changes

Every run keeps a snapshot of each search (the keywords or competitor plus country, status, category, media type, dates and exact phrase: change one and it is another market) in the key-value store meta-ad-intelligence-snapshots of your account, and compares with the last run of the same search:

  • new: not found by any earlier run of the search. back: found before, missing from the last run, found again.
  • stopped: was active, now stopped (only searches with Ad status Active and inactive see stopped ads).
  • no longer listed: the last run found it, this run read the whole search and didn't. A search stopped at Max ads never calls an ad gone; it counts it in notInThisSample instead.

The first run of a search is its baseline: it lists no changes. Each ad is one row per run, charged once, even when several searches find it; the later searches count it in foundByEarlierSearches.

Saved inputs from the earlier version

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

  • searchQueries is read as before; advertiserNames is read as keyword searches, as before (used only when searchQueries is empty), and maxAdsPerAdvertiser as Max ads (when maxAdsPerQuery isn't given).
  • A run with one of those fields and no rowLayout 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, linkUrl, startDate and endDate as ISO dates, ...), then the fields above. rowLayout set to current or earlier chooses either way.
  • The market_summary and advertiser_summary rows are now the free MARKET and ADVERTISERS tables, with the same keys first, instead of paid rows in the dataset.
  • Max ads is now exact, and each ad is one row even when two searches find it.

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: the five tables, 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

  • The tables count the ads a run returns: raise Max ads for a bigger sample. Meta lists most impressions first, and counts no more than 50,000 ads per search.
  • 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, cookies or an AI key? No. It reads Meta's public Ad Library, logged out, and counts the tables itself.

How do I watch a market every week? Schedule the run with the same input. Each run's CHANGES table lists what changed since the one before.

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 Intelligence helps you, a short review on the Store helps others find it.