Meta Ad Library API: What It Actually Returns (and Its Limits)
The Meta Ad Library API returns political ads worldwide but commercial ads only in the EU and UK. What that means for US competitor research, and what to do instead.
By the AdEye team
July 2026 · 9 min read
Public ad-library data only. Nothing behind a login.
ads found · showing top creatives
The Meta Ad Library API only returns commercial ads if you query EU member states or the UK. Everywhere else, including the United States, it returns political and social-issue ads only. That single restriction is what most developers discover an hour into a build, after identity verification, after registering an app, after writing the request. If your goal is to pull a US competitor's product ads programmatically, the official API will not do it, and no parameter combination changes that.
This is not a bug or a rate limit you can raise. It is the design. Meta opened commercial ad data in the EU because the Digital Services Act required it, and left the rest of the world at political ads only. Here is what the API does return, what it costs you to get there, and what to do instead.
What is the Meta Ad Library API?
The Meta Ad Library API is the programmatic interface to the public Facebook Ad Library, Meta's transparency archive of ads running across Facebook, Instagram and Messenger. The web version at facebook.com/ads/library is open to anyone with a browser. The API is the version you can query in code, and it plays by stricter rules than the website does.
Those stricter rules are the whole story. The public website will happily show you a US brand's live product ads. The API, querying the same archive, will not hand them to you unless you point it at Europe.
What the API actually returns
Coverage depends entirely on the ad_reached_countries parameter and the ad_type you ask for.
| What you want | US and rest of world | EU and UK |
|---|---|---|
| Political and social-issue ads | Yes, archived worldwide | Yes |
| Regular commercial and product ads | No | Yes, via ad_type=ALL |
| Spend and impressions | Political ads only, as ranges | Reach data on EU-delivered ads |
| Retention | Seven years for political ads | About twelve months for commercial |
| Rate limit | Roughly 200 calls per hour | |
Read that first data row and the second together and the picture is clear. Setting ad_type=ALL, the parameter that returns normal product ads, only yields results when ad_reached_countries names an EU member state or the UK. Query the US with the same call and you get political and issue ads back, or nothing. Developers usually assume they have made a mistake. They have not.
Why the EU gets more data
Because the law compels it. Under the DSA's ad-repository obligations, every ad delivered to EU users has to appear in a public archive regardless of subject, with reach information attached, and stay there for roughly a year. Meta complied in the EU and did not extend it voluntarily. The gap between EU and US ad transparency is a regulatory artifact, not a product decision you can appeal.
What it takes to make your first call
Even for the data you can get, there is a runway. You need a Facebook developer account and a registered app, and you need to complete identity verification, which means submitting ID and, in practice, waiting. Then you are working inside a rate limit of about 200 calls an hour, which sounds generous until you try to page through one large advertiser's history and realize each page burns a call.
The returned fields are also thinner than people expect. You get creative bodies, page names, run dates and, for political ads, bucketed spend and impression ranges. Bucketed matters: you are told an ad spent somewhere between $5,000 and $10,000, not what it spent. For commercial ads in the EU you get reach, not budget, and not return.
Can I use the Meta Ad Library API to see competitor ads in the US?
No, not for their normal product ads. This is the question the API disappoints people on most often, so it is worth being blunt. If your US competitor runs consumer ads for a product, those ads are visible on the Ad Library website and absent from the API. The only way the API surfaces a US advertiser is if they run political or social-issue ads, which most ecommerce and SaaS brands never do.
That leaves three honest paths. You can query the EU if the brands you track advertise there, and accept a European view of their creative. You can work the website manually, which is fine for a handful of competitors and miserable past that. Or you can use a tool that has already solved the collection problem across every public library, not just Meta's.
The workaround most teams land on
The reason ad intelligence tools exist is precisely this gap. The public data is there, on the website, for anyone to see. It is the gathering, structuring and maintaining of it that is hard, and the official API declines to help outside Europe. The usual next step is to reach for a script, so it is worth reading what actually happens when you build a Facebook Ad Library scraper before you commit engineering time to one.
AdEye reads the public ad libraries across Meta, Google, TikTok and YouTube and merges them into one searchable feed, so a US brand's live product ads are actually retrievable, alongside the same brand's Google and TikTok creative. Every ad gets auto-tagged by hook, angle and format, and ranked by run length and variation count, which are the public signals that stand in for the spend numbers no platform will give you. If you are building around ad data generally, the same principle applies to any public web source: the collection layer is the work, which is why teams tend to turn messy public pages into clean structured data with something purpose-built rather than maintaining scrapers by hand.
What about the other platforms' APIs?
They are not better. Google's Ads Transparency Center has no general public API, so Google ads library research means working the interface or a tool that already does. TikTok offers no public API for Creative Center or Commercial Content Library data either, which is why TikTok ads library search by brand is awkward natively. The pattern across every platform is the same: generous public websites, restrictive or absent APIs. If what you actually need is ad data in code rather than an interface to click through, a cross-platform ad library API solves the problem the three official ones leave open.
How to decide what to build
Be honest about which of these you actually are.
- Researching political advertising. The official API is genuinely good for this. Worldwide coverage, seven years of history, spend ranges. Build on it.
- Tracking EU commercial advertisers. The API works, within the rate limit and the twelve-month window. Build on it, carefully.
- Tracking US commercial advertisers. The API cannot help you. Do not spend a sprint proving that to yourself.
- Doing competitor creative research, not data engineering. You want a feed, not a pipeline. Use a tool.
The trap is the fourth group starting down the first group's road because the API is free and documented. Free and documented is not the same as fit for your purpose. Most people asking about the Meta Ad Library API do not want an API at all. They want to see what their competitors are running and why it works, which is a research problem wearing an engineering costume.
The short version
The Meta Ad Library API is a political-ads API with an EU commercial exception bolted on by regulation. It requires identity verification and a developer app, limits you to about 200 calls an hour, buckets its spend data, and will not return US product ads under any parameter combination. It is the right tool for election researchers and the wrong tool for marketers. If your competitors are US brands selling things, skip the API and search the public ad libraries in one place instead.
Last updated July 2026. API behavior and DSA obligations change; verify current limits in Meta's developer documentation before building.
See what your competitors are running with AdEye
Type any brand and watch their live ads stream into one feed from Meta, Google, TikTok and YouTube, each AI-tagged with its hook, angle and a working signal. Public ad-library data only.
Popular ad spy use cases