Facebook Page Transparency Scraper avatar

Facebook Page Transparency Scraper

Pricing

from $1.80 / 1,000 transparency profiles

Go to Apify Store
Facebook Page Transparency Scraper

Facebook Page Transparency Scraper

Export public Facebook Page/Profile transparency and Meta Ad Library creatives by brand or Page ID, with optional unified audits. No Facebook login is required.

Pricing

from $1.80 / 1,000 transparency profiles

Rating

0.0

(0)

Developer

Maxime Dupré

Maxime Dupré

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

3

Monthly active users

5 days ago

Last modified

Share

🔎 Audit Facebook Page transparency and public ads

Built for brand researchers, agencies, journalists, and compliance teams, this Actor turns known public Facebook Pages or Profiles and public Meta Ad Library searches into structured transparency profiles and ad creatives. Review ownership, creation and name history, management countries, contacts, advertising status, creative copy, media, and source links without manually checking each Page.

📦 What data can you get?

Transparency profile rows use rowType: "transparencyProfile" and can include:

  • Canonical id, name, username, url, entityType, verification, and categories.
  • transparencyAvailable, creationDate, nameHistory, managementCountries, responsible owner, and adStatus.
  • Public contacts, address, business details, delegate Page, operating hours, and audience context.

Ad rows use rowType: "adCreative" and can include:

  • Creative id, active status, start and end dates, country, platforms, format, and adLibraryUrl.
  • Advertiser identity, Page ID, categories, and verification.
  • Body, headline, description, caption, destination URL, display URL, and call to action in copy.
  • Public image or video URLs, paid-for-by disclaimer, and source-exposed spend or impression ranges.
  • Joined pageTransparency context when you run a unified audit.

Missing values are omitted rather than inferred. transparencyAvailable: false means the entity resolved but Facebook did not expose transparency details; unresolved or inaccessible targets do not produce placeholder rows.

🚀 How to run the Actor

  1. Open the Actor in Apify Console.
  2. Choose one Target.
  3. Enter the matching Page/Profile targets, brand search, or Page ID.
  4. For ad targets, choose a country, ad status, and maximum number of ads.
  5. Start the run, then open the default dataset to inspect or export the rows.

You can also run it through the Apify API or schedule repeat audits.

⚙️ Input

Choose one of four target values:

  • pageTransparency — accepts targets: usernames, supported Facebook URLs, or numeric Page IDs.
  • adsByBrand — accepts one brandQuery.
  • adsByPageId — accepts one numeric pageId.
  • unifiedAudit — accepts known auditTargets and joins available transparency context to their creatives.

For ad and unified targets, country is a two-letter uppercase country code, adStatus is active or all, and maxAds ranges from 1 to 10,000. Options belonging to inactive targets are ignored, and duplicate known targets are resolved once.

Example — active US ads for a known Page:

{
"target": "adsByPageId",
"pageId": "20531316728",
"country": "US",
"adStatus": "active",
"maxAds": 100
}

📤 Output

Each successful dataset row is either a transparency profile or an ad creative, identified by rowType. Here is a shortened transparency row using only public output fields:

{
"rowType": "transparencyProfile",
"id": "20531316728",
"name": "Facebook",
"username": "facebook",
"url": "https://www.facebook.com/facebook",
"entityType": "page",
"verified": true,
"transparencyAvailable": true,
"creationDate": "2007-08-25"
}

Results are available from the default dataset in Apify Console and through dataset API endpoints. Export them as JSON, CSV, or Excel for analysis.

💳 Pricing

This Actor uses pay-per-event pricing. You are charged for each successfully returned public transparency profile and for each successfully returned Ad Library creative. Unavailable, unresolved, duplicate, and otherwise unsuccessful outcomes are not charged as successful outputs. Check the Pricing tab for current event prices before starting a run.

🔌 Integrations

Use Apify schedules for recurring checks, webhooks to react when runs finish, and the Apify API to start runs or retrieve dataset rows. Dataset exports can feed spreadsheets, databases, dashboards, and your existing automation tools.

❓ FAQ

Why did a resolved Page have transparencyAvailable: false?

Facebook resolved the Page or Profile but did not expose transparency details for it at collection time. This is different from an unresolved, inaccessible, private, restricted, removed, or login-only target, which does not produce an invented row.

Should I search ads by brand or Page ID?

Use a brand search when you want source matches for a name. Use a numeric Page ID when you already know the advertiser Page and want to avoid name ambiguity. Each run supports one ad search configuration.

What is the difference between active and all ads?

active requests creatives currently active in the selected country. all requests all creatives Meta makes available for that search and country, including inactive ones.

Does maxAds apply to every Page in a unified audit?

No. It is the maximum number of Ad Library creatives across the run, not a separate allowance for every target.

Are ownership, spend, and impression values always available?

No. Facebook and Meta expose different fields by Page, ad, country, and time. The Actor returns source-exposed values and omits unavailable ones instead of estimating them.

Do I need Facebook credentials or a Meta API key?

No. The Actor accesses public data and does not require your Facebook login, cookies, or Meta API key. It cannot access private, restricted, removed, or login-only content.

Does this Actor collect posts, comments, reviews, or events?

No. It is limited to public Page/Profile context and public Facebook and Instagram Ad Library surfaces.

📝 Changelog

  • 0.1: Initial release.

🆘 Support

For issues, questions, or feature requests, file a ticket and I'll fix or implement it in less than 24h 🫡

Made with ❤️ by Maxime Dupré