Meta Ad Library - Competitor Ad Scaling Tracker
Pricing
from $1.50 / 1,000 results
Meta Ad Library - Competitor Ad Scaling Tracker
Scrape live competitor ads from the public Meta Ad Library (Facebook & Instagram): ad copy, creative images/videos, landing page URL, start date, and active status. No account or API key required.
Pricing
from $1.50 / 1,000 results
Rating
0.0
(0)
Developer
Xtractoo
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 hours ago
Last modified
Categories
Share
Meta Ad Scraper — Competitor Ad Scaling Tracker
Extract the live ads any brand is running on Facebook & Instagram straight from Meta's public Ad Library — the ad creative, the copy, when it started, the raw image/video files, and the landing-page link it sends people to. Built for e-commerce and affiliate marketers who want to see which competitor creatives are being aggressively scaled, without paying for a heavyweight ad-spy subscription.
Why use this actor
- No account, no login, no API key — searches the public Ad Library directly.
- Find competitors by name or keyword — give it
nike,gymshark, or any brand and it returns every matching advertiser's active ads. - The creative, not just the headline — direct
.jpg/.mp4URLs for every image and video in the ad, ready to download and review. - Knows what's being scaled — each ad's start date and active status let you spot the creatives a brand is doubling down on right now.
- The full funnel — primary ad copy plus the call-to-action and its landing-page link.
- Stable JSON output suitable for pipelines, spreadsheets, or a database — with automatic retries built in.
How it works
- You give the actor one or more search terms (brand names or keywords) and a country.
- The actor looks each term up in the Meta Ad Library and pulls the matching ads — advertiser, ad copy, start date, media files, and the call-to-action link.
- It keeps turning the pages for each term until it reaches your
maxAdsPerTermlimit, pausing politely between pages so the search stays reliable. - Results stream into your dataset, ready to download as JSON, CSV, or Excel.
You don't manage any scrapers, browsers, or sessions — just provide the brands you want to watch and press Run.
Use Cases
Competitor creative intelligence
Track what your top 5 competitors are running right now — the exact copy, visuals, and offer angles — and set a weekly schedule to catch when they launch a new campaign. Use collationCount as a scaling signal: a creative with many grouped variants is one they're actively pushing budget behind.
Winning product & offer discovery (e-commerce / dropshipping)
Search category keywords ("posture corrector", "teeth whitening", "minimalist wallet") to surface which brands are actively spending on a product right now, what hook they use, and what landing page they send traffic to — without a paid ad-spy subscription.
Ad creative swipe file
Build a rolling library of tested creatives by running weekly searches for brands in your niche. Filter on isActive: true and displayFormat: "VIDEO" to focus on the video ads getting current budget — the richest source of copywriting and creative inspiration.
Brand launch & campaign monitoring
Watch a specific brand's new launches by scheduling daily runs on their name. When a new startDate appears in the output that wasn't there yesterday, you know they just went live — useful for both competitive intel and affiliate/media buying timing.
Landing page & funnel research
Pull landingPageUrl for every ad a brand is running to map their full funnel — which offer pages, quiz funnels, or product bundles they're driving paid traffic to. Stack against ctaType to understand which call-to-action is paired with which destination.
Input
{"searchTerms": ["nike", "gymshark"],"country": "US","activeStatus": "active","adType": "all","mediaType": "all","maxAdsPerTerm": 100,"maxConcurrency": 2,"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"]}}
| Field | Type | Description |
|---|---|---|
searchTerms | array | Required. Brand names or keywords to track, e.g. ["nike", "gymshark"]. Each term is searched independently. |
country | string | Two-letter country code of the ad market to search (where the ads are shown). Default US. Use ALL for worldwide. |
activeStatus | string | active (currently running — default), inactive, or all. |
adType | string | Ad category. all (default) covers standard commercial ads. Others: political_and_issue_ads, employment_ads, housing_ads, financial_products_and_services_ads. |
mediaType | string | Filter by creative format: all (default), image, video, meme, image_and_meme, none. |
maxAdsPerTerm | integer | Stop after this many unique ads per term. Default 100. |
maxConcurrency | integer | How many terms to process in parallel. Default 2. Keep low to stay reliable. |
pageSize | integer | Advanced: ads requested per page. Default 30. |
proxyConfiguration | object | Residential proxy is strongly recommended. Default groups: ["RESIDENTIAL"]. |
Every string field is prefilled — you can open the actor and press Run without typing anything to get a sample of Nike ads in the US.
Output
Each ad becomes one record. The most useful fields are lifted to the top level for easy reading, and the complete raw ad data from Meta is kept alongside them so nothing is lost. Long media URLs are shortened below for readability.
Sample — a video ad (keyword nike):
{"_input": "nike","_scrapedAt": "2026-05-29T08:48:20Z","adArchiveId": "1502078871070045","pageName": "Whatnot","pageId": "112727500143177","isActive": true,"startDate": "2025-11-14","endDate": "2026-05-29","publisherPlatform": ["FACEBOOK", "INSTAGRAM", "MESSENGER"],"displayFormat": "VIDEO","adCopy": "Yup, you can buy new outfits without breaking the bank. Save on fashion ⚡️ Shop on Whatnot!","ctaType": "INSTALL_MOBILE_APP","ctaText": "Install now","landingPageUrl": "http://play.google.com/store/apps/details?id=com.whatnot_mobile","imageUrls": ["https://scontent.fcgk28-1.fna.fbcdn.net/v/t39.35426-6/583053533_....jpg"],"videoUrls": ["https://video.fcgk28-1.fna.fbcdn.net/o1/v/t2/f2/m366/AQMOGXdjy7j_....mp4"],"collationCount": 2,"adLibraryUrl": "https://www.facebook.com/ads/library/?id=1502078871070045"}
Sample — an image/carousel ad (keyword gymshark):
{"_input": "gymshark","_scrapedAt": "2026-05-29T08:48:20Z","adArchiveId": "2352951151882109","pageName": "Gymshark","pageId": "129669023798560","isActive": true,"startDate": "2026-04-30","endDate": "2026-05-28","publisherPlatform": ["INSTAGRAM"],"displayFormat": "DCO","landingPageUrl": "https://gym.sh/Shop_Gymshark","imageUrls": ["https://scontent.fcgk10-1.fna.fbcdn.net/v/t39.35426-6/681237441_....jpg","https://scontent.fcgk10-2.fna.fbcdn.net/v/t39.35426-6/684673644_....jpg"],"videoUrls": ["https://video.fcgk10-2.fna.fbcdn.net/o1/v/t2/f2/m366/AQNiDKqerby....mp4", "... 3 more"],"collationCount": 3,"adLibraryUrl": "https://www.facebook.com/ads/library/?id=2352951151882109"}
| Field | Type | Description |
|---|---|---|
adArchiveId | string | The ad's unique ID in the Meta Ad Library. |
pageName | string | The advertiser's Facebook Page name. |
pageId | string | The advertiser's Page ID. |
isActive | boolean | Whether the ad is currently running. |
startDate | string | Date the ad started running (YYYY-MM-DD). |
endDate | string | Date the ad last ran / was last seen (YYYY-MM-DD). |
publisherPlatform | array | Where the ad runs, e.g. ["FACEBOOK", "INSTAGRAM"]. |
displayFormat | string | Creative format, e.g. VIDEO, IMAGE, DPA, DCO, CAROUSEL. |
adCopy | string | The primary ad text. |
title / caption | string | Headline and caption, when present. |
ctaType | string | Call-to-action type, e.g. SHOP_NOW, INSTALL_MOBILE_APP (may be empty). |
ctaText | string | Button label, e.g. Install now. |
landingPageUrl | string | The destination link the ad sends people to. |
imageUrls | array | Direct .jpg image URLs in the ad. |
videoUrls | array | Direct .mp4 video URLs in the ad. |
collationCount | number | How many near-identical variants of this creative are grouped together (a signal of scaling). |
adLibraryUrl | string | Direct link to view this ad in the Meta Ad Library. |
snapshot | object | The complete raw creative block from Meta (cards, byline, page profile, etc.) — kept for full fidelity. |
| (plus all raw Meta fields) | — | spend, currency, reach_estimate, impressions_with_index, categories, targeted_or_reached_countries, and more are passed through verbatim. |
_input | string | The search term this record came from. |
_scrapedAt | string | UTC timestamp (ISO 8601) of when the record was collected. |
A search term that cannot be reached returns an error record carrying _error and
_errorDetail — it is never silently dropped.
Notes & limits
- Keyword search returns all advertisers matching the term, not only the exact brand —
e.g.
nikesurfaces Nike, Jordan, and resellers running Nike-related ads. Filter onpageNamedownstream if you want a single advertiser. - Reach, spend, and impressions are only disclosed by Meta for political/issue ads;
standard commercial ads show these as ranges or
null. - Media URLs are time-limited by Meta's CDN — download the creatives you need promptly.
- Residential proxy is strongly recommended; Meta rate-limits datacenter addresses.
Other actors in this collection
| Actor | What it extracts |
|---|---|
| Crexi Commercial Real Estate Yield & Off-Market Scraper | Commercial property listings with Cap Rate, NOI, asking price, and broker details. |
| ThomasNet US B2B Supplier & Manufacturer Scraper | US/North-American manufacturers & suppliers: capabilities, certifications, revenue, employees, location. |
| Myfxbook Community Outlook / Retail Sentiment Scraper | Retail FX long/short sentiment, positions, and volume by currency pair. |