How to analyse a competitor's Facebook ads: nine signals in the Ad Library
The Meta Ad Library exposes public ads that a page runs on Facebook and Instagram. Exported into a spreadsheet, it helps you inspect which ads have run longest, where they send traffic, which formats they use and which ads appeared since your last export.
First get the data out
Find the competitor in the library and copy the number after view_all_page_id= in the URL. Paste it into the Facebook Ads Library Scraper with your country and All as the status, so you get past ads too, and download the result as CSV. On Apify Free, 300 results cost about $0.14. The export guide explains every column.
The nine signals
1. How many ads are live
Count rows with isActive true. Five active ads is a business keeping a light on; eighty is a team with a media budget and a testing cadence. Compare it to your own number before you compare anything else.
2. The longest-running ads
Days between startDateFormatted and today for active ads. A long run is a useful signal that the advertiser has kept the message in market; it does not prove the ad is profitable. Sort by this column and read the top ten slowly.
3. The number of versions
collationCount is how many variants of one ad Meta groups together. A concept with twelve versions is one they believe in enough to keep testing headlines and creatives for. A concept with one version is a guess.
4. Where the traffic goes
Group by the domain of snapshot.linkUrl. The landing pages with the most ads and the longest running times show which offers an advertiser keeps promoting. Open them; note the offer structure, the price anchoring, the guarantee and the form length.
5. The calls to action
snapshot.ctaText tells you the funnel. "Shop now" and "Learn more" are different businesses; "Book now", "Sign up" and "Get quote" tell you what they optimise for and how far the ad is expected to carry the customer.
6. The format mix
snapshot.displayFormat and the video, image and carousel counts. If seventy percent of their active ads are video and yours are stills, that is either an opportunity or a lesson, and the running times tell you which.
7. The platforms
publisherPlatform. Ads limited to Instagram, or to Facebook only, are placement decisions somebody made on purpose, usually after the numbers told them to.
8. The hooks
The first line of snapshot.body.text across their long-running ads. Questions, numbers, pain statements, social proof. Write down the pattern, not the sentence; the pattern is what you can reuse.
9. The launch cadence
Group start dates by week. A page that launches new ads every Tuesday has a creative pipeline; a page with one burst a quarter runs campaigns. Both tell you what you are up against and when to expect the next move.
What you cannot see, so nobody can sell it to you
Spend, clicks, conversions and cost per result are private for commercial advertisers. Meta publishes spend and impression ranges only for political and issue ads. The EU transparency block, available through the ad details option, gives a total reach and its split by country, age and gender for ads shown in the European Union; that is the closest thing to a public performance figure and it is real, not estimated. Anything else labelled "estimated spend" in a spy tool is a formula over the running time and the version count you now have in your own spreadsheet.
Keep it current: the weekly diff
- Save the scraper input as a task: the competitor's page ID, your country, status All and a stable
watchlistId. - Run it once to establish a baseline, then schedule it every Monday with
newAdsOnly: true. Each later dataset contains ad IDs the watchlist has not delivered before. The Shown after filter is about impressions in a date range and does not isolate launches. - Append the new rows to a sheet with n8n, Make or Zapier. To detect ads that stopped, also run a full export without
newAdsOnlyand compare the sameadArchiveIDandisActiveacross weeks. An inactive ad may have finished on schedule; its result is unknown.
To turn any export into a page you can scroll and share, the open-source swipe-file script builds an HTML gallery grouped by advertiser with a summary table of the signals above.
Questions people ask
Do they know I looked?
No. The library is public and records nothing about who reads it.
How many competitors can I track?
As many page IDs as you paste, within your run limits. On Apify Free, twenty pages with a hundred ads each cost about $0.90 if they all produce 100 new results; fewer new results cost less with a watchlist.
Can I get ads by keyword instead of by page?
Yes. A keyword returns every advertiser using it, which is how you find competitors you did not know about. The ad inspiration guide uses that to build a swipe file for a whole niche.