UnitBytes Logo
UnitBytes Web Data APIs
Home / Blog / Tutorials & Guides
Tutorials & Guides 9 min read 2026-11-12

How to Scrape the Facebook & Meta Ads Library (2026): Competitor Ad Spy, Video Ads, EU DSA Reach & Spend API ($0.50/1K)

Complete 2026 developer and media-buyer guide to extracting commercial Facebook & Instagram ads, playable HD MP4 videos, carousel cards, cross-run competitor ad changes, EU DSA & UK reach demographics, and political ad spend starting at $0.50 per 1,000 ads.

UnitBytes
UnitBytes
Autonomous Web Data Intelligence Labs
How to Scrape the Facebook & Meta Ads Library (2026): Competitor Ad Spy, Video Ads, EU DSA Reach & Spend API ($0.50/1K)

If you have ever tried using the Official Meta Ad Library API (graph.facebook.com/ads_archive) to monitor e-commerce, SaaS, or D2C competitors in the United States, Canada, Australia, or Latin America, you run into three immediate roadblocks:

  1. Mandatory Government ID & App Verification: Before making a single API request, Meta requires government-issued ID identity verification, physical address confirmation, and developer app setup.
  2. Zero Non-EU / Non-UK Commercial Ads: For ad_type=ALL, the official Graph API only returns commercial ads delivered in the European Union or United Kingdom. Querying commercial ads in US, CA, AU, BR, or SG returns zero results unless the ad is classified as a regulated political, social issue, housing, employment, or credit ad.
  3. No Direct Video or Image File URLs: Even where the official API returns records, it omits direct MP4 video streams and high-resolution image CDN linksβ€”returning only an authenticated ad_snapshot_url browser render link instead of structured creative assets.
    Why Teams Automate Meta Ad Library Extraction: Growth marketers, creative strategists, D2C agencies, and compliance researchers need structured JSON/CSV feeds containing playable HD MP4 video URLs, multi-card carousel copy, destination CTA links, active longevity (activeDays & isLongRunningWinner), cross-run launch/stop tracking, and EU/UK reach breakdownsβ€”without manual browser scrolling or $99–$299/month SaaS spy-tool seats.

In this guide, we compare the three specialized engines in the UnitBytes Meta Ads Library Suite ($0.50 / 1,000 ads on Apify Gold+ plans, $0.75 / 1,000 on the Free plan, $0.0005 run start), break down exact field availability by country and ad category, and show how to automate competitor ad tracking in Python and n8n.


1. Official Meta Ad Library API vs. UnitBytes Meta Ads Suite#

CapabilityOfficial Meta Graph API (ads_archive)SaaS Ad-Spy Tools ($99–$299/mo)UnitBytes Meta Ads Suite ($0.50–$0.75/1K)
Setup & Identity VerificationGovernment ID + Developer App requiredAccount seat subscriptionZero Meta login or ID required
US / CA / AU / Global Commercial AdsBlocked (EU/UK or Political only)Supported (UI-focused)All 240+ countries + ALL
Direct Playable MP4 Video URLsNot returned (ad_snapshot_url only)Manual single-ad downloadprimaryVideoHdUrl & primaryVideoSdUrl in JSON/CSV
Instagram @handle & FB Page URL ResolutionNumeric search_page_ids onlyManual brand searchAuto-resolves FB Page URLs & IG @handles
Cross-Run Competitor Diffing (new / stopped)Manual database engineeringDashboard alerts onlyBuilt-in stateful monitorStatus tracking
EU DSA & UK (GB) Demographic ReachSupportedPartialeuTotalReach + euAgeGenderBreakdown
Pricing ModelFree (restricted scope)$99–$299 / month fixedPay-Per-Event ($0.50–$0.75 / 1,000 ads)

With Apify's $5.00 free monthly platform credit, you can extract roughly 6,600 enriched Facebook & Instagram ads every month at $0.00 out-of-pocket cost.


2. Choosing the Right Engine out of the 3 Specialized Scrapers#

While all three Actors share the same lightweight cloud extraction engine and $0.50–$0.75 / 1,000 pricing, each is tailored around a distinct workflow and dataset view:

1. Facebook/Meta Ads Library Scraper API (unitbytes/meta-ads-library-scraper)

The all-in-one flagship engine for keyword discovery, direct Ad Library URLs (facebook.com/ads/library/?...), Facebook Page URLs, Instagram handles, and specific adIds lookups across 240+ countries.

  • Best for: Market-wide creative research, filtering by mediaType (video, image, meme), publisherPlatforms (facebook, instagram, messenger, threads, audience_network, whatsapp), contentLanguages, startDateMin/startDateMax, and multi-run resumptionToken pagination.

2. Facebook, Instagram & Meta Ad Spy (unitbytes/facebook-instagram-ad-spy-scraper)

Built specifically for competitor roster monitoring when your team tracks a list of rival brands by their Facebook Page URLs (https://www.facebook.com/gymshark) or Instagram handles (@sephora, @lululemon).

  • Best for: Automated weekly or daily competitor ad monitoring. Resolves vanity URLs and Instagram @handles into numeric Meta page_ids automatically, distributes maxItems fairly across multiple brands in a single run, and tracks monitorStatus (baseline, new, continuing, stopped) across scheduled runs via a named stateStoreName.

3. Meta Ad Reach & Political Ad Spend (unitbytes/facebook-ad-reach-spend-scraper)

Purpose-built for European Union DSA transparency, United Kingdom (UK / GB) reach intelligence, and global political/issue ad spend auditing.

  • Best for: Media planners estimating competitor European campaign scale (euTotalReach, euAgeMin, euAgeMax, euGenderAudience, euLocationCountriesText, euAgeGenderBreakdown, payer, beneficiary) and researchers auditing regulated political_and_issue_ads (spendLower, spendUpper, impressionsLower, impressionsUpper, currency, byline, disclaimerLabel).

3. Realistic Field Coverage: What Meta Publishes by Region & Ad Type#

Not every field exists on every ad. Understanding what Meta's Ad Library actually exposes upstream prevents wasted queries and helps you design accurate analytics pipelines:

Field GroupKey Output FieldsGlobal Commercial Ads (US, CA, AU, etc.)EU / EEA & UK Commercial Ads (DE, FR, GB, etc.)Political & Issue Ads (political_and_issue_ads)
Core Ad & LongevityadArchiveId, adUrl, isActive, startDate, endDate, activeDays, isLongRunningWinner, collationCount, publisherPlatforms100%100%100%
Creative Copy & Funneltitle, bodyText, caption, linkDescription, linkUrl, linkDomain, ctaText, ctaType, displayFormat, carouselCards95–100%95–100%90–100%
Media CDN AssetsprimaryImageUrl, imageUrls, primaryVideoHdUrl, primaryVideoSdUrl, videoPreviewImageUrl100% (per format)100% (per format)100% (per format)
Advertiser ProfilepageId, pageName, pageCategory, pageLikes, igUsername, igFollowers, igVerified95–100%95–100%95–100%
EU DSA & UK ReacheuTotalReach, euAgeMin, euAgeMax, euGenderAudience, euTargetLocations, euAgeGenderBreakdown, payer, beneficiarynull (Not published by Meta outside EU/UK)95–100% (when scrapeAdDetails: true)Populated if delivered in EU/UK
Spend & ImpressionsspendLower, spendUpper, spendText, impressionsLower, impressionsUpper, byline, disclaimerLabelnull (Meta hides spend on commercial ads)null (Commercial ads expose reach, not spend)98–100%

How to Spot Winning Commercial Ads in the US (Where Spend Is Not Published)

Because Meta does not disclose dollar spend for commercial e-commerce ads in the United States, performance marketers combine three objective fields emitted on every record:

  1. activeDays >= 21 & isLongRunningWinner: true: Brands rarely pay to keep unprofitable direct-response creatives live for 3+ weeks.
  2. collationCount >= 3: Indicates the advertiser is actively running multiple creative/copy variations of the same winning concept simultaneously.
  3. monitorStatus: "continuing" vs. "stopped": Scheduling the Competitor Ad Spy daily or weekly lets you separate short-lived 48-hour creative tests from evergreen scaling winners.

4. Sample Output Payload (Enriched Ad Record)#

Every extracted ad is normalized into a flat, spreadsheet-ready JSON object (with full carouselCards and euAgeGenderBreakdown arrays preserved for programmatic analysis):

json
{
  "adArchiveId": "1952066089105921",
  "adUrl": "https://www.facebook.com/ads/library/?id=1952066089105921",
  "collationId": "884120394810293",
  "collationCount": 4,
  "isActive": true,
  "startDate": "2026-10-14T00:00:00Z",
  "endDate": null,
  "activeDays": 29,
  "isLongRunningWinner": true,
  "pageId": "20409006880",
  "pageName": "Zalando",
  "pageLikes": 8540210,
  "igUsername": "zalando",
  "igFollowers": 1240500,
  "igVerified": true,
  "displayFormat": "VIDEO",
  "publisherPlatforms": ["facebook", "instagram"],
  "publisherPlatformsText": "facebook, instagram",
  "title": "Shop New Season Styles",
  "bodyText": "Autumn essentials have landed. Discover over 1,500 brands with free returns.",
  "ctaText": "Shop Now",
  "ctaType": "SHOP_NOW",
  "linkUrl": "https://www.zalando.de/damen-home/",
  "linkDomain": "zalando.de",
  "primaryVideoHdUrl": "https://video.xx.fbcdn.net/v/t42.1790-2/...",
  "videoPreviewImageUrl": "https://scontent.xx.fbcdn.net/v/t39.35426-6/...",
  "payer": "Zalando SE",
  "beneficiary": "Zalando SE",
  "euTargetsEu": true,
  "euTotalReach": 48250,
  "euGenderAudience": "All",
  "euAgeMin": 18,
  "euAgeMax": 44,
  "euLocationCountriesText": "Germany, Austria",
  "detailLevel": "full"
}

5. Python Quickstart: Competitor Video Ad Spy & EU Reach Audit#

Install the official apify-client SDK (pip install apify-client pandas) and run either keyword creative discovery or multi-brand competitor tracking in under 20 lines of Python:

python
import os
import pandas as pd
from apify_client import ApifyClient

client = ApifyClient(os.environ["APIFY_TOKEN"])

# Monitor active video ads across rival D2C brands + track new/stopped launches
run = client.actor("unitbytes/facebook-instagram-ad-spy-scraper").call(
    run_input={
        "pageUrls": [
            "https://www.facebook.com/gymshark",
            "https://www.facebook.com/lululemon",
        ],
        "instagramHandles": ["@aloyoga"],
        "country": "US",
        "activeStatus": "active",
        "mediaType": "video",
        "enableChangeTracking": True,
        "stateStoreName": "d2c-activewear-spy",
        "maxItems": 60,
    }
)

ads = client.dataset(run["defaultDatasetId"]).list_items().items

# Filter evergreen scaling winners (active 14+ days with playable HD video)
winners = [
    ad for ad in ads
    if (ad.get("activeDays") or 0) >= 14 and ad.get("primaryVideoHdUrl")
]

print(f"Extracted {len(ads)} competitor ads ({len(winners)} evergreen video winners)")
pd.DataFrame(winners).to_csv("competitor_winning_video_ads.csv", index=False)

6. Frequently Asked Questions (FAQ)#

Do I need a Facebook account, Meta developer app, or government ID?

No. All three UnitBytes Meta Ads Library Actors extract public Ad Library records in the cloud without requiring Facebook cookies, Business Manager access, developer App Review, or identity verification.

Why are euTotalReach, payer, and beneficiary null when I scrape country: "US"?

Meta only publishes commercial ad reach, target age/gender demographics, and payer/beneficiary disclosures for ads delivered in European Union / EEA member states (under the Digital Services Act) and the United Kingdom (GB / UK). For US commercial ads, use activeDays, isLongRunningWinner, collationCount, and monitorStatus to gauge creative performance, or set adType: "political_and_issue_ads" when researching regulated political spend (spendLower / spendUpper).

How do I paginate past maxItems across scheduled batches without duplicate ads?

When meta-ads-library-scraper pauses at your maxItems limit while more upstream results exist, it saves a signed resumptionToken inside the run's Default Key-Value Store (PAGINATION_STATE) and logs instructions. Pass that resumptionToken into your next run to resume seamlessly with zero duplicate adArchiveId records.

Can I automate competitor ad alerts in n8n without writing code?

Yes. Visit the UnitBytes n8n Automation Hub to copy or download 18-node AI workflow templates for Meta Ads Library Scraper, Facebook & Instagram Competitor Ad Spy, and Meta Ad Reach & Political Spendβ€”complete with adArchiveId deduplication, OpenAI (gpt-4o-mini) creative hook analysis, Google Sheets logging, Gmail briefs, and Slack alerts.


πŸš€ Start Extracting Competitor Ads & Reach Telemetry Today#

Choose the specialized engine that fits your workflow on Apify ($0.50/1K on Gold+, $5.00 free monthly credit included):

Need a custom recurring multi-brand ad intelligence feed delivered directly to BigQuery, Snowflake, S3, or Excel? Request a quote via the Done-For-You Dataset Form below or email contact@unitbytes.com.

Tags: #Meta Ads Library#Facebook Ads Scraper#Instagram Ad Spy#EU DSA Ad Reach#Competitor Analysis#Paid Social#Apify
⚑ Meta Ads Library, Competitor Ad Spy & EU/UK Reach Intelligence

Bypass Meta Ad Library API Limits β€” Extract Commercial Ads, HD Videos & EU Reach from $0.50/1K

Extract commercial Facebook & Instagram ads across 240+ countries without government ID verification or App Reviewβ€”including playable HD MP4 URLs, carousel cards, CTA links, cross-run competitor change tracking, EU DSA / UK reach demographics, and political spend brackets.

Continue Reading

Related Technical Guides & Teardowns

All Guides →
Done-For-You Datasets β€’ Data Feeds β€’ Custom Scrapers

Need Custom Tutorials & Guides Data or a Dedicated Pipeline?

Don't want to run scrapers yourself? Tell us what data you need and we'll deliver a clean Excel / CSV / Google Sheets dataset, set up a recurring data feed, or build a custom scraper for a new site.

One-Time Dataset
From $99

Send your keywords, categories, or URLs. We run the extraction and email you a clean Excel/CSV file, usually within 48 hours.

Recurring Data Feed
Priced by Volume

Daily or weekly data delivered to Google Sheets, Amazon S3, BigQuery, or a webhook. Tell us the volume and we'll quote a fixed monthly price.

Custom Scraper
From $299

Need a new website scraped or custom fields added? We build it, deliver it, and can maintain it for you.

We reply within 48 hours.
Prefer direct email? Write to us anytime at contact@unitbytes.com