We’re live on Product HuntSupport us

Meta Ad Library API: What You Get, Limits, Easier Options

GuidesAugust 15, 20268 min readBy Klipio team
Meta Ad Library API: What You Get, Limits, Easier Options

# Meta Ad Library API: What You Get, Limits, and Easier Options

The Meta Ad Library API is real, free, and official — but for most of the world it only returns ads about social issues, elections, and politics. If you're searching for this API because you want to pull a competitor's e-commerce ads into a spreadsheet, the API will not do that (with one big exception: ads that ran in the EU, which are queryable under European transparency law).

I'm telling you this in paragraph one because almost every other article on this topic buries it, and I've watched media buyers burn a week getting API access approved only to discover their competitor's ads aren't in it. Let me walk through what the API actually is, who it works for, the EU exception, and then the honest answer to "okay, so how do I actually get commercial ad data out of the Ad Library?"

What is the Meta Ad Library API, exactly?

It's a Graph API endpoint (ads_archive) that lets you programmatically search the same archive you see at facebook.com/ads/library. You send a query — keywords, a Page ID, a country — and get back JSON describing matching ads.

The catch is scope. Meta built this API for one purpose: political transparency. It was launched after 2018 so journalists, researchers, and watchdogs could audit election advertising. The ad_type parameter reflects this — the archive of ads the API can reach is, by default, ads that Meta has classified as being about social issues, elections, or politics.

Everything else — the Nike ads, the DTC skincare ads, the SaaS lead-gen ads you actually want to study — appears in the Ad Library website but is not returned by the API for most regions.

The one meaningful expansion: since the EU's Digital Services Act came into force, all ads that target any EU country are queryable through the API, commercial ones included, with extra transparency fields like EU reach. More on that below, because it's genuinely useful.

What do you need to get access?

Access is free but not instant. The steps, roughly in order:

  1. Confirm your identity with Meta. This is the same identity verification used for political advertisers: a government ID, and in some countries a mailed confirmation code. It ties API access to a real person and can take days.
  2. Create a Meta developer account at developers.facebook.com and create an app.
  3. Agree to the Ad Library API terms and generate an access token through the Graph API Explorer or your app.

None of this is hard, but it's friction — and it's friction in service of an archive that, again, mostly contains political ads. Decide whether the data on the other side is what you actually need before you upload your passport.

What fields does the API return?

For ads in scope, you can request fields like:

  • ad_creative_bodies, ad_creative_link_titles, ad_creative_link_descriptions — the ad text and headline variants
  • ad_delivery_start_time / ad_delivery_stop_time — when the ad ran
  • page_id, page_name — the advertiser
  • ad_snapshot_url — a link to view the rendered ad (this is a viewer URL, not a media file)
  • publisher_platforms — Facebook, Instagram, Messenger, Audience Network
  • For political ads: spend and impressions (as ranges, e.g. "$100–$199"), demographic_distribution, delivery_by_region
  • For EU ads: eu_total_reach, beneficiary_payers, and age/gender/location reach breakdowns

Two things practitioners always trip on. First, spend and impressions come as ranges, not exact numbers — fine for journalism, frustrating for competitive analysis. Second, ad_snapshot_url is not a download link. The API gives you metadata and text; it does not hand you the video file or image in any straightforward way, and Meta's terms prohibit redistributing snapshot content.

The EU exception: the API's most useful loophole

Under the DSA, Meta must expose transparency data for every ad shown in the EU, not just political ones. Practically, that means if your competitor runs ads targeting Germany, France, or any EU member state, those ads — commercial ads — are queryable via the API with ad_reached_countries set to an EU country. You also get EU reach numbers, which is the closest thing to a free performance signal the API offers anywhere.

If the brands you study advertise in Europe, this is genuinely workable for text and metadata analysis. If they only run US, Indian, or other non-EU campaigns, the API has nothing for you.

Rate limits and pain points

Even inside its scope, the API is not a joy:

  • Rate limits are tight and shared across your app. Bulk historical pulls mean pagination with cursors, backoff loops, and patience.
  • Search is exact-match-ish and shallow, same as the website. There's no "show me every ad in this niche" query.
  • No creative files. Text yes, media no.
  • Tokens expire and the identity confirmation has to be maintained.
  • Data quality wobbles — classification of what counts as a "social issue" ad varies by country, so coverage is inconsistent.

For researchers and journalists, these are acceptable costs. For a media buyer doing competitor research, the effort-to-value ratio is poor.

So how do I actually get commercial competitor ads?

Here's the honest landscape. The Ad Library website shows every active ad from every advertiser worldwide — the data exists and is public. It just has no export button and no commercial API. Your realistic options:

1. Manual browsing. Free, allowed, slow. Search the advertiser in the Ad Library, read through their ads, screenshot what matters, note the "Started running on" dates (long-running ads are the winners — advertisers only keep paying for ads that work). Fine for checking one brand occasionally.

2. Scraping. Technically possible, but automated scraping of the Ad Library at scale violates Meta's terms of service, and Meta actively fights it. I'm not going to pretend commercial spy tools don't do exactly this at industrial scale — they do — but building your own scraper puts your accounts and infrastructure at risk. Not legal advice; talk to a lawyer if you're considering it commercially.

3. Our free extension. Full disclosure: we make this. The Klipio Meta Ad Library Downloader is a free Chrome extension that works inside the Ad Library page itself. The part relevant to this article: every export includes a CSV spreadsheet of every ad in your search — advertiser, ad text, start date, links — which is exactly the "export data from Facebook ads" that people searching for this API usually want. Bulk mode ("Find all ads") scrolls an entire search, collapses duplicates, and packs the media plus the CSV plus a searchable swipe board into one ZIP. It runs in your own browser on your own connection, per-search, at human scale — no account, no watermark. I've written up the full workflow in how to download Facebook Ad Library videos.

4. Commercial spy tools. If you need a queryable database across millions of ads and advertisers — historical ads, engagement filters, niche-wide search — that's what paid tools sell. BigSpy starts at $9/month with a free tier and has the broadest cheap database. AdSpy is $149/month and remains the deepest archive with real search operators. These are fair prices for what they do; the trade-off is cost and the fact that their data is scraped, so coverage lags the live library.

The right choice depends on scale. One brand, occasionally: manual. A handful of brands, regularly: the extension gives you files plus a CSV for free. Whole-market queries: pay for a database.

When the API is actually the right tool

To be fair to it, the API is the correct choice if you are:

  • A journalist or academic auditing political ad spend — it's the only source with spend and demographic data
  • A compliance or brand-safety team monitoring issue ads mentioning your brand
  • An analyst studying EU markets, where the DSA exception makes commercial ad metadata queryable with reach numbers
  • Anyone who needs ad text at scale more than ad creative

If that's you, the identity-verification hassle is worth it. If you're a marketer who wants competitor creatives and copy in a folder, it isn't — start with the Ad Library itself and the tools built on top of it. And if the ads you're after are Instagram placements, they live in the same library — here's how to find and download Instagram ads.

FAQ

How to extract data from Facebook ads?

For political, social-issue, and EU-targeted ads, use the official Ad Library API after verifying your identity with Meta — it returns ad text, run dates, and (for those categories) spend or reach ranges as JSON. For regular commercial ads, the API doesn't apply: browse the Ad Library manually, use our free extension to export a per-search CSV plus the creatives, or subscribe to a spy-tool database like BigSpy or AdSpy.

How can I export data from Facebook ads?

There's no export button in the Ad Library website. The Klipio extension adds one in practice: its bulk export packs every ad in a search into a ZIP containing the media files, a searchable swipe board, and a CSV spreadsheet (advertiser, ad text, start dates, links). For your own ads' performance data, that's a different thing entirely — export from Meta Ads Manager, which has native CSV reports.

Is the Meta Ads library free?

Yes, completely. The website at facebook.com/ads/library is free with no login required, and the API is free once you pass identity verification. What's not free is convenience: no downloads, no exports, and clunky exact-match search — which is why an ecosystem of free extensions and paid databases exists on top of it.

Can I use the Ad Library API to see competitor ads?

Only in two cases: your competitor's ads are classified as social/political (unlikely for commerce), or they target an EU country, where DSA rules make all ads queryable with reach data. Outside those cases the API returns nothing for commercial advertisers — use the Ad Library website and the tools built around it instead.

Save the ads you research — free

The Klipio extension adds a download button to every ad in the Meta Ad Library: one click per ad, or bulk-save a whole search as a ZIP with a searchable swipe file inside. Free, no sign-up.

Get the free extension