If you've ever wondered why a Facebook ad from six months ago is still sitting in the Ad Library, or why an EU search on the Google Ads Transparency Center sometimes returns more detail than a US search — the answer is one law: the EU's Digital Services Act (DSA). Article 39 requires every platform the EU designates a "very large online platform" or "very large online search engine" to publish a searchable, public repository of every ad it serves to EU users, and to keep each ad visible for a year after it stopped running. This isn't a product feature the platform can quietly retire. It's a legal obligation, and it's the reason the EU has become the most transparent ad market in the world for anyone doing outside research on a business's marketing activity.
This piece breaks down exactly what the law requires, what each major platform's repository actually shows in practice as of mid-2026, and how agencies use that transparency to find businesses worth pitching.
The law behind it: Article 39 of the DSA
The Digital Services Act (Regulation (EU) 2022/2065) is the EU's baseline rulebook for online platforms. Most of it deals with illegal content and platform accountability, but Article 39 — "Additional online advertising transparency" — is squarely about ads. It applies only to platforms the European Commission has designated as very large online platforms (VLOPs) or very large online search engines (VLOSEs): currently Facebook, Instagram, TikTok, LinkedIn, YouTube, Google Search, and a handful of others based on active-user thresholds.
Article 39 of the EU's Digital Services Act requires every very large online platform that presents advertisements to compile a searchable, publicly accessible repository of those ads — including the ad content, who paid for it, when it ran, how it was targeted, and how many people it reached — and to keep each ad in that repository for the entire period it runs plus one year after it was last shown.
The DSA's core obligations, including Article 39, applied to designated VLOPs and VLOSEs from four months after their individual designation date where that fell before 17 February 2024, and to everyone else from 17 February 2024 onward — the date the regulation became generally applicable (Article 92-93, Regulation (EU) 2022/2065). Meta's Facebook and Instagram platforms were among the first batch designated, on 25 April 2023, which is why their EU repository predates the general 2024 deadline.
Two details matter for anyone using this data:
- No personal data of ad recipients. The repository can't identify who saw an ad — only aggregate, anonymized reach and targeting parameters (paragraph 2(e) and 2(g) of Article 39).
- No spend disclosure requirement. The law requires content, advertiser identity, payer identity, run dates, targeting parameters, and reach — not budget. If you want to estimate spend, you're inferring it from duration and reach, not reading a number off the page.
What each platform's repository actually shows
| Platform | Repository | Shows spend? | API access | EU retention |
|---|---|---|---|---|
| Meta (Facebook, Instagram) | facebook.com/ads/library | No (political/issue ads only) | Political/issue ads only via official API | 1 year after last run |
| Google (Search, YouTube, Display) | adstransparency.google.com | No | None | 1 year after last run |
| TikTok | library.tiktok.com | No | Limited — improving per Dec 2025 commitments | 1 year after last run |
| linkedin.com/ad-library | No | None public | 1 year after last run |
None of the four platforms disclose spend in their public repository — that column is intentionally "no" across the board, because Article 39 doesn't require it. Where they genuinely differ is retention depth, search usability, and how current the data is.
TikTok is the platform actively upgrading its repository right now. On 5 December 2025, the European Commission accepted binding commitments from TikTok to fix gaps regulators had found in its ad repository: TikTok agreed to show the full ad content as it actually appears in users' feeds (including link URLs), to update the repository within a maximum of 24 hours of an ad going live, to disclose the targeting criteria advertisers selected plus aggregated demographic reach data (gender, age group, Member State), and to add better search and filtering. That's a live regulatory improvement cycle, not a finished feature — worth re-checking if you're evaluating TikTok ad activity for a prospect and the repository looks thin.
The Meta API trap
This is the single most common mistake in ad-intelligence tooling. Meta's Ad Library website shows the full EU repository — every commercial ad served to EU users, per Article 39. Meta's official Ad Library API is scoped only to political and issue ads, full stop. It does not return commercial ad data for EU-served ads, no matter how the request is structured. Any product claiming to programmatically bulk-pull commercial EU ad data straight from Meta's own API is either misrepresenting what that endpoint returns or scraping the public web pages instead of using the API — which is a fragile, terms-of-service-adjacent approach that breaks the moment Meta changes its markup.
This matters practically: checking one prospect on the public website takes thirty seconds and needs no account. Checking hundreds of businesses across a city can't use "automate it via the API" for commercial ads — which is exactly why manual checking or purpose-built tools exist here.
Reading the repository like a prospecting signal, not a compliance document
For agencies, the EU repository's mandatory retention window is the useful part. A US-only ad library that drops an ad the moment it stops running only shows you what's live right now. The EU version — because the law forces a year of retention — lets you see a business's advertising history, not just its current snapshot.
Because EU law requires ads to stay visible for a year after they stop running, an agency checking a prospect's EU ad activity today can see not just what they're running now but what they tried and dropped over the past twelve months — a pattern no US-only ad library can show, since it clears data the moment a campaign ends.
Three read patterns worth knowing:
- Long-running ads that are still active. An ad live for 90+ days is being paid for because it's converting — nobody funds a loser that long. This is the strongest positive signal you can read off a public page for free.
- A cluster of ads that all started in the same week. Usually means the business (or an agency they just hired) started a new push. Worth checking whether their landing page has basic tracking in place before you pitch — a live campaign pointed at an untracked page is an easy, specific opening line.
- A one-year gap between an old flurry of ads and nothing since. Suggests something interrupted spend — budget, staff turnover, a bad campaign. Re-engagement is often an easier sell than first-time education, because they've already bought the category once.
We covered the mechanics of checking any single business's ad activity by hand — Meta and Google, step by step — in How to See What Ads a Company Is Running. That post is the tactical companion to this one: this piece explains why the EU data is unusually deep; that one shows you exactly where to click.
Where this breaks down for agency-scale prospecting
None of this is automatable at volume through official channels. There's no unified EU-wide ad API across platforms, Meta's API won't return commercial data, and Google and LinkedIn don't expose one publicly either. That leaves two options: check prospects one at a time by hand (fine for a handful of leads), or build (or buy) something that checks reach and ad presence across a defined universe of local businesses.
That's the gap CloseFast (closefa.st) is built for — it pulls local businesses from Google Maps for a given city and niche, checks their ad activity and tracking setup, ranks results by urgency, and drafts a pitch that cites the specific gap it found. If you've already compared per-prospect research tools on cost and credit models, our breakdown in CloseFast vs Clay: Which Fits Agency Prospecting? covers how a flat-fee model changes the economics of checking hundreds of businesses versus paying per lookup.
When manual checking is the right call
Not every use case needs automation. If you're qualifying five or ten prospects before a sales call, the public repositories are free, fast, and require no signup — checking Meta and Google by hand for ten businesses takes maybe twenty minutes. Automation earns its cost when you're screening a hundred-plus businesses across a city and need the ranking and pitch-drafting layered on top, not just the raw lookup.
The bottom line
The EU Ad Library isn't a single product — it's a set of platform-specific repositories that exist because Article 39 of the DSA legally requires them, with a mandatory one-year retention window that makes EU ad data uniquely deep compared to other markets. None disclose spend. None offer a full commercial-ads API — Meta's official API is political-ads-only, a distinction worth knowing before you trust a tool's claims about "automated EU ad data." For checking a handful of prospects, the public pages are free and fast. For checking a city's worth of businesses at once, that's a different job — and one that tools built specifically for local-agency prospecting, like CloseFast, exist to solve.