META Ads Library Scraper avatar

META Ads Library Scraper

Pricing

from $1.50 / 1,000 ad results

Go to Apify Store
META Ads Library Scraper

META Ads Library Scraper

Scrape the Meta (Facebook & Instagram) Ads Library. Paste any Ad Library search URL or Facebook page URL. Get ad text, CTA, publisher platforms, language signals, dates and full advertiser page data. No login required.

Pricing

from $1.50 / 1,000 ad results

Rating

0.0

(0)

Developer

Alexandre Manguis

Alexandre Manguis

Maintained by Community

Actor stats

0

Bookmarked

18

Total users

8

Monthly active users

11 hours ago

Last modified

Share

Scrape the Meta (Facebook/Instagram) Ads Library to extract ads from any advertiser or keyword search. Supports all built-in Ad Library filters — just paste your search URL and run.

✨ What you get

  • Ad content — body text, landing domain, headline, description, snapshot URL
  • Publisher info — which platforms the ad ran on (Facebook, Instagram, Messenger, Audience Network)
  • Language signals — language codes detected in the ad creative (e.g. ["en", "fr"])
  • Delivery dates — start date, end date, creation time
  • Advertiser page — name, category, likes, verification status, Instagram username & followers, country
  • Ad status — ACTIVE or INACTIVE (derived from your search filter)

Note: Spend, impressions, and estimated audience size are only populated by Meta for Special Ad Categories (political, housing, employment). They are null for standard commercial ads.

Sample output

Standard commercial ad (e-commerce / sportswear)

{
"adArchiveID": "3948271054812",
"sourceUrl": "https://www.facebook.com/ads/library/?country=US&q=nike&active_status=active",
"pageID": "15087023444",
"pageName": "Nike",
"pageURL": "https://www.facebook.com/15087023444",
"pageCategory": "Sportswear store",
"pageLikes": 34800000,
"pageVerified": true,
"pageInstagramUser": "nike",
"pageInstagramFollowers": 302000000,
"pageCountry": "US",
"adText": "Just Do It. Shop the latest collection.",
"adCreativeBodies": ["Just Do It. Shop the latest collection.", "New arrivals — limited time only."],
"publisherPlatforms": ["facebook", "instagram"],
"adStatus": "ACTIVE",
"languages": ["en"],
"startDate": "2024-11-01T00:00:00+0000",
"endDate": null,
"adCreationTime": "2024-10-30T14:22:11+0000",
"estimatedAudienceSize": null,
"adLibraryURL": "https://www.facebook.com/ads/library/?id=3948271054812",
"adSnapshotUrl": "https://www.facebook.com/ads/archive/render_ad/?id=3948271054812",
"ctaDomain": "nike.com",
"ctaHeadline": "Shop the latest collection",
"ctaDescription": "Free shipping on orders $50+"
}
{
"adArchiveID": "7261039485012",
"sourceUrl": "https://www.facebook.com/ads/library/?country=FR&q=orpi&active_status=active",
"pageID": "204817389612445",
"pageName": "Orpi Immobilier",
"pageURL": "https://www.facebook.com/204817389612445",
"pageCategory": "Real estate agency",
"pageLikes": 42300,
"pageVerified": false,
"pageInstagramUser": "orpi_immobilier",
"pageInstagramFollowers": 18500,
"pageCountry": "FR",
"adText": "Vendez votre bien au meilleur prix. Estimation gratuite en ligne en 2 minutes.",
"adCreativeBodies": [
"Vendez votre bien au meilleur prix.",
"3 500 agences partout en France.",
"Estimation gratuite, sans engagement."
],
"publisherPlatforms": ["facebook", "instagram", "audience_network"],
"adStatus": "ACTIVE",
"languages": ["fr"],
"startDate": "2025-01-15T00:00:00+0000",
"endDate": null,
"adCreationTime": "2025-01-14T09:11:42+0000",
"estimatedAudienceSize": null,
"adLibraryURL": "https://www.facebook.com/ads/library/?id=7261039485012",
"adSnapshotUrl": "https://www.facebook.com/ads/archive/render_ad/?id=7261039485012",
"ctaDomain": "orpi.com",
"ctaHeadline": "Estimation immobilière gratuite",
"ctaDescription": "Obtenez une estimation en 2 minutes"
}

Special Ad Category — political (audience size populated)

{
"adArchiveID": "1092847362015",
"sourceUrl": "https://www.facebook.com/ads/library/?country=US&ad_type=political_and_issue_ads&q=example+campaign",
"pageID": "998877665544",
"pageName": "Example Campaign 2024",
"pageURL": "https://www.facebook.com/998877665544",
"pageCategory": "Political candidate",
"pageLikes": 87200,
"pageVerified": true,
"pageInstagramUser": null,
"pageInstagramFollowers": null,
"pageCountry": "US",
"adText": "Our community deserves better. Join us and make your voice heard.",
"adCreativeBodies": ["Our community deserves better. Join us and make your voice heard."],
"publisherPlatforms": ["facebook"],
"adStatus": "INACTIVE",
"languages": ["en"],
"startDate": "2024-09-01T00:00:00+0000",
"endDate": "2024-11-05T00:00:00+0000",
"adCreationTime": "2024-08-28T17:04:30+0000",
"estimatedAudienceSize": { "lower_bound": 500000, "upper_bound": 600000 },
"adLibraryURL": "https://www.facebook.com/ads/library/?id=1092847362015",
"adSnapshotUrl": "https://www.facebook.com/ads/archive/render_ad/?id=1092847362015",
"ctaDomain": "example-campaign.com",
"ctaHeadline": "Make your voice heard",
"ctaDescription": "Register to vote by November 1st"
}

Note: estimatedAudienceSize is only populated by Meta for Special Ad Categories (political, housing, employment). It is null for standard commercial ads.

🚀 Usage

Input

FieldTypeDefaultDescription
startUrlsstring[]Required. Meta Ad Library search URLs or Facebook page URLs
maxResultsnumber10Max ads to return
onlyTotalCountbooleanfalseReturn only the count, not the ads
includeAboutPagebooleantrueEnrich with advertiser page info (category, likes, Instagram…)
scrapeAdDetailsbooleantrueInclude CTA domain, headline, link description, snapshot URL

| activeStatus | select | ALL | Filter by ACTIVE / INACTIVE / ALL | | countryFallback | string | ALL | Country code if not detected in URL (e.g. US, FR, GB) |

Supported URL formats

Meta Ad Library search URL (copy-paste from ad library — all filters are preserved):

https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=US&q=nike&publisher_platforms[0]=instagram&media_type=video

Facebook page URL (scrape all ads from a specific advertiser):

https://www.facebook.com/nike
https://www.facebook.com/15087023444

💡 Tips

  • To scrape all ads from a specific brand, use their Facebook page URL — the scraper will find their Page ID and search the library for all their ads.
  • You can mix Ad Library URLs and page URLs in the same run.
  • Use onlyTotalCount: true to quickly check how many ads match your search before committing to a full scrape.
  • The countryFallback field is only used when no country param is found in the URL. Set it to restrict results to a specific market.
  • /people/ profile URLs (e.g. facebook.com/people/Name/ID) point to personal profiles, not Pages. The scraper falls back to a keyword search using the name slug, so results may not be page-specific.

💰 Pricing

This actor charges based on results. Each ad record extracted costs $0.0015 (= $1.50 per 1,000 ads) — billed in addition to Apify platform compute costs (typically $0.01–0.02 per 1,000 ads with 256 MB RAM).

Compare: The official Meta Ads Scraper charges $3.40–$5.80 per 1,000 ads. This actor is 2–4× cheaper with the same data.

  • This scraper uses the official Meta Ads Library API (public data only). No login required. No scraping of private data.
  • adStatus is derived from your search filter (ACTIVE / INACTIVE). When searching ALL statuses the field is null, since Meta does not return per-ad status for standard ads.
  • estimatedAudienceSize is only populated by Meta for Special Ad Categories (political, housing, employment) — it is null for standard commercial ads.
  • CTA button type (Shop Now, Sign Up…) and ad creative images are not exposed by Meta's Ads Library API for standard ads.
  • Ad creative images/videos are not downloaded — only the snapshot URL is provided.

Built by Leadsbrary — The B2B Lead Generation Platform.