Meta Ad Library API: limits and the best alternatives
What Meta's official Ad Library API returns, where it stops (commercial ads, tokens, ID checks, media), and which alternative fits which job as of October 2026.
The AdLib team · · 7 min read
The Meta Ad Library API is free, official and narrower than most people expect. Outside the EU it only returns ads about social issues, elections or politics, so the ordinary commercial ads of a US brand are not in it at all. This post explains what the official API returns, the limits that send developers to alternatives, and which alternative fits which job as of October 2026.
We build one of those alternatives, AdLib. We are new, and we point out below where other vendors are the better buy.
What the Meta Ad Library API returns
The Meta Ad Library API is the Graph API endpoint ads_archive, and it returns archived ads from the Meta Ad Library that match your search (Meta reference). The one required parameter is ad_reached_countries. You can filter with ad_type (default ALL, or POLITICAL_AND_ISSUE_ADS), search terms, page ids and publisher_platforms, which as of October 2026 includes Threads and WhatsApp.
The scope rule is in the parameter notes, and it is the line that matters most:
"Ads that did not reach any location in the EU will only return if they are about social issues, elections or politics."
So the API has two halves. Political and issue ads come back worldwide, with extra fields such as bylines, delivery_by_region and estimated audience size, which Meta marks as available only for political and issue ads. Ads that reached the EU come back whatever their topic, because the Digital Services Act requires large platforms to publish them, with EU fields like eu_total_reach and beneficiary_payers.
Facebook ad library API limitations
The official API has six limits that developers run into, and most of them are by design.
No commercial ads outside the EU
A clothing brand running ads only in the US, Canada or Australia does not appear in ads_archive results, because those ads are neither political nor EU-delivered. This is the single biggest reason teams look for a Meta Ad Library API alternative. The public Meta Ad Library website does show those ads while they run, which is where third-party APIs get them.
EU ads are kept for a limited time
Under DSA Article 39, large platforms must keep each ad available for its run time plus one year after it was last shown (DSA Art. 39). After that, the EU obligation ends. Outside the EU, Meta shows non-political ads only while they are active. Whatever is gone from the library cannot be crawled later by anyone, which is the reason we keep our own copy. More in why ad libraries forget ended ads.
UK coverage is not spelled out in the reference
Meta's ads_archive reference states the EU rule above and lists GB as a country code, but we found no UK-specific rule on that page. Vendor documentation suggests UK ads carry their own transparency data (SearchAPI.io's Meta detail engine returns a uk_transparency object, see SearchAPI docs). If UK commercial ads matter to you, test with ad_reached_countries=['GB'] before you build on it.
Identity verification before the first call
To use the API you need a Meta developer account and, according to vendor write-ups of Meta's access flow, the same identity and location confirmation at facebook.com/ID that political advertisers go through, which can take days (adlibrary.com, Metapi). Meta's own Ad Library API page returned 403 when we tried to fetch it, so treat the exact steps as something to confirm in your account.
Tokens expire
The API authenticates with a user access token. Meta's documentation says default user tokens expire "in hours" and a long-lived token "generally lasts about 60 days" (Meta access tokens). For a backend job that runs every night, that means a renewal step you have to own, or a pipeline that silently stops every two months.
No published rate limit, no media files
Meta does not publish a rate limit for ads_archive; the reference only documents error 613, "Calls to this api have exceeded the rate limit". And you do not get image or video files, only an ad_snapshot_url that renders the ad. Spend and impressions exist only for political and issue ads, as ranges.
None of this makes the official API bad. For political ad research it is free, authoritative and the right tool.
How to get Facebook ads library API commercial ads
To get commercial Meta ads outside the EU through an API, you need a third-party provider that reads the public Meta Ad Library the way a logged-out visitor does. AdLib works this way: public, logged-out pages, plain HTTP requests, no browser automation and no Meta token on your side.
Here is a typical request against our API: one brand's Meta ads in Germany from our history, including ended ones, longest-running first.
curl -H "X-API-Key: $ADLIB_API_KEY" \
"https://api.adlibapi.com/v1/search?domain=nike.com&platform=meta&country=US&source=history&sort=days_running"Each ad comes back with Meta's own first_shown and last_shown, our first_seen_by_us and last_seen_by_us, a status of active or inactive, placements, creatives, eu_data and derived.days_running. In our DE index on 26 Oct 2026, Nike had 30 Meta ads, all ended, running from 8 days (a Black Friday promo, 18 to 26 Nov 2025) to 86 days (30 Mar to 24 Jun 2026). How to read those numbers is in ad run length as a performance signal.
Meta Ad Library API alternatives compared
All competitor facts come from vendor pages checked on 26 Oct 2026. "Not found" means we looked and did not find it.
| Option | Meta commercial ads outside EU | Other ad libraries | Price as of Oct 2026 | History of ended ads | Strength |
|---|---|---|---|---|---|
| Meta official | no | none | free | political and EU ads only | authoritative political data |
| SearchAPI.io | yes | Google, TikTok, LinkedIn | from $40/mo, $4.00 to $1.00 per 1,000 searches | not found | EU and UK transparency fields, 99.9% SLA |
| ScrapeCreators | yes | Google, TikTok, LinkedIn | $1.88 to $0.99 per 1,000 requests | not found | Meta video transcripts, remote MCP |
| Apify Meta actors | yes | separate actors | from $0.75 per 1,000 ads | no | scheduling, Zapier, Make, n8n |
| Bright Data | yes | none | $1.50 to $1.30 per 1,000 records | dataset product | delivery to S3, Snowflake |
| Metapi | yes | none | $29 to $299/mo | claimed, over 2 years | Meta-only focus |
| Adyntel | yes, by domain | Google, LinkedIn, TikTok | $8.80 to $6.42 per 1,000 calls | not found | Clay data provider |
| AdLib | yes | Google, TikTok, LinkedIn, Pinterest, X (beta) | 1 credit per Meta ad, search pages capped at 5 credits (pricing) | yes, with versions | six libraries, resolve, webhooks |
Where the alternatives beat us
SearchAPI.io is deeper on Meta EU data than we are. Its detail engine returns eu_transparency and uk_transparency with targeting, eu_total_reach, breakdowns by country, age and gender, payer_beneficiary_data and is_ad_taken_down, and it has more Meta filters. We return EU fields on the ad detail but not yet in search. SearchAPI.io also offers a 99.9% SLA on all plans, and we have none yet.
On enrichment, ScrapeCreators returns transcripts for Meta video ads and Foreplay includes transcripts in its API. On archive size, Foreplay advertises tens of millions of ads, while our archive starts with our first crawl. On integrations, Apify plugs into Zapier, Make and n8n today, Adyntel sits inside Clay, and we are not listed anywhere yet. If your job is one of these, pick them.
How to choose a Meta Ad Library API alternative
Pick the alternative by what you need to keep, not by what you need to fetch today.
Political and issue ads only
Use Meta's official API. It is free, and third parties add little for this case. For EU breakdowns on top, SearchAPI.io.
Cheap live Meta search
Use SearchAPI.io, ScrapeCreators or an Apify actor. All three are mature, priced around a dollar per thousand at volume, and live data is what they are built for.
Commercial ads across platforms, with history
This is where we would pick AdLib. The same query shape covers Meta, Google, TikTok, LinkedIn, Pinterest and X in one schema, with ids like meta:15087023444 and google:AR18378488041124659201. Ended ads and their media stay retrievable under the same id, with permanent media URLs, and GET /v1/ads/{id}/history returns every version we stored when the ad changed. A domain resolve finds the brand's accounts on all six platforms with a score; see find advertiser ids from a domain and the per-library notes on /platforms.
Pricing follows the same idea. A live search page costs at most 5 credits per platform however many ads it returns, cached results under 24 hours are free, and empty results, timeouts and upstream errors cost nothing.
Monitoring competitors
Use AdLib watchlists if you want to be told about changes instead of polling for them. You register advertisers with a webhook_url and interval_hours, and we send HMAC-signed advertiser.changes events when ads start, stop or change. Metapi advertises real-time webhooks for Meta, which we could not verify beyond its marketing page. For the workflow side, see how to see competitors' ads and ad library data in Clay and n8n.
Agents
Our MCP server adlib-mcp gives Claude or Cursor 20 tools, from search_ads to create_watchlist and get_ad_history. It runs locally with an API key, or as a remote connector with OAuth at https://mcp.adlibapi.com/mcp for Claude.ai and ChatGPT. Setup is in ask Claude about competitor ads with MCP.
What we cannot do
We cannot give you Meta commercial ads from before we started crawling, because outside the EU Meta does not keep them and nobody can fetch them later. We do not estimate spend; outside political ads, all we have are the ranges the platforms publish. And we are a young service without an SLA, which matters if you are replacing a vendor that has one.
If you need commercial Meta ads with history, and probably the other five libraries too, create a free key (1,000 credits once, then 100 a month) and run the request above for your own domain. Developers start at /for/developers, data buyers at /for/companies, and agent builders at /for/ai-agents.
Questions people ask
- Does the Meta Ad Library API return commercial ads?
- Only for ads that reached the EU. Meta's ads_archive reference says ads that did not reach any EU location only return if they are about social issues, elections or politics, so a US-only commercial campaign is not in the API.
- How long does a Meta Ad Library API access token last?
- Default user tokens expire within hours. Meta's documentation says a long-lived user token generally lasts about 60 days, after which you have to generate a new one.
- Does the Meta Ad Library API give spend and impressions?
- Only for ads about social issues, elections or politics, and only as ranges. EU ads carry reach and payer fields such as eu_total_reach and beneficiary_payers, but no spend.
- What is the rate limit of the Meta Ad Library API?
- Meta does not publish a number. Its reference only documents error 613, "Calls to this api have exceeded the rate limit".
- What is the best Meta Ad Library API alternative?
- For cheap live Meta search, SearchAPI.io or ScrapeCreators; for deep EU transparency fields, SearchAPI.io; for commercial ads across six platforms with history, domain resolve and monitoring webhooks, AdLib.