
Facebook Ads Scraper
Pricing
from $3.40 / 1,000 campaigns

Facebook Ads Scraper
Extract advertising data from one or multiple Facebook Pages. Get page details, reach estimates, publisher platforms, report count, number of impressions, ad IDs, timestamps, and more. Download Facebook ads data in JSON, CSV, and Excel and use it in apps, spreadsheets, and reports.
4.4 (10)
Pricing
from $3.40 / 1,000 campaigns
190
Total users
9.2K
Monthly users
853
Runs succeeded
>99%
Issues response
2.4 days
Last modified
2 days ago
Request timeout
Closed
Facebook is blocking the current Cheerio-based scraper, causing every request to time out. Any tips of handling this?
icon.me
Even after adding a residential proxy to the request body, requests still time out or returns “Page access was blocked,” so the Ads Scraper yields zero ads. The URL is properly formed, does not redirect, and I manually checked a few to verify that they are running ads (eg, to https://www.facebook.com/EuropeanWax is running ~890)
icon.me
Here is the log for that run:
2025-07-15T16:31:20.789Z ACTOR: Pulling Docker image of build zRJQMGuehg2Kq2ncE from registry. 2025-07-15T16:31:20.792Z ACTOR: Creating Docker container. 2025-07-15T16:31:20.881Z ACTOR: Starting Docker container. 2025-07-15T16:31:22.693Z INFO System info {"apifyVersion":"3.4.2","apifyClientVersion":"2.12.5","crawleeVersion":"3.13.7","osType":"Linux","nodeVersion":"v20.19.2"} 2025-07-15T16:31:22.927Z INFO Results Limit 1 2025-07-15T16:31:22.929Z INFO pushDataMaxAware 39555 2025-07-15T16:31:23.564Z INFO CheerioCrawler: Using the old RequestQueue implementation without request locking. 2025-07-15T16:31:23.965Z INFO CheerioCrawler: Starting the crawler. 2025-07-15T16:31:54.057Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. request timed out after 30 seconds. {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":1} 2025-07-15T16:32:11.189Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. Page access was blocked or page is not available, retrying with new session 2025-07-15T16:32:11.191Z at generateAndEnqueueAdsLibraryUrlFromFBPageAndInput (file:///usr/src/app/dist/src/ads/routes.js:54:23) {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":2} 2025-07-15T16:32:23.967Z INFO CheerioCrawler:Statistics: CheerioCrawler request statistics: {"requestAvgFailedDurationMillis":null,"requestAvgFinishedDurationMillis":null,"requestsFinishedPerMinute":0,"requestsFailedPerMinute":0,"requestTotalDurationMillis":0,"requestsTotal":0,"crawlerRuntimeMillis":60559,"retryHistogram":[]} 2025-07-15T16:32:23.998Z INFO CheerioCrawler:AutoscaledPool: state {"currentConcurrency":1,"desiredConcurrency":10,"systemStatus":{"isSystemIdle":true,"memInfo":{"isOverloaded":false,"limitRatio":0.2,"actualRatio":0},"eventLoopInfo":{"isOverloaded":false,"limitRatio":0.7,"actualRatio":0},"cpuInfo":{"isOverloaded":false,"limitRatio":0.4,"actualRatio":0},"clientInfo":{"isOverloaded":false,"limitRatio":0.3,"actualRatio":0}}} 2025-07-15T16:32:28.891Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. Page access was blocked or page is not available, retrying with new session 2025-07-15T16:32:28.894Z at generateAndEnqueueAdsLibraryUrlFromFBPageAndInput (file:///usr/src/app/dist/src/ads/routes.js:54:23) {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":3} 2025-07-15T16:32:35.386Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. Page access was blocked or page is not available, retrying with new session 2025-07-15T16:32:35.388Z at generateAndEnqueueAdsLibraryUrlFromFBPageAndInput (file:///usr/src/app/dist/src/ads/routes.js:54:23) {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":4} 2025-07-15T16:32:44.564Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. Page access was blocked or page is not available, retrying with new session 2025-07-15T16:32:44.566Z at generateAndEnqueueAdsLibraryUrlFromFBPageAndInput (file:///usr/src/app/dist/src/ads/routes.js:54:23) {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":5} 2025-07-15T16:33:02.386Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. Page access was blocked or page is not available, retrying with new session 2025-07-15T16:33:02.388Z at generateAndEnqueueAdsLibraryUrlFromFBPageAndInput (file:///usr/src/app/dist/src/ads/routes.js:54:23) {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":6} 2025-07-15T16:33:07.681Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. Page access was blocked or page is not available, retrying with new session 2025-07-15T16:33:07.683Z at generateAndEnqueueAdsLibraryUrlFromFBPageAndInput (file:///usr/src/app/dist/src/ads/routes.js:54:23) {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":7} 2025-07-15T16:33:18.711Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. The proxy server rejected the request with status code 590 (UPSTREAM502) 2025-07-15T16:33:18.713Z {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":8} 2025-07-15T16:33:23.968Z INFO CheerioCrawler:Statistics: CheerioCrawler request statistics: {"requestAvgFailedDurationMillis":null,"requestAvgFinishedDurationMillis":null,"requestsFinishedPerMinute":0,"requestsFailedPerMinute":0,"requestTotalDurationMillis":0,"requestsTotal":0,"crawlerRuntimeMillis":120560,"retryHistogram":[]} 2025-07-15T16:33:24.001Z INFO CheerioCrawler:AutoscaledPool: state {"currentConcurrency":1,"desiredConcurrency":10,"systemStatus":{"isSystemIdle":true,"memInfo":{"isOverloaded":false,"limitRatio":0.2,"actualRatio":0},"eventLoopInfo":{"isOverloaded":false,"limitRatio":0.7,"actualRatio":0},"cpuInfo":{"isOverloaded":false,"limitRatio":0.4,"actualRatio":0},"clientInfo":{"isOverloaded":false,"limitRatio":0.3,"actualRatio":0}}} 2025-07-15T16:33:52.194Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. request timed out after 30 seconds. {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":9} 2025-07-15T16:34:23.968Z INFO CheerioCrawler:Statistics: CheerioCrawler request statistics: {"requestAvgFailedDurationMillis":null,"requestAvgFinishedDurationMillis":null,"requestsFinishedPerMinute":0,"requestsFailedPerMinute":0,"requestTotalDurationMillis":0,"requestsTotal":0,"crawlerRuntimeMillis":180561,"retryHistogram":[]} 2025-07-15T16:34:24.003Z INFO CheerioCrawler:AutoscaledPool: state {"currentConcurrency":1,"desiredConcurrency":10,"systemStatus":{"isSystemIdle":true,"memInfo":{"isOverloaded":false,"limitRatio":0.2,"actualRatio":0},"eventLoopInfo":{"isOverloaded":false,"limitRatio":0.7,"actualRatio":0},"cpuInfo":{"isOverloaded":false,"limitRatio":0.4,"actualRatio":0},"clientInfo":{"isOverloaded":false,"limitRatio":0.3,"actualRatio":0}}} 2025-07-15T16:34:25.443Z WARN CheerioCrawler: Reclaiming failed request back to the list or queue. request timed out after 30 seconds. {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","retryCount":10} 2025-07-15T16:34:36.343Z ERROR CheerioCrawler: Request failed and reached maximum retries. Error: Page access was blocked or page is not available, retrying with new session 2025-07-15T16:34:36.345Z at generateAndEnqueueAdsLibraryUrlFromFBPageAndInput (file:///usr/src/app/dist/src/ads/routes.js:54:23) 2025-07-15T16:34:36.346Z at file:///usr/src/app/dist/src/ads/ads-scraper.js:18:80 2025-07-15T16:34:36.348Z at CheerioCrawler.func [as requestHandler] (/usr/src/app/node_modules/@crawlee/core/router.js:172:44) 2025-07-15T16:34:36.349Z at /usr/src/app/node_modules/@crawlee/http/internals/http-crawler.js:355:87 2025-07-15T16:34:36.351Z at wrap (/usr/src/app/node_modules/@apify/timeout/cjs/index.cjs:54:27) 2025-07-15T16:34:36.353Z at /usr/src/app/node_modules/@apify/timeout/cjs/index.cjs:68:7 2025-07-15T16:34:36.354Z at AsyncLocalStorage.run (node:async_hooks:335:14) 2025-07-15T16:34:36.356Z at /usr/src/app/node_modules/@apify/timeout/cjs/index.cjs:67:13 2025-07-15T16:34:36.357Z at new Promise () 2025-07-15T16:34:36.359Z at addTimeoutToPromise (/usr/src/app/node_modules/@apify/timeout/cjs/index.cjs:61:10) {"id":"mLgGAJJL0kyWoXX","url":"https://www.facebook.com/EuropeanWax","method":"GET","uniqueKey":"https://www.facebook.com/EuropeanWax"} 2025-07-15T16:34:36.443Z INFO CheerioCrawler: All requests from the queue have been processed, the crawler will shut down. 2025-07-15T16:34:36.670Z INFO CheerioCrawler: Final request statistics: {"requestsFinished":0,"requestsFailed":1,"retryHistogram":[null,null,null,null,null,null,null,null,null,null,1],"requestAvgFailedDurationMillis":7679,"requestAvgFinishedDurationMillis":null,"requestsFinishedPerMinute":0,"requestsFailedPerMinute":0,"requestTotalDurationMillis":7679,"requestsTotal":1,"crawlerRuntimeMillis":193262} 2025-07-15T16:34:36.672Z INFO CheerioCrawler: Error analysis: {"totalErrors":1,"uniqueErrors":1,"mostCommonErrors":["1x: Page access was blocked or page is not available, retrying with new session (file:///usr/src/app/dist/src/ads/routes.js:54:23)"]} 2025-07-15T16:34:36.674Z INFO CheerioCrawler: Finished! Total 1 requests: 0 succeeded, 1 failed. {"terminal":true}

Hi!
Special case when ads by counter for https://www.facebook.com/EuropeanWax are 890 for active or 900+ for active + inactive https://www.facebook.com/ads/library/?active_status=active&ad_type=all&country=ALL&is_targeted_country=false&media_type=all&search_type=page&view_all_page_id=108555182262 but no ads are displayed in the FB Library and the actor is not capable of getting any as well.
For regular pages, everything works fine, but for EuropeanWax, somehow, data access is not public as it should be. Will check if there is a way around.
icon.me
This is not a special case. I calculated 967 "0 succeeded" runs in July. I just gave european wax as an example, but I see similar errors for the other runs before that one too.
See https://facebook.com/WoombikesUSA, https://facebook.com/tanakasaimin, https://facebook.com/justinguitar, etc
icon.me
I would also like to request a refund for the malfunctioning runs
The actor is pay per result, but it has been counting results where "0 succeeded" as "Success"

Hi!
Thanks for providing more details. All 3 pages mentioned by you are not public (not visible without a Facebook login), so the issue is specific to pages with a limited audience.
Credit compensation request forwarded to the sales team.

{"related_pages": [],"has_blank_ads": false,"hidden_ads": 0,"page_is_deleted": false,"page_profile_uri": "https://www.facebook.com/EuropeanWax/","page_name": "European Wax Center","page_id": "108555182262","page_verification": "BLUE_VERIFIED","entity_type": "PERSON_PROFILE","page_alias": "EuropeanWax","likes": 281625,"page_category": "Health/beauty","ig_verification": true,"ig_username": "europeanwax","ig_followers": 108768}
The Facebook page is restricted by the country or age (or both, see https://www.facebook.com/help/778445532225441). Other social networks are not restricted, see waxcenter.com (social media links at the bottom) Without a login, nothing is available aside from the transparency settings mentioned above.