Facebook Scraper - Page Posts, Group Posts, Comments & Pages avatar

Facebook Scraper - Page Posts, Group Posts, Comments & Pages

Pricing

from $2.00 / 1,000 results

Go to Apify Store
Facebook Scraper - Page Posts, Group Posts, Comments & Pages

Facebook Scraper - Page Posts, Group Posts, Comments & Pages

Scrape public Facebook Page posts, public Group posts, post comments with reply threads, public Page details, and keyword search - without a Facebook login, cookies or an account pool.

Pricing

from $2.00 / 1,000 results

Rating

0.0

(0)

Developer

Thirdwatch

Thirdwatch

Maintained by Community

Actor stats

0

Bookmarked

13

Total users

5

Monthly active users

4 hours ago

Last modified

Share

Facebook Scraper — Page Posts, Group Posts, Comments & Page Details

What you get

Scrape public Facebook data: posts from a Page, posts from a public Group, comments and reply threads on a post, public Page details, and keyword search over the public web index.

No Facebook account, no cookies, no c_user/xs session, no cookie pool and no browser. Every request is the request an anonymous visitor's browser makes, and the Actor reads the same public payload Facebook renders for that visitor.

Modes

ModeInputReturns
page_postspageUrlsPosts from a public Page or profile timeline
group_postsgroupUrlsPosts from a public Group discussion feed
post_commentspostUrlsComments and replies on a public post
page_detailspageUrlsPublic About block: category, followers, contact info
searchqueryPublic Facebook URLs matching a keyword

page_posts — posts by Page URL or username

Accepts a full URL (https://www.facebook.com/nasa), a bare username (nasa), a /posts/ URL, or a profile.php?id=... URL.

{
"mode": "page_posts",
"pageUrls": ["nasa", "https://www.facebook.com/BBCNews"],
"maxResults": 100
}

group_posts — posts by public group URL

{
"mode": "group_posts",
"groupUrls": ["https://www.facebook.com/groups/1443890352589739/"],
"maxResults": 100
}

Private, closed and members-only groups are not readable without a login. The Actor reports them as a failure rather than returning an empty result set.

Post fields (page_posts, group_posts)

FieldDescription
post_id, post_url, story_idIdentifiers and the public permalink
textFull post text
created_at, timestampISO 8601 UTC and raw Unix seconds
author_name, author_id, author_urlPoster identity
reactions_count, reactions_breakdownTotal plus per-type counts (Like, Love, Care, Haha, Wow, Sad, Angry)
comments_count, shares_count, video_viewsEngagement
media_type, image_urls, link_urlAttached media and the unwrapped outbound link
source_url, source_type, source_nameThe Page or Group the post came from

post_comments — comments and replies by post URL

Accepts a Page post (/posts/..., including the pfbid... form), a public group post (/groups/<group>/posts/<id>/), /photo/?fbid=..., /videos/... and permalink.php URLs.

Reels (/reel/...) are not supported: Facebook renders no comment payload at all for a logged-out reel viewer. A reel URL fails the run with that reason rather than returning zero comments.

{
"mode": "post_comments",
"postUrls": ["https://www.facebook.com/NASA/posts/1619357056226331"],
"maxCommentsPerPost": 100,
"includeReplies": true,
"maxRepliesPerComment": 10
}

maxCommentsPerPost caps top-level comments; replies are returned in addition and capped separately by maxRepliesPerComment.

Facebook serves anonymous visitors only part of a busy thread. A post whose counter reads 87 comments typically streams around 30 of them before the public cursor runs out; the run ends successfully at that point, because the source genuinely stopped serving, and the log says how many the post claims to have.

Comment fields

FieldDescription
comment_id, comment_urlIdentifier and direct ?comment_id= link
post_id, post_urlThe post the comment belongs to
textComment body
created_at, timestampISO 8601 UTC and raw Unix seconds
author_name, author_id, author_urlCommenter identity
depth, is_reply, parent_comment_idThread position — join replies to their parent
replies_countReplies under this comment
reactions_count, reactions_breakdownReaction total and per-type counts
attachment_urlsImages attached to the comment

Rebuild a thread by grouping on parent_comment_id: rows with is_reply: false are the roots, rows with is_reply: true hang off the root whose comment_id matches their parent_comment_id.

page_details — public About info

{"mode": "page_details", "pageUrls": ["nasa", "bbcnews"]}

Returns page_id, name, username, url, intro, categories, followers_text, likes_text, talking_about_text, websites, emails, phones, addresses, other_fields, profile_picture_url, cover_photo_url.

search — keyword search over the public index

{
"mode": "search",
"query": "artificial intelligence",
"search_type": "posts",
"max_posts": 25,
"location": "United States"
}

search_type is posts, pages, places or global. Optional location, recent_posts, start_date, end_date and queries (up to 19 extra terms) narrow the search. This is public web-index search, not Facebook's personalized logged-in search: coverage and ranking differ from facebook.com, and de-indexed or very new content may be missing. Facebook's own search routes require a logged-in account, so no logged-out equivalent is pretended here.

places pairs well with page_details: search for dentist in Austin, Texas, then feed the returned page URLs straight into a page_details run to get each business's phone, address, website and opening hours.

Use cases

  • Brand and competitor monitoring — track a competitor's Page posts and the engagement each one earns.
  • Community and audience research — pull discussion from public Groups in your niche.
  • Comment mining and sentiment analysis — full comment threads with author, timestamp, reactions and reply structure, ready for an LLM or a sentiment model.
  • Lead generation — page_details returns the public website, email, phone and address a business chose to publish.
  • Content and creative research — see which post formats and topics earn reactions in a category.
  • Crisis and reputation watch — re-run a post's comments on a schedule and diff the result.

Example post record

{
"record_type": "post",
"post_id": "1620874212741282",
"post_url": "https://www.facebook.com/reel/28631238109803230/",
"text": "AvGeeks, assemble!\n\nMAX POWER, America's newest aerospace expo...",
"created_at": "2026-09-04T15:07:02+00:00",
"timestamp": 1788534422,
"author_name": "NASA - National Aeronautics and Space Administration",
"author_id": "100044561550831",
"author_url": "https://www.facebook.com/NASA",
"reactions_count": 871,
"reactions_breakdown": [{"type": "Like", "count": 750}, {"type": "Love", "count": 101}],
"comments_count": 71,
"shares_count": 82,
"video_views": 20785,
"media_type": "video",
"image_urls": ["https://scontent.xx.fbcdn.net/v/t15.5256-10/796096241_..."],
"source_type": "page",
"source_name": "NASA - National Aeronautics and Space Administration",
"mode": "page_posts",
"scraped_at": "2026-09-07T18:31:00+00:00"
}

Example comment record

{
"record_type": "comment",
"comment_id": "1064578393220354",
"comment_url": "https://www.facebook.com/NASA/posts/pfbid02UW...?comment_id=1064578393220354",
"post_id": "1619357056226331",
"text": "Rayleigh scattering filtering out blue light explains that red moon colour.",
"created_at": "2026-09-03T00:51:39+00:00",
"author_name": "Tushar Arora",
"author_id": "61583456871751",
"author_url": "https://www.facebook.com/profile.php?id=61583456871751",
"depth": 0,
"is_reply": false,
"parent_comment_id": "",
"replies_count": 4,
"reactions_count": 3,
"reactions_breakdown": [{"type": "Like", "count": 3}],
"mode": "post_comments"
}

Proxy

Leave proxyConfiguration empty to use the tested defaults. Each mode automatically uses the setup that is verified to work reliably for that part of Facebook, so most users never need to touch this field.

Honest failures

A login wall is a failure, never an empty success. If Facebook serves its logged-out shell instead of the public payload, the Actor retries automatically; if no source is readable the run fails with the reason. A run that ends with rows at zero means the source genuinely had no public items — not that the Actor was blocked. The same rule applies to search: if the index returns results the parser cannot read, the run fails rather than reporting zero matches.

Limitations

  • Only content Facebook shows to logged-out visitors is available. Private profiles, closed or members-only groups, friends-only posts, and login-gated content are out of reach by design and are reported as failures rather than silently skipped.
  • As of September 2026, post_comments is degraded: Facebook now serves its logged-out shell for comment surfaces on most posts, so comment requests increasingly fail with a login-wall error instead of returning comments. page_posts, group_posts, page_details and search all still return real data. Comment-mode runs that reach no source fail honestly rather than billing empty results.
  • mbasic.facebook.com is dead — Meta redirects it to the login wall for every exit type — so it is not used.
  • Keyword search runs against DuckDuckGo's public HTML index rather than Google — Google stopped embedding real destination URLs in its result markup, which made index results unreadable. Result coverage and recency differ slightly from Google's index.
  • Anonymous feed pagination is capped by Facebook, and the two feeds differ sharply. A Page timeline renders one post to a logged-out visitor and then yields roughly three per pagination request, so 40 posts is about 14 requests. A public Group renders around 19 up front and 3-9 per request after that. Very deep back-catalogues take proportionally longer.
  • Facebook refuses the Page timeline's root feed query to every logged-out caller (
    Rate limit exceeded
    , code 1675004) on every exit type and at every page size. The Actor therefore reads the rendered page and continues with the refetch query, which is served normally. Nothing is lost, but it is why the first page of a Page timeline is a single post.
  • Reaction breakdowns cover the reaction types Facebook surfaces in the public bling bar, which is the top few, not always all seven.
  • Group posters appear as rotating opaque pfbid... ids rather than numeric ones; that is Facebook's own anonymisation, and the id is not stable between runs.

The Actor accesses only public URLs. Use personal data lawfully and in accordance with Facebook's terms and applicable privacy laws.

Output fields

  • One row per result with stable keys.

Input parameters

ParameterRequiredDescription
modeYesPage posts, public group posts, post comments and replies, public page details, or keyword search over the public web index.
pageUrlsNoUsed by Page posts and Page details. Accepts https://www.facebook.com/nasa, a bare username like nasa, or a profile.php?id=... URL.
groupUrlsNoUsed by Group posts. Example: https://www.facebook.com/groups/pygame/. Private, closed and members-only groups are not readable without a login; they are reported as a failure rather than returned empty.
postUrlsNoUsed by Post comments. Accepts Page post URLs (/posts/..., including the pfbid form), public group post URLs (/groups/
maxResultsNoMaximum records for Page posts, Group posts and Page details, shared across all supplied sources.
maxCommentsPerPostNoUsed by Post comments. Caps TOP-LEVEL comments per post; replies are returned in addition, capped separately by the replies limit below. Facebook serves anonymous visitors only part of a busy thread - roughly 30 comments on a post whose counter reads 87 - so a run can finish below this cap because the source stopped serving.
includeRepliesNoFetch the replies under each top-level comment. Replies carry parent_comment_id so threads can be rebuilt.
maxRepliesPerCommentNoCap on replies fetched under each top-level comment.
proxyConfigurationNoLeave as-is for the tested defaults, which are verified to work reliably for each mode. Choosing a group, a country or your own proxy URLs overrides the default.
queryNoSearch mode only. Keyword or phrase to find in public Facebook results.
search_typeNoSearch mode only. Search public posts, pages/profiles, places, or all indexed Facebook result types.
max_postsNoSearch mode only. Maximum number of unique results across all queries. A minimum of 5 applies; public search-index depth varies by keyword.
recent_postsNoSearch mode only. For post searches, prefer results indexed during the past week. Explicit dates take precedence.
locationNoSearch mode only. Optional city, region or country added to the search, for example Austin, Texas or London, UK.
start_dateNoSearch mode only. Optional earliest index date in YYYY-MM-DD format.
end_dateNoSearch mode only. Optional latest index date in YYYY-MM-DD format.
queriesNoSearch mode only. Optional additional search terms processed in the same run.

Last verified: 2026-09

More scrapers at thirdwatch.dev.