Most competitor reports agencies send look the same: a slide per competitor, a grid of screenshots, a line saying "they are pushing video". The client nods, and the report goes into a folder. Nothing in it helps them decide anything.
A useful competitor ad report answers two questions every month: what changed since last time, and what should we do about it. Everything else is decoration. This article gives you a template built around those two questions, using only information the Meta Ad Library actually shows, and a workflow that keeps it repeatable month after month.
What the report can and cannot claim
Set expectations in the first meeting, not after the first report. The Ad Library does not publish spend, impressions or results for commercial ads, and you cannot see targeting. A competitor report built on the library can talk about behaviour: what is running, for how long, in which formats, with which messages and offers. It cannot talk about performance, and it should not pretend to.
That is still a lot. A competitor that keeps an ad live for months, adds variations to it and moves its messaging toward discounts is telling you something, even without numbers.
The template
Seven sections, in this order. The first one is the only one many clients will read, so write it last.
| Section | What goes in it | Where it comes from |
|---|---|---|
| Headline | Three sentences: what changed, why it matters, what we recommend | Your reading of the sections below |
| Activity | Total, active and inactive ads per competitor; video versus image share | Analytics tab summary |
| Staying power | The competitor ads that are still running after a long time | Winner badge, Longest Running sort |
| New this month | What each competitor launched since the last report | Newest Published sort |
| Messaging | Top words, top buttons, offer language | Analytics: Top Keywords, Top CTAs, Offer language |
| Price points | The prices competitors put in their copy | Analytics: Price points |
| Recommendations | Two or three actions, each tied to a finding above | You |
A few notes on the sections that need judgement.
Staying power
Every card shows days running and a stage badge. Winner means the ad has been running 45 days or more and is still active; an ad of the same age that has been stopped is marked Ended. Sort by Longest Running, or filter by stage, and show the client two or three Winners per competitor with one line each on what they have in common. This section is usually the most useful in the whole report.
New this month
Sort by Newest Published and look at what appeared since your last report. Do not list everything. Group the new ads by theme: a new offer, a new product, a new format. One sentence per theme is enough.
Messaging
The Analytics tab summarises the scanned copy. Top Keywords and Top CTAs show the words and buttons that dominate; Offer language shows how often ads mention free shipping, a discount, cash on delivery, limited stock, a money-back promise or buy-one-get-one. Compare them with last month. A shift from Learn More toward Shop Now, or a sudden rise in discount language, is exactly the kind of change a client should hear about.
The workflow
Once per client: set up the searches
In the side panel, build one search per competitor: the page or keyword, the country the client sells in and active status. The library keeps the search settings in the address bar: build each search's link with our search link builder and bookmark it with a name that includes the client, for example Client A — Competitor 2 — DE. Save the client's standard card filters by name with Save as preset and they are one click away too.
Changing the country or the filters between months breaks the comparison. Setting them once is what makes month-over-month meaningful.
Every month: scan, save, export
- Open the search link and let Auto Scan load the full list. It does not count the same ad twice.
- Turn on grouping by advertiser if a keyword search returns one dominant brand.
- Read the Analytics tab and copy the numbers for the Activity and Messaging sections into your working sheet.
- Save the ads you will show the client with a double-click on the creative. The Saved state filter lets you review only those.
- In the Starter plan, send the saved ads to the spreadsheet the extension creates in your own Google account; you open it to the client with Google's share button. Each row carries brand, domain, button, days running, landing URL, Shopify type and the date it was sent; new rows are added under the old ones, so the sheet becomes the history. We show how to turn that sheet into a research database in our Google Sheets article.
Every month: write the headline last
With the numbers and the saved ads in front of you, answer the two questions. If you cannot find anything that changed, say so. "No meaningful change; competitors are running the same winners" is a finding, and an honest one.
What the extension does not do
It is worth being clear with the client about this. The extension does not connect to anyone's ad account or to Ads Manager, and it does not produce a finished PDF. It turns the Ad Library into something you can filter, sort and export; the report itself is yours, built in whatever template your agency already uses. You sign in with a Google account for scan counters, not with Facebook.
Make the method explicit
Clients trust a report more when they understand how it was built. Add a short method note at the end: which competitors, which country, which date, and that the source is the public Ad Library. If you want the thinking behind comparing two dates rather than looking once, our article on competitor ad analysis explains it; for the creative side, see how to build a swipe file.
Plans for agencies
Scan limits grow with the plan; the free plan scans 2,000 ads a day, renewed in 6-hour windows. Depending on how many clients and competitors you track, compare the plans on the pricing page.
To do this with the extension: Competitor reports for agencies · Export to Google Sheets