Alfalfa

How to analyse a competitor's Facebook ads: nine signals in the Ad Library

Since 2018 every ad a page runs on Facebook and Instagram is public in the Meta Ad Library. Most marketers open it once, scroll a bit and close it. Exported into a spreadsheet, the same library answers the questions you actually have: what they push hardest, what has worked for them for months, where they send the traffic, and what they launched this week.

Updated September 2026.

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. For a page with 300 ads that is about a minute and fifteen cents. 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. Advertisers switch losing ads off within days, so anything running for two or three months is paying for itself. Sort by this column and read the top ten slowly; that is their proven message, in their words.

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 are the offers that make money. Open them; note the offer structure, the price anchoring, the guarantee, 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

  1. Save the scraper input as a task: the competitor's page ID, your country, status All.
  2. Schedule it every Monday. Set Started after to the previous Monday if you only want the launches; leave it empty if you want the disappearances too.
  3. Append the rows to a sheet with n8n, Make or Zapier. New rows are launches; last week's active ads that are now inactive are the ads that failed or finished. That list, read every Monday, is most of what an agency's "competitive intelligence" report contains.

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. Twenty pages with a hundred ads each is about a dollar a run.

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.

Try it on a competitor page Read: building a swipe file