Facebook Ads Scraper avatar

Facebook Ads Scraper

Under maintenance

Pricing

from $4.00 / 1,000 results

Go to Apify Store
Facebook Ads Scraper

Facebook Ads Scraper

Under maintenance

Search Meta's public Ad Library by keyword or page. Get clean ad records with an estimated booking duration — no login, no browser, no API token.

Pricing

from $4.00 / 1,000 results

Rating

0.0

(0)

Developer

REXREUS D.O

REXREUS D.O

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

14 days ago

Last modified

Categories

Share

Facebook Ads Scraper

Search the public Meta Ad Library by keyword or page and download clean ad records as JSON or CSV

Search Meta's public Ad Library by keyword or page. Get clean ad records with an estimated booking duration — no login, no browser, no API token.

HTTP-first · 256 MB · up to 1,000 active ads per run · CSV export included

Quick Start Apify Node.js

Why this Actor?

The Meta Ad Library is public, but the market leaders price runs at $0.40–0.75 per 1,000 ads and gate useful output behind premium tiers. This Actor undercuts that with differentiators that cost almost nothing to run:

FeatureWhat you get
Keyword or page searchSearch by keyword in any country, or look up a page by name/URL/ID
bookingEstimateEstimated booking duration in days per ad (date-range × count) — inventory whitespace nobody else computes
CSV export bundleOUTPUT.csv ready for Excel/Sheets, matched to the JSON dataset
Country batchUp to 10 countries in one run
mediaType filterClient-side ALL / IMAGE / VIDEO / MEME / NONE — the server ignores this, we don't
Date rangestartDate / endDate client-side filter on results
Row statusEvery record classified SUCCESS / PARTIAL / NOT_FOUND / BLOCKED / ERROR with httpStatus — no silent "no ads" lies
LightweightHTTP-first, single 256 MB instance, no browser, no login, no token

Quick start

  1. Open the Actor on Apify Console and click Start.
  2. Set a keyword (e.g. nike) or a page name, pick countries, choose max results.
  3. Turn on the residential proxy option — required for full pagination.
  4. Download the dataset as JSON, CSV, or Excel; the CSV export is also in the Key-Value Store.
{
"keyword": "nike",
"countries": ["US"],
"maxResults": 50,
"mediaType": "ALL",
"exportCsv": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"]
}
}

How it works

Keyword or page → Meta Ad Library GraphQL → paginated ads → clean dataset rows + OUTPUT.csv

One HTTP session bootstraps the library, then the GraphQL search endpoint returns ad pages until your result cap is reached. Each ad is flattened to a buyer-ready row. No page rendering, no browser automation, no stored credentials.

Input

FieldTypeRequiredDefaultDescription
keywordstringif no page—Search term, up to 200 chars
pagestringif no keyword—Page name, URL, or ID lookup
countriesstring[]no["US"]1–10 ISO 3166-1 alpha-2 codes
maxResultsintegerno501–1,000 ads
mediaTypestringnoALLALL / IMAGE / VIDEO / MEME / NONE
startDatestringno—YYYY-MM-DD, client-side filter
endDatestringno—YYYY-MM-DD, client-side filter
exportCsvbooleannotrueWrites OUTPUT.csv to the Key-Value Store
proxyConfigurationobjectnooffApify proxy input. Residential recommended for full pagination
docIdstringno—GraphQL doc_id override (escape hatch if Meta rotates document IDs)

Output

Each dataset record (absent values are null):

{
"id": "123456789012345",
"pageId": "987654321",
"pageName": "Nike",
"pageUrl": "https://www.facebook.com/Nike",
"headline": "Move the world.",
"bodyText": "Just do it. Shop the new collection.",
"caption": "nike.com",
"linkDescription": "Shop now and save",
"ctaText": "Shop Now",
"ctaType": "BUTTON",
"imageUrl": "https://scontent.xx.fbcdn.net/1234567890_98765",
"videoUrl": null,
"linkUrl": "https://www.nike.com/offer",
"mediaType": "IMAGE",
"startDate": "2026-09-01T00:00:00.000Z",
"endDate": "2026-10-01T00:00:00.000Z",
"platforms": ["facebook"],
"targetCountries": ["US"],
"disclaimer": null,
"snapshotUrl": "https://www.facebook.com/ads/library/?id=123456789012345",
"bookingEstimate": 31,
"status": "SUCCESS",
"httpStatus": 200
}
FieldTypeDescription
idstringAd archive ID
pageId / pageName / pageUrlstringAdvertiser
headline / bodyText / caption / linkDescriptionstringAd copy, HTML stripped
ctaText / ctaTypestringCall-to-action
imageUrl / videoUrl / linkUrlstringMedia + landing URL (stored, never fetched)
mediaTypestringIMAGE / VIDEO / MEME / …
startDate / endDatestringISO 8601 dates
platforms / targetCountriesarrayMulti-value
disclaimerstringDisclaimer text, HTML stripped
snapshotUrlstringPermalink to the ad snapshot
bookingEstimateintegerEstimated booking duration in days (estimate, not spend)
statusstringSUCCESS / PARTIAL / NOT_FOUND / BLOCKED / ERROR
httpStatusintegerLast request status

Cost, limits, proxy

  • Memory: 256 MB, single instance
  • Proxy: residential proxy recommended. Without proxy the run is capped to page 1 (~30 ads) and sets isLimited: true. Meta Ad Library blocks datacenter IPs after the first page (400 / rate limit 1675004). Use the residential group for full pagination.
  • Runtime: ~45 s for 500 ads with a 2 s request delay; scales with maxResults and country count
  • Result cap: maxResults up to 1,000 per run
  • Pricing: pay-per-result. Base from $0.30 per 1,000 ads (compute + proxy included). Platform cost ≈ $0.10–0.20 per 1,000 ads, dominated by residential proxy bandwidth; the differentiators (booking estimate, CSV export, country batch, dedupe) add ≈$0.

Recipes

Page lookup — all ads for one brand

{
"page": "https://www.facebook.com/Nike",
"countries": ["US"],
"maxResults": 200,
"exportCsv": true
}

Multi-country keyword sweep

{
"keyword": "iphone",
"countries": ["US", "DE", "FR", "GB", "AU"],
"maxResults": 100,
"mediaType": "VIDEO",
"exportCsv": true
}

Video-only, last 30 days

{
"keyword": "skincare",
"countries": ["ID"],
"maxResults": 80,
"mediaType": "VIDEO",
"startDate": "2026-09-11",
"endDate": "2026-10-11",
"exportCsv": true
}

Troubleshooting

SymptomCauseFix
Run fails with Rate limit exceeded (1675004)Datacenter IP blocked by MetaEnable the residential proxy group
Run capped ~30 ads, isLimited: trueNo proxy configuredAdd proxyConfiguration (residential)
NOT_FOUND, 0 recordsKeyword or page name mis-typed, or page has no active adsVerify the page name/URL in the Ad Library
BLOCKED / ERROR rowsPer-ad parse failure or HTTP errorCheck httpStatus; re-run with residential proxy
Empty OUTPUT.csvmaxResults reached 0 resultsWiden keyword or drop the date filter

FAQ

Q: Does this need a Facebook account or API token? A: No. Everything runs on the public Ad Library over plain HTTPS. No login, no cookies, no token.

Q: Is a proxy required? A: For more than ~30 ads per run, yes — use the residential proxy group. Meta blocks datacenter IPs after the first page. Proxy cost is per GB and stays well under the per-1,000 result price.

Q: How fast is a run? A: About 45 seconds for 500 ads. Speed scales with maxResults and country count; a 2-second delay between pages keeps the request rate Meta-friendly.

Q: Can this see private accounts or restricted ads? A: No. It reads only what the public Meta Ad Library exposes — same data you see in the transparency library.

Q: Is scraping the Ad Library legal / ToS-safe? A: The data is public transparency data. You are responsible for complying with Meta's terms, applicable privacy law, and your own use of the records.

Q: Can I download a spreadsheet? A: Yes. Set exportCsv: true (default) and grab OUTPUT.csv from the Key-Value Store, or export the dataset as JSON, CSV, or Excel from Console.

Q: What does large-scale use cost? A: Around $0.30 per 1,000 ads at the base rate. At 5 runs/day × 500 ads (~2,500 ads/day) the underlying platform cost is roughly $0.15/day; quote-driven, pay-per-result.

Limitations

  • Public, active ads only, per the Meta Ad Library. No private or restricted content.
  • The library may rotate its GraphQL document ID; use the docId override if a run stops returning data.
  • bookingEstimate is a date-range estimation, not Facebook spend or revenue data.
  • No media file downloads — records carry media URLs only (SSRF-safe).

Run it

Open the Actor on Apify Console and click Start.

License

Proprietary. All rights reserved. Copyright (c) REXREUS.

You may run this Actor on Apify. You may not copy, rebrand, republish, or claim this Actor as your own. See ./LICENSE.