Ad libraries

The Facebook Ad Library tells you what is running, not what ran

How to search Meta's Ad Library properly, the three limits that decide what you can conclude from it, and what to do about the one that matters most.

Coverage checked . Platform libraries change their scope without notice, so verify anything load-bearing against the source.

Meta's Ad Library is the most complete public ad archive any platform publishes, and it is free. It is also the source most often misread, because the thing people want from it, a competitor's advertising history, is the one thing it is not designed to give you.

This page covers how to search it, the limits that constrain what you can honestly conclude, and where each limit stops being a search problem and becomes a collection problem.

Searching it properly

The library is at facebook.com/ads/library. Two searches behave very differently, and mixing them up is the usual first mistake.

  1. By advertiser. Pick the Page and you get that advertiser's currently active ads. This is the search that answers questions about a specific competitor, and it is the one to build a routine around.
  2. By keyword. You get ads whose text matches, across advertisers. Useful for finding who is bidding on a category or an angle, useless for completeness, since it only matches wording you thought to try.

Then narrow with the filters that change the answer rather than the ones that look tidy: country, platform (Facebook, Instagram, Audience Network, Messenger), media type, and the active date range. Country matters most. The library scopes results to delivery in the country you select, so a competitor can look dormant in one market and busy in another, and a single-country view will quietly mislead you.

Two details worth knowing before you draw conclusions from a result page. Ads run as part of one campaign appear as separate entries per placement, so a raw count overstates how many distinct creatives exist. And the per-ad details panel carries information that never appears in search results, including the EU, UK and Brazil transparency reach figures.

Limit one: commercial ads leave when they stop

Political and social-issue ads are archived for seven years with spend ranges and audience data attached, because regulation requires it. Commercial ads are a different product: they are visible while they are running, and they are gone from the library once they stop.

That single fact decides what the Ad Library can answer. It is a good snapshot of what a competitor is running today. It cannot tell you what they tried in March, what they killed after four days, or which creative they have kept funding since last year, and those are usually the interesting questions.

The only way to know how long an ad ran is to have been watching. The library publishes a start date, not an end date, so staying power is not in the data; it is in the difference between two observations. Any tool that shows you a competitor's ad history, including AdLemur, is showing you a record it built by checking repeatedly, not something it read out of Meta.

Limit two: there is no spend, and the estimates are models

Meta publishes spend ranges for political and social-issue advertising only. For commercial ads there is no spend figure, no impressions figure and no budget field, anywhere in the library or the API.

Every commercial spend number you have seen in an ad intelligence product is therefore modelled, by that vendor, from panel data or from their own inference. Some of those models are useful. None of them are an observation, and a vendor that presents one as a measurement is telling you something about their data hygiene. Duration is the honest proxy: nobody keeps paying for an ad that is not working.

The exception is European reach. Under the Digital Services Act, ads delivered in the EU carry a published reach figure, and the same applies to the UK and Brazil transparency disclosures. It sits in the per-ad details panel rather than in search results, which is why most guides miss it. It is a real observation, it is not a spend number, and EU, UK and Brazil figures are separate values measuring different regions, so summing or trending them together produces a statistic that means nothing.

Limit three: Meta is one platform of several

A competitor running Meta, Google, TikTok and Microsoft ads is four collection problems with four different coverage boundaries, not one search. The libraries disagree about geography in particular: Meta's commercial coverage is global, while TikTok's Commercial Content Library and Microsoft's Ad Library are scoped to European delivery. Comparing counts across them produces a chart where the axis means a different thing per bar.

We wrote up the boundary for each source in what every platform ad library actually covers, including the ones with no library at all.

The API is a separate, narrower product

If you are here to automate this, the Ad Library API is not the endpoint you are hoping for. Outside the EU it returns political and social-issue ads only, and it requires identity verification before you get a token. What the Meta Ad Library API actually returns has the detail and the honest options for commercial data.

A routine that produces conclusions you can defend

  1. Fix the advertiser identity first. Brands run several Pages, and regional or legacy Pages are a common way to read the wrong company's ads for a week without noticing.
  2. Fix the country list, and keep it the same every time. A change in country scope looks exactly like a change in competitor behaviour.
  3. Record what you saw, with the date you saw it. The library's value compounds only if you keep observations; a screenshot folder beats nothing and loses to a dated record.
  4. Treat a disappearance as a hypothesis, not a fact, until the collection that produced it was complete. An incomplete run and a stopped ad are indistinguishable in a spot check.
  5. Read the details panel for the ads you actually care about. That is where EU, UK and Brazil reach lives.
Can I see a competitor's past Facebook ads?
Not for commercial ads. The Ad Library shows ads while they are active and removes them when they stop. Political and social-issue ads are the exception and stay for seven years. Anything showing you commercial ad history was collected over time by a third party, not retrieved from Meta.
Does the Facebook Ad Library show ad spend?
Only for political and social-issue advertising, as a range. Commercial ads carry no spend or impressions figure. Ads delivered in the EU, UK and Brazil carry a published reach figure in the per-ad details panel, which is a different measure and is reported per region.
Why do I see the same ad several times?
One campaign can produce a separate library entry per placement, so counting entries overstates the number of distinct creatives. Deduplicate by creative before quoting a number.
Is the Ad Library the same as the Ad Library API?
No. The web library shows commercial ads. The API returns political and social-issue ads only outside the EU, and it requires identity verification first.

AdLemur is open source under the MIT license. Join the waitlist or read how agents read the same evidence over MCP.