Facebook Ads Scraper
Under maintenancePricing
from $4.00 / 1,000 results
Facebook Ads Scraper
Under maintenanceSearch 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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
14 days ago
Last modified
Categories
Share
Facebook Ads Scraper
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
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:
| Feature | What you get |
|---|---|
| Keyword or page search | Search by keyword in any country, or look up a page by name/URL/ID |
bookingEstimate | Estimated booking duration in days per ad (date-range × count) — inventory whitespace nobody else computes |
| CSV export bundle | OUTPUT.csv ready for Excel/Sheets, matched to the JSON dataset |
| Country batch | Up to 10 countries in one run |
mediaType filter | Client-side ALL / IMAGE / VIDEO / MEME / NONE — the server ignores this, we don't |
| Date range | startDate / endDate client-side filter on results |
| Row status | Every record classified SUCCESS / PARTIAL / NOT_FOUND / BLOCKED / ERROR with httpStatus — no silent "no ads" lies |
| Lightweight | HTTP-first, single 256 MB instance, no browser, no login, no token |
Quick start
- Open the Actor on Apify Console and click Start.
- Set a keyword (e.g.
nike) or a page name, pick countries, choose max results. - Turn on the residential proxy option — required for full pagination.
- 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
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
keyword | string | if no page | — | Search term, up to 200 chars |
page | string | if no keyword | — | Page name, URL, or ID lookup |
countries | string[] | no | ["US"] | 1–10 ISO 3166-1 alpha-2 codes |
maxResults | integer | no | 50 | 1–1,000 ads |
mediaType | string | no | ALL | ALL / IMAGE / VIDEO / MEME / NONE |
startDate | string | no | — | YYYY-MM-DD, client-side filter |
endDate | string | no | — | YYYY-MM-DD, client-side filter |
exportCsv | boolean | no | true | Writes OUTPUT.csv to the Key-Value Store |
proxyConfiguration | object | no | off | Apify proxy input. Residential recommended for full pagination |
docId | string | no | — | 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}
| Field | Type | Description |
|---|---|---|
id | string | Ad archive ID |
pageId / pageName / pageUrl | string | Advertiser |
headline / bodyText / caption / linkDescription | string | Ad copy, HTML stripped |
ctaText / ctaType | string | Call-to-action |
imageUrl / videoUrl / linkUrl | string | Media + landing URL (stored, never fetched) |
mediaType | string | IMAGE / VIDEO / MEME / … |
startDate / endDate | string | ISO 8601 dates |
platforms / targetCountries | array | Multi-value |
disclaimer | string | Disclaimer text, HTML stripped |
snapshotUrl | string | Permalink to the ad snapshot |
bookingEstimate | integer | Estimated booking duration in days (estimate, not spend) |
status | string | SUCCESS / PARTIAL / NOT_FOUND / BLOCKED / ERROR |
httpStatus | integer | Last 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 limit1675004). Use the residential group for full pagination. - Runtime: ~45 s for 500 ads with a 2 s request delay; scales with
maxResultsand country count - Result cap:
maxResultsup 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
| Symptom | Cause | Fix |
|---|---|---|
Run fails with Rate limit exceeded (1675004) | Datacenter IP blocked by Meta | Enable the residential proxy group |
Run capped ~30 ads, isLimited: true | No proxy configured | Add proxyConfiguration (residential) |
NOT_FOUND, 0 records | Keyword or page name mis-typed, or page has no active ads | Verify the page name/URL in the Ad Library |
BLOCKED / ERROR rows | Per-ad parse failure or HTTP error | Check httpStatus; re-run with residential proxy |
Empty OUTPUT.csv | maxResults reached 0 results | Widen 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
docIdoverride if a run stops returning data. bookingEstimateis 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.