All-in-one Facebook Pages scraper organized by scenarios: Page info, Posts, Comments from Page posts, Media, Reviews, Events, Content monitoring, or All-in-one. Works anonymously by default; optional cookies are only for pages your own account can view.
All notable changes to Facebook Scraper are listed here, newest first.
[0.2] - 2026-10-06
Added
Post details: paste links to single posts and get one row per post with its text, time, reactions, comments and shares counts, reactions by type, media, author and comments. Comments also takes post links and reads only that post's comments.
More data in every row: reactions by type on posts and videos, video plays and views, every photo of an album, the video file with its width and height, thumbnails of videos and Reels, and Facebook's description of each photo.
A readable time (ISO date and time, UTC) next to timestamp on posts, comments, videos, Reels and reviews.
Rows for lines without data say why: errorCode (not_found, login_required, not_read or internal_error), errorMessage in plain words, nextAction with what to do, and inputUrl with the line you pasted.
The run respects your maximum cost per run: when it is reached, the run stops starting new Pages, saves what it has and says so.
Changed
The Actor is now called Facebook Scraper. Its address is now apify.com/vortex_data/facebook-scraper: if you call it through the API by its old name vortex_data/facebook-pages, use the new name (calls by Actor ID keep working). The README follows Apify's structure: introduction, tutorial, pricing, input and output examples, other Actors, FAQ.
With Only newer than, posts are read only back to that date instead of reading Results per input posts and dropping the older ones: a Page with nothing new costs a few kilobytes, not megabytes, and the run is faster.
With Facebook cookies, public Pages are read the way they are without cookies, and your account is used only for Pages and posts that Facebook doesn't show to visitors who aren't logged in. Your account makes far fewer requests, and public Pages keep all their details and reviews.
A new field, Country you use Facebook from, makes the run use your account from your own country, so Facebook doesn't log you out.
Comments from a Page reads only as many of its recent posts as the comments need, instead of reading all of them first: about half the cost per comment, and faster runs.
Redesigned input form: choose what to scrape first, paste Pages, and press Start: the example input runs right away. Links, handles, Page IDs and post links all go into one field, Facebook Pages or post links; inputs that send startUrls keep working. The form has seven fields, as in our Instagram Scraper: what to scrape, the Pages, Results per input, the date filter, cookies and Get everything available. The date fields take a date or a period such as 3 months, and the cookie field explains how to get your cookies.
One number for comments: in Comments, Results per input is spread over the Page's recent posts, post by post, instead of a fixed 2 posts × 5 comments; for a post link it's that post's comments. The per-section numbers and the two comment numbers are no longer in the form; the API still accepts them.
The Output tab groups results into views: Pages, Contacts & details, Posts, Comments, Reviews and Post details. Every field has a name, a description and an example.
The Output tab links to the run report: what was scraped from each line, what was skipped and why, and what to do about lines without data.
The runs list shows progress while a run works ("12 of 40 Pages") and a word when it ends: Done, Partly done, Not found, No data, Failed or Stopped early. The last log line says the same in one sentence.
New README with step-by-step examples: emails and phones, posts from the last 7 days or a date range, comments from a post or a Page, reviews, and many Pages in one run.
Pages are read from Facebook's lightweight data instead of full web pages: about 4 to 5 times less traffic per Page and faster runs, with the same fields.
The run decides by itself how many Pages to read at once. Pages at once is no longer in the form; the API still accepts pageConcurrency.
No limits of our own on the numbers you ask for: Results per input and the API-only numbers take any positive number.
Asking for more than 10 comments per post reads Facebook's "All comments" order: comments the default order hides, at about half the traffic per comment.
Input that is a little off no longer stops the run: a value a field doesn't take falls back to its default, and the run report lists what was changed.
More cookie formats are read: JSON exports with any capitalisation, Copy as cURL, DevTools tables, and commas between cookies.
A run that meets an unexpected error still ends normally, keeps the rows it saved and says in its status what stopped it.
Fixed
A line without cookies that Facebook answers as "no Page here" now says it may also be a Page limited by age or country: Facebook shows both the same way to visitors who aren't logged in. Add cookies to read such Pages.
Follower counts are back for Pages in Facebook's new layout, which shows "followers" where it used to show "likes".
Photos of Pages whose photo section Facebook can't build (H&M, for example) are read from the Page's own photo list.
Every photo comes at full size; photos after a Page's first 8 used to be small previews.
A handle that is not a Page is not_found even when Facebook answers with its login page; a Page shown only after login is login_required.
A Page's details are kept when Facebook's Page transparency dialog fails for that Page.
Posts of very large Pages are read when Facebook can't build the first page of posts at once.
An empty or interrupted answer from Facebook is asked again instead of losing the section.
Counts written in other locales (1.234) are read as 1234; an abbreviated count (1,2K) is left empty instead of becoming 12000.
Short Page creation dates ("May 21, 2008") are read instead of the label "Creation date".
A post's message is the post's own text, never a comment or a "Commenting has been turned off" notice.
parseAllResults: "false" sent as text is no longer read as yes.
Post rows start with the same status columns as Page rows (resultStatus, dataQuality, accessLevel, nextAction), and nextAction is written in plain words.
A run moved by the platform continues where it was, without writing Pages twice; lines not started before a timeout are read after the move.
Removed
The fields pageDetailsRecoveredFromRoot and pageProfileUri, which were never filled.
[0.1.106] - 2026-10-01
Changed
All traffic goes through Apify Residential proxy; if the proxy can't be set up, the run stops instead of contacting Facebook without it.
Runs get 4 GB of memory by default (512 MB minimum), so they are not slowed down by a lack of CPU.
Reviews are returned again.
Page details and Reels are read with fewer requests.
[0.1.105] - 2026-07-12
Changed
Pricing: one Page result costs $0.0055 from July 27, 2026, whatever number of posts, comments, media, reviews or events it contains.
[0.1.104] - 2026-07-12
Added
Optional Facebook cookies, for Pages your own account can see. Cookies are never written to the log or the results.
Scenarios in What do you want to scrape?: Page details & contacts, Posts, Comments, Media, Reviews, Events and Content monitoring.
A date filter for posts.
Older Facebook link forms (/p/…, /pages/…, /people/…) are read as Page IDs.
Long runs save their results and stop starting new Pages shortly before the run's timeout.
Every row starts with a short summary of what it contains.
Fixed
A run whose Pages are all unavailable ends successfully with a row for each of them.
Fewer warnings in the log for sections a Page doesn't have.
[0.1] - Initial public release
One row per Page with its details, posts, photos, videos, Reels, reviews and events, without a Facebook login.