Meta Ad Library Scraper — Facebook + Instagram Ad Spy
Pricing
Pay per usage
Meta Ad Library Scraper — Facebook + Instagram Ad Spy
Scrape Meta (Facebook + Instagram) Ad Library globally. No login. Filter by keyword, Page ID, country, ad type, media, platform, language. Returns creative URLs (video HD/SD + images), landing pages, captions, CTA, spend & impressions for political/EU ads.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
yossef Nagy
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape Meta's public Ad Library at facebook.com/ads/library/ — every active and inactive ad running on Facebook, Instagram, Messenger, and Audience Network. No login. No browser. Pure HTTP. Global coverage.
What it returns (per ad)
Every claim in this list has been verified end-to-end against the live Ad Library:
- Ad ID (
ad_archive_id) and a one-click link to view it on facebook.com/ads/library - Active / inactive flag
- Advertiser Page:
page_id,page_name, profile URL + picture, page like count, page categories - Branded-content advertiser (when applicable) — surfaces the true advertiser behind influencer posts
- Creative:
- HD + SD video URLs (
video_hd_url,video_sd_url) - Watermarked variants (
watermarked_video_hd_url,watermarked_video_sd_url) - Video preview thumbnail
- Full image set (original + resized)
- Carousel cards (when the ad is a carousel)
- Extra creatives (gallery / multi-image ads)
- HD + SD video URLs (
- Copy:
body_text(caption),title,caption(display URL),link_description - Call-to-action:
cta_text,cta_type(SHOP_NOW,INSTALL_NOW,LEARN_MORE, …) - Landing page:
link_url(the URL the ad sends to — perfect for chaining into store-fingerprinting actors) - Format:
display_format(VIDEO,IMAGE,DCO,DPA, etc.) - Regulated-disclosure data (for political/issue ads + EU ads):
spend(range string, e.g."$9K-$10K USD")currencyimpressions_text(range, e.g.">1M")reach_estimatebyline(the disclaimer "Paid for by …")disclaimer_label
- Start / end dates (ISO 8601)
- Categories,
gated_type,state_media_run_label,contains_digital_created_media
Filters supported (verified)
| Filter | Values | Verified? |
|---|---|---|
| Keyword | any string | ✓ (nike, allbirds, climate) |
| Page ID | Facebook Page IDs (one or many) | ✓ (Nike page 15087023444 returns historical ads) |
| Country | ISO-2 codes, multi-country support | ✓ (US, GB, DE tested) |
| Active status | active / inactive / all | ✓ |
| Ad type | ALL / POLITICAL_AND_ISSUE_ADS / EMPLOYMENT_ADS / HOUSING_ADS / CREDIT_ADS | ✓ political ads return spend + impressions |
| Media type | all / image / video / meme | ✓ video-only filter verified |
| Publisher platforms | FACEBOOK, INSTAGRAM, MESSENGER, AUDIENCE_NETWORK | API accepts |
| Content languages | ISO codes | API accepts |
| Pagination | opaque cursor via page_info.end_cursor | ✓ multi-page pull verified |
Run modes
| Mode | Behavior |
|---|---|
search (default) | Keyword search across the chosen countries |
advertiser | Pass pageIds to audit every ad a given Page is or was running |
multi_country | Same keyword across many countries — output tagged with country |
Example inputs
1. Daily Nike spy in 3 markets
{"mode": "search","queries": ["nike"],"countries": ["US", "GB", "DE"],"activeStatus": "active","maxAdsPerQuery": 200}
2. Full audit of one advertiser
{"mode": "advertiser","pageIds": ["15087023444"],"countries": ["US"],"activeStatus": "all","maxAdsPerQuery": 1000}
3. Political ad watch in the US
{"mode": "search","queries": ["climate", "election"],"countries": ["US"],"adType": "POLITICAL_AND_ISSUE_ADS","maxAdsPerQuery": 500}
4. Video-only beauty creative bank
{"mode": "search","queries": ["skincare", "makeup", "fragrance"],"countries": ["US", "GB"],"mediaType": "video","maxAdsPerQuery": 100}
How it works
Meta's Ad Library is publicly accessible but its frontend exchanges a short anti-bot handshake before serving the data:
- Actor GETs
/ads/library/?…. If Meta returns a 403 challenge page (__rd_verify_…), the actor POSTs the challenge URL once and re-GETs. This is a documented public handshake; no login or credentials are involved. - The actor extracts
lsd+ a few session tokens from the resulting HTML. - Every ad-listing query goes to
POST /api/graphql/withfb_api_req_friendly_name=AdLibrarySearchPaginationQueryand the officialdoc_id. The same query name the Ad Library UI uses. - Pagination uses Meta's own
page_info.end_cursor.
Because everything is plain HTTP, runs are fast (~1-3 seconds per ~30-ad page) and memory-light.
Pricing (PAY_PER_EVENT)
| Event | Price |
|---|---|
| Actor start | $0.005 |
| Per (keyword × country × filter) combo swept | $0.005 |
| Per ad row extracted | $0.0005 |
A typical run pulling 200 ads/country in 3 countries (US/GB/DE) = ~$0.32. A full advertiser audit pulling 1,000 ads in one country = ~$0.51.
Ethics
The Meta Ad Library is a public transparency service Meta is required to publish under the EU DSA and various national laws. The actor accesses only publicly displayed information, holds no login session, and observes Meta's expected client handshake. It does not access user content, private posts, or any data behind authentication.
License
MIT.