Facebook Ad Library Scraper - Competitor Ad Intelligence
Pricing
Pay per usage
Facebook Ad Library Scraper - Competitor Ad Intelligence
Scrape the Meta Ad Library for any keyword or advertiser across all countries. Returns ad creative text, call-to-action, landing page URL, platforms, spend ranges, impression estimates, and media URLs. Works for all active and inactive ads. No Facebook account required.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
oscar lira
Actor stats
0
Bookmarked
7
Total users
5
Monthly active users
11 days ago
Last modified
Categories
Share
Facebook Ad Library Scraper
Scrape the Meta Ad Library for any keyword, brand, or advertiser name. Returns structured data for every ad: creative text, call-to-action, landing page, platforms, spend and impression ranges (when available), and media URLs.
Works across all countries supported by the Ad Library. No Facebook login required.
What you get
For each ad, you get a JSON object like this (from a "nike" search):
{"adArchiveID": "582019374031826","status": "ACTIVE","startDate": "2026-03-15","endDate": null,"pageName": "Nike","pageID": "15087023444","adText": "Just satisfying enough. The Pegasus Premium with ReactX foam returns energy like nothing else. Available now.","callToAction": "Shop Now","link": "https://www.nike.com/running/pegasus-premium","platforms": ["facebook", "instagram"],"spend": null,"impressions": null,"versions": 3,"mediaUrl": "https://scontent.xx.fbcdn.net/v/t45.1600-4/example_image.jpg"}
Output fields
| Field | Type | Description |
|---|---|---|
| adArchiveID | string | Unique ad identifier in Meta's Ad Library |
| status | string | ACTIVE or INACTIVE |
| startDate | string | Date the ad started running (YYYY-MM-DD) |
| endDate | string | Date the ad stopped, or null if still running |
| pageName | string | Name of the page running the ad |
| pageID | string | Facebook page ID |
| adText | string | Primary text of the ad creative |
| callToAction | string | CTA button text (Shop Now, Learn More, Sign Up, etc.) |
| link | string | Landing page URL |
| platforms | array | Where the ad runs: facebook, instagram, messenger, audience_network |
| spend | object | Spend range with lower_bound/upper_bound. See note below. |
| impressions | object | Impression range with lower_bound/upper_bound. See note below. |
| versions | integer | Number of creative variations |
| mediaUrl | string | URL to the ad image or video thumbnail |
Input parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| query | string | Yes | - | Keyword or advertiser name to search |
| country | string | No | US | 2-letter country code, or ALL for global |
| maxAds | integer | No | 50 | Max ads to return (up to 10,000) |
Pricing
Runs cost approximately $0.70 per 1,000 ads scraped based on typical Apify platform compute usage. Actual cost depends on your subscription plan.
Frequently asked questions
Why are spend and impressions null?
Meta only discloses spend and impression data for ads about social issues, elections, or politics. For regular commercial ads (which is the vast majority), these fields will be null. This is a Meta policy, not a scraper limitation.
What countries are supported?
Every country available in the Meta Ad Library. Use standard ISO 3166-1 alpha-2 codes: US, GB, DE, FR, BR, MX, IN, JP, AU, etc. Set country to "ALL" to search globally across all regions.
Can I search for a specific advertiser?
Yes. Enter the exact page name as the query (e.g., "Nike" or "Coca-Cola"). The Ad Library matches against page names and ad content.
Does this need a Facebook account?
No. The Meta Ad Library is a public transparency tool. No login or authentication is needed on your end.
What about ads that have been taken down?
The Ad Library keeps records of inactive ads for up to 7 years (political/social issue ads) or 1 year (commercial ads). You will see both active and inactive ads in results.
How current is the data?
Ads appear in the library within 24 hours of going live. The scraper pulls directly from Meta's current database.