Skip to content

How to Export and Monitor Meta Ads Library Ads

Collect public Facebook and Instagram ad creatives, verify advertiser identity and coverage, export CSV or JSON, and monitor repeat observations through Apify.

Dievio Team · Growth Systems · November 6, 2026 · 6 min read

Social ad creative beside a spreadsheet

To export Meta Ads Library ads to CSV, open the Facebook Ads Library Scraper, enter a keyword, advertiser Page ID or Ad Library search URL, and choose a country and total ad limit. Run the Actor, inspect its coverage report, then download the flat CSV. The same Actor can compare later collections and report creative changes.

Start with one advertiser and a small collection. This makes it easier to confirm that the ads belong to the business you intended before collecting several advertisers or scheduling repeat checks.

The practical workflow: identify the advertiser → collect its available public ads → review source coverage → export CSV for a spreadsheet or JSON for creative variants. Monitoring adds a complete baseline and repeat checks with the same search.

Choose a keyword search or one specific advertiser

Open the public Meta Ads Library and find the business. Review the Page name and linked website. For a repeatable competitor report, copy the advertiser's numeric Facebook Page ID or its library search URL containing view_all_page_id.

Choose the input that describes your research
InputWhat it selectsWhat to check
Keyword, such as running shoesAds matching that searchSeveral unrelated advertisers can match.
Numeric Page IDA specific advertiser PageUse the Page ID, not an individual ad archive ID.
Ad Library search URLThe supported search encoded in the URLIts supported filters override the form for that target.

A business domain is not a verified domain-to-advertiser lookup. If you search a name as a keyword, review the returned pageId and pageName before treating the results as that company's advertising.

Run the Actor from Apify Console

  1. Open the Actor, choose Try for free, sign in to Apify and open its editable Input form.
  2. In Keywords, advertiser IDs or Ad Library URLs, replace the example with your target. Enter one target per entry.
  3. Choose Search country and Ad status. Keep active ads for a first current-creative collection.
  4. Set Maximum ads in this run to 25. This is one total cap, shared across every target.
  5. Keep Collect ads selected, check the current Pricing tab and set a spending limit in Run options.
  6. Start the run. Open the ad results and Results and issues by search before downloading.
Facebook Ads Library Scraper field reference for advertiser targets, country and global ad limit
Read-only reference: choose the advertiser or keyword, requested country and one shared ad cap.

The image shows the public read-only field reference. Enter values in the Console form reached through Try for free. The equivalent JSON below uses an example advertiser Page ID from the Actor documentation; replace it with your confirmed target.

{
  "searchTerms": ["15087023444"],
  "country": "US",
  "activeStatus": "active",
  "maxResults": 25,
  "collectionMode": "collect",
  "collectionStrategy": "round_robin"
}

Country is the requested search scope. It does not establish actual audience reach. Historical availability depends on Meta, country and category. Use the current active/all/inactive selector rather than assuming the library provides every commercial ad ever run.

Understand the CSV and preserve creative variants

Each dataset row represents one unique ad ID in this collection. Overlapping targets do not create another row for an already saved ID. The first search that delivered it supplies searchTerm and searchTargetIndex, so attribution is not a complete list of every matching search.

Useful columns for an ad research sheet
PurposeKeep these fields
Stable identityadId, adUrl, pageId, pageName
Creative reviewadText, headline, description, callToAction
Destinations and medialandingPageUrl, imageUrl, videoUrl
Observation contextrequestedCountry, observedAt, isActive, source dates
Full returned creative structurecreativeVariants, imageUrls, videoUrls in JSON

Choose Download flat CSV for spreadsheet-friendly scalar columns. Use JSON when an ad has multiple cards, images or videos. Primary copy can come from the first returned creative card when top-level text is absent or templated. Returned variant counts describe what was supplied, not every creative variation in existence.

Keep ad and Page IDs as text when importing into Excel or Sheets. Media are source links, not downloaded files or permanent hosting. Missing spend or reach values remain missing; the Actor does not infer conversions, ROAS or private campaign metrics.

Dievio

Your next customer starts here.

Find decision-makers by role, company and location. Build your next prospect list in Dievio.

Find my leads

Free audience preview · No credit card

Find leadsExample
FounderSoftwareUnited States
AM
Alex MorganFounder & CEO · Northstaralex@northstar.example
JC
Jamie ChenCo-founder · Formlyjamie@formly.example
Work emailsCompany detailsCSV export

Collect several targets and continue unfinished batches

The Actor accepts up to 50 unique targets. The default round-robin strategy takes one page per unfinished target in turn. Sequential mode finishes earlier targets first. Neither guarantees equal ad counts: overlapping IDs, source page sizes and the shared cap all affect delivery.

  1. Read TARGET_REPORT for each target's status, delivered IDs, duplicates and stop reason.
  2. Read RUN_SUMMARY for overall completion and budget or resource limits.
  3. Open Continue collecting: next input. If unfinished work remains, copy PAGINATION.nextInput into a new run after the previous one finishes.
  4. Keep targets and filters unchanged. Adjust the supported result cap, collection strategy or safeguards if necessary.
  5. Combine each batch's dataset. Later batches contain newly delivered ads, rather than copies of previous rows.

Paid input allows up to 100,000 ads per run, subject to spending and source limits. Free accounts have a 100-ad ceiling across the continuation chain. These are ceilings, not a guarantee that the source has that many ads. A retry cannot guarantee recovery from source restrictions or an expired cursor.

Monitor the same advertiser over time

Switch Collection mode to Monitor advertiser or search changes. Save a Task and schedule it in Apify. A saved Task supplies a stable identity; for manual or API checks, set a stable monitorKey. Keep searches and filters fixed, and avoid overlapping runs of one monitor.

The first complete collection establishes BASELINE. Later observations can be NEW, UPDATED or UNCHANGED. The separate CHANGES record includes the comparison. Only a complete collection replaces the baseline; a partial check must be completed through continuation.

For example, Monday's complete snapshot contains ads A and B. Friday's complete snapshot contains A and C. C is newly observed, while B may be NOT_OBSERVED. That means B was absent from this completed search. It does not prove the ad ended. A capped Friday collection cannot establish the same comparison.

Current monitor observations, including unchanged ads, are billed as saved ads. Changes and diagnostic records are separate. Check the live pricing before choosing a schedule, especially when collecting the same large advertiser repeatedly.

Run Meta ad research through Apify MCP and your AI agent

Add https://mcp.apify.com as a remote MCP connection in a compatible agent and authorize your Apify account. Follow the Apify MCP setup guide for your client. Then give the agent the specific Actor, confirmed advertiser and a small spending cap.

Use Apify MCP and inspect the schema for
x_guru/facebook-ads-library-monitor.
Collect 25 active US ads for Page ID
15087023444, which I have reviewed.
Use collect mode. Set
callOptions.maxTotalChargeUsd to 0.25.
Read RUN_SUMMARY and TARGET_REPORT.
Export all saved rows to CSV; preserve
creative variants in a separate JSON.
Report incomplete targets and nextInput.
Do not start another paid batch or
schedule monitoring automatically.

Replace the example Page ID. The agent should inspect with fetch-actor-details, start with call-actor, check unfinished runs with get-actor-run, and page through get-dataset-items. Read reports using get-key-value-store-record. A run ID alone is not an exported result.

Resolve empty results and choose the next step

  • Wrong advertiser: review the Page ID and source URL; keywords can match other businesses.
  • Few ads: inspect target completion and the stop reason before raising the limit.
  • Missing copy or media: inspect JSON variants and the source ad. Source fields and signed links may be unavailable.
  • Unsupported pasted filters: use supported form controls. Direct single-ad URLs and unsupported URL parameters are rejected.
  • Need official API access: review Meta's Ad Library API for its supported scope.

For another advertising source, see Google Ads Transparency export and monitoring. To build your own export integration, use the Actor run and Dataset guide. The Actor directory keeps each source and workflow separate.

Keep reading

Build your first list.

100 free credits. No credit card required.

Start free