The Meta Ad Library: What It Shows, and What It Never Will
No budgets, no impressions, no end dates, and outside the EU no commercial ads at all. The gap between what people expect and what the law actually requires.
For anything that is not a political or issue advertisement, the library shows you only what is running right now. No archive. No spend. No impressions. No audience. And outside the European Union, the interface will not return an ordinary commercial advertisement at all.
That is a long way from how the tool is usually described, and the gap matters, because a lot of competitive research is built on an assumption about what is in there.
This page sets out what it actually contains, the law that decides that, and what you can genuinely learn from it.
What the platform says it holds
The help documentation is unambiguous once you read the two sentences in the right order.
For all advertisements. You can search for advertisements that are currently active on the platform’s products. That is the whole entitlement for ordinary commercial advertising.
For social issue, election and political advertisements. You can also search inactive ones, and the entry shows who funded the ad, a range of how much they spent, and the reach across multiple demographics.
The retention. The platform states that it stores these ads, meaning the political and issue category, in the library for seven years.
Removal. The documentation notes limited circumstances in which advertisements may be removed, such as serious violations of the platform’s content standards or a valid government request.
What follows immediately. Any claim that you can research a competitor’s advertising history is wrong for the commercial case. If the ad has stopped running and it is not political, it is gone from your view.
The field list is where the truth is
The interface reference documents every field with its restriction attached, and this is the clearest statement of what is and is not available.
Political and issue advertisements only. Amount spent. Impressions. Demographic distribution. Estimated audience size. Delivery by region. Funder bylines. Currency.
Note what that list is. It is every field with commercial value. Spend, reach, audience and geography are all in the political-only tier.
Available for all advertisements. Identifier, creation time, the creative bodies, link captions, link descriptions and link titles, delivery start time, delivery stop time, a snapshot URL, languages, page identifier, page name and the platforms it ran on.
Available only for advertisements delivered to the UK or the EU. Targeted ages, targeted gender, targeted locations, estimated total reach in the EU, payer and beneficiary information, and a reach breakdown by age, country and gender.
And the sentence that decides everything for non-European advertisers. The reference states that advertisements which did not reach any location in the EU will only be returned if they are about social issues, elections or politics.
Even the spend range is coarse. Where it exists, it is published in bands: under 100, 100 to 499, 500 to 999, 1,000 to 5,000, and upward through to above one million. Never a figure.
Every field with commercial value sits in the political-only tier. The EU tier exists because European law requires it. Source : Platform archived ad field reference (2026)
What an ordinary ad card actually shows
I searched a well-known software company on the public interface, from France, with no account. It returned 180 results. Here is everything a card carries.
Status. Active.
A library identifier. Useful for citing a specific ad and for finding it again.
A start date only. The date delivery began. There is usually no end date, because the field is blank while an ad is still running: the reference states that if delivery stop time is blank, the ad will run until the advertiser stops it or spends the budget.
Platform icons. Which surfaces it runs on.
A version note. Whether the ad has multiple versions, or how many ads use the same creative and text. This is quietly one of the most useful things on the card.
A transparency block for the EU, on most but not all entries. One in the first ten did not display it.
The advertiser name, the creative, the text and the call-to-action button.
What is absent. Budget. Spend. Impressions. Audience. Targeting. Performance. End date.
This is the confusion that most commonly appears in writing about the library, and it matters if you are reasoning about European obligations.
What the regulation requires. Providers of very large platforms must compile and make public a repository of the information below, for the entire period during which they present an advertisement and until one year after the advertisement was presented for the last time.
What it must contain. The content of the ad including the product, service or brand name and the subject matter. The person on whose behalf it is presented. The person who paid, if different. The period during which it was presented. Whether it was intended for particular groups of recipients and, if so, the main parameters used, including where applicable the parameters used to exclude groups. And the total number of recipients reached, with aggregate numbers broken down by member state where the ad targeted specific groups.
How it must be accessible. Through a searchable and reliable tool allowing multicriteria queries, and through application programming interfaces. Both, not either.
What it must not contain. Any personal data of the recipients to whom the advertisement was or could have been presented.
Where the seven years comes from. Platform policy, applying to political and issue advertising, worldwide. It is not the legal requirement, and conflating the two produces a claim about European law that is six years too generous.
One clause worth knowing about removed ads. Where a platform has removed or disabled an advertisement for alleged illegality or breach of its terms, the repository must omit the content, the beneficiary and the payer, and instead carry the statement-of-reasons information the regulation specifies elsewhere.
One year after last presentation is the law. Seven years is a platform policy for political advertising only. Source : Regulation (EU) 2022/2065, Article 39 (2022)
Why European ads show more
The field tiers are not a design choice. They are a legal schema, and you can read the regulation off the interface.
The regulation requires the main targeting parameters. So target_ages, target_gender and target_locations exist, and exist only where the regulation applies.
It requires total recipients reached. So eu_total_reach exists, and only there.
It requires the beneficiary and the payer. So beneficiary_payers exists, and only there.
It requires an API. So there is one, and its commercial coverage begins and ends with European delivery.
What that means for a US or Asian advertiser researching a competitor. Unless that competitor runs ads in Europe, you will find nothing in the interface. The public web interface still shows currently active ads, but the structured, queryable version of the library is effectively a European artefact.
And a useful inversion. If you want to see a global competitor’s targeting parameters, look at their European delivery. It is the only place the platform is obliged to tell you.
The API is public but not anonymous
Getting programmatic access costs more than a signup form, and the reason is revealing.
What it covers. Advertisements about social issues, elections or politics delivered anywhere in the world during the past seven years, and advertisements of any type delivered to the UK or EU during the past year. That one sentence is the whole scope.
Step one: confirm your identity and location. The platform directs you to the same confirmation process required to run political advertising, and states that it can take a few days to confirm what you submit.
Step two and three. Create a developer account, agree to the platform policy, and add an app.
What that means. Anyone can use it, but nobody can use it anonymously. Researching a competitor’s European advertising leaves an identity trail with the platform.
The query limits worth knowing before you build anything. Search terms are capped at 100 characters. You can pass a maximum of ten page identifiers per request. The countries reached parameter is the only required one. Search type is either unordered keywords or exact phrase.
One limitation that catches multilingual research. The platform does not translate your keyword searches, and says so: you should write them in the language of the ads you are searching. A German campaign will not surface on an English keyword.
And an undocumented ceiling. There is a rate limit error code, and no published quota. You will discover your limit by hitting it.
None of the above makes the library useless. It makes it useful for different things than people assume.
Reading a competitor’s current message. You see the actual copy, the actual creative and the actual call to action, on the ads running today. That is real and it is not available anywhere else.
Counting variants. The card tells you whether an ad has multiple versions and how many ads share a creative and text. A competitor running one creative and a competitor running forty are running different operations, and you can tell which from the outside.
Reading longevity. The start date on a currently active ad tells you how long a message has survived. An ad running for eight months is one they are not tempted to switch off, which is a stronger signal than any spend figure would be.
Mapping placements. The platform icons tell you where they are choosing to appear.
Seeing European targeting parameters. Where the ad is delivered in Europe, you get targeted ages, gender and locations. That is the closest thing to a competitor’s audience definition you will ever get legitimately.
And knowing what to stop claiming. No spend, no impressions, no performance, no historical archive for commercial ads. Anyone selling you competitive spend intelligence from this source is estimating, and should say so.
How to use it in an hour
Six steps that produce something usable without any tooling.
Search the competitor’s page name, not their brand keyword. Keyword search matches ad copy, which will surface everyone bidding on the topic. Page name gets you their ads.
Set the country deliberately. Results differ by country, and European countries return the transparency block that others do not.
Screenshot every distinct creative with its start date. The dates are the analysis. Everything running more than a few months is a message that works for them.
Count the variants. Note how many ads share each creative and text. That tells you their testing cadence.
Read the copy for claims, not for style. What they promise, what they quantify, and what they carefully avoid saying is the useful part.
Repeat it monthly. A single snapshot tells you what is running. Two snapshots a month apart tell you what they killed, which is the more interesting half.
The dates are the analysis. Two snapshots a month apart tell you what they killed, which is the more interesting half. Source : Method, applied to the public interface (2026)
Where to go next
You want the format specifications behind those creatives.Meta ad formats.
You are weighing the automatic campaign type.Meta Advantage+.
For commercial ads, the library shows only what is currently active. There is no searchable archive of a competitor’s past advertising.
Spend, impressions, demographics, audience size and delivery by region are political-only fields. Every field with commercial value sits in that tier.
Even there, spend is a band, from under 100 up through above one million, never a figure.
Outside Europe, the interface returns no ordinary commercial advertisement at all. The documentation states it plainly.
The European tier exists because European law requires it: targeting parameters, total recipients reached, and payer identity.
One year, not seven. The regulation requires retention until one year after last presentation. Seven years is a platform policy for political advertising.
The API is public but not anonymous, requiring the same identity confirmation as running a political ad, which the platform says takes days.
What it is genuinely good for: current messages, variant counts, how long an ad has survived, placements, and European targeting parameters.
No. Amount spent is documented as available only for advertisements about social issues, elections or politics, and even there it is published as a range rather than a figure. Ordinary commercial ads carry no spend data at all.
Can I see a competitor's past ads?
Generally no. For anything other than political and issue advertising, the library exposes only advertisements that are currently active. Inactive commercial ads are not searchable.
Does the library show impressions or reach?
Impressions and demographic distribution are political-only fields. A separate estimated total reach in the European Union exists for ads delivered to the UK or EU, but there is no impression count for commercial ads generally.
Why do European ads show more information?
Because European law requires it. The regulation obliges very large platforms to publish targeting parameters and total recipients reached, which is why fields for targeted ages, gender, locations and EU reach exist only for ads delivered there.
Is the retention period seven years?
Only for political and issue advertising, and that is platform policy rather than law. The European regulation requires retention until one year after the advertisement was last presented. Do not conflate the two.
What can I see for an ordinary competitor ad?
The creative, the text, the call-to-action button, the advertiser name, the library identifier, the start date, the platforms it runs on, and whether multiple versions exist. No spend, no impressions, no audience, and usually no end date.
Can I use the API without an account?
No. Access requires confirming your identity and location through the same process required to run political advertising, which the platform says can take a few days, plus a developer account and an app.
What is the library actually good for?
Seeing what messages a competitor is currently running, how many variants they are testing, which platforms they are on, and how long a message has been live. That is real competitive intelligence. It is just not budget intelligence.