Facebook Scraper: Pages, Posts, Groups & Comments
Pricing
from $2.40 / 1,000 post from feeds
Facebook Scraper: Pages, Posts, Groups & Comments
Facebook scraper for public pages, profiles, page and group posts, post details and comments by URL. No login or cookies, free date filter, exact limits, pay only for real rows.
Pricing
from $2.40 / 1,000 post from feeds
Rating
0.0
(0)
Developer
API Samurai
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
This Facebook scraper gets public data from Facebook pages, profiles, groups, posts and comments by URL. Page rows come with category, likes, followers, email, phone, website, address and ad status. Post rows come with text, date, reactions, comment count, shares, views, photos, video links and author. Comment rows come with text, date, reactions, reply count and commenter. No Facebook account, login or cookies are needed, the date filter is free, and you pay only for real, unique rows.
What you can use it for
- Monitor brand and competitor pages: new posts, reactions and comments on a schedule.
- Collect leads from business pages: email, phone, website, address and category.
- Track public groups for topics, questions and product mentions.
- Analyze audience reactions with full comment text for sentiment and AI datasets.
- Check ad activity: each page row says whether the page is running ads.
How to use
- Open the Facebook Scraper page and click Try for free.
- Paste page, profile or group links, and any post links, one per line.
- Set Max posts per page, profile or group, and optionally Posted after and Add comments of each post.
- Click Start. Rows appear in the Output tab while the run works.
- Export the dataset as JSON, CSV or Excel, or check the
SUMMARYrecord in the key-value store.
API: start a run and get the rows in one call with POST https://api.apify.com/v2/acts/apisamurai~facebook-scraper/run-sync-get-dataset-items?token=<YOUR_APIFY_TOKEN> and the input as JSON in the body.
Input
| Field | What it does |
|---|---|
| Page, profile or group links | https://www.facebook.com/NASA, profile.php?id=... or /groups/.... Pages give one page row plus recent posts; groups give recent posts. |
| Post links | /posts/..., /reel/..., /watch/?v=..., /videos/..., /photo/?fbid=..., /groups/.../posts/... or /share/p/.... One row per post. |
| Add recent posts of each page or profile | On by default. Newest first. |
| Max posts per page, profile or group | Default 10. Enforced exactly. |
| Posted after | 2026-10-01 or 7 days. Older posts are skipped and not charged. |
| Add comments of each post | Off by default. One row per comment. |
| Max comments per post | Default 20. Enforced exactly. |
{"pageUrls": ["https://www.facebook.com/NASA", "https://www.facebook.com/groups/742354120555345/"],"postUrls": ["https://www.facebook.com/reel/1535656380759655"],"includePosts": true,"maxPostsPerPage": 20,"postedAfter": "30 days","includeComments": true,"maxCommentsPerPost": 50}
Output
One row per page, post or comment; type tells them apart. Field names never change between runs, and missing values are null, never a fake 0. Example post row from a live run (shortened):
json { "type": "post", "id": "1705688854261871", "url": "https://www.facebook.com/natgeo/posts/pfbid025aNMbNrYGNizGSMp7coqF46h91hSSQdyAo3AhYhCwoUeyJF3ceXyFA8YhKSErP3sl", "permalink": "https://www.facebook.com/natgeo/posts/pfbid025aNMbNrYGNizGSMp7coqF46h91hSSQdyAo3AhYhCwoUeyJF3ceXyFA8YhKSErP3sl", "text": "Over more than a decade, a total of 15 feet washed ashore along the Salish Sea. This type of mystery, it turns out, re...", "postedAt": "2026-10-30T01:00:00.000Z", "reactions": 933, "reactionBreakdown": { "thankful": 0, "like": 763, "love": 12, "care": 5, "haha": 4, "wow": 138, "sad": 7, "anger": 4, "pride": 0, "confused": 0 }, "commentsCount": 119, "shares": 83, "views": null, "author": { "id": "100044623170418", "name": "National Geographic", "handle": null, "url": null, "verified": null, "imageUrl": null }, "imageUrls": [ "https://scontent-bos5-1.xx.fbcdn.net/v/t39.30808-6/873928258_1705688834261873_3243387074114719293_n.jpg?..." ], "video": null, "link": null, "isPaidPartnership": null, "sharedPostId": null, "sharedPostUrl": null, "topComments": [ { "id": "Y29tbWVudDoxNzA1Njg4ODU0MjYxODcxXzk3NTk3OTU5ODM2MzA2NA==", "text": "The feet belong to people who died by accident or suicide in the sea, their bodies sank but the...", "postedAt": "2026-10-30T01:25:02.000Z", "author": { "id": "pfbid0Pc4FR9LkqPiii8TFFgh4DbodHt5Chc5TZiU1Kg8raAA7mYoCrAuXxmuT91hcDhHzl", "name": "Samara Dyva", "url": null, "imageUrl": null } } ], "source": "page", "input": "https://www.facebook.com/natgeo", "scrapedAt": "2026-10-31T16:24:49.190Z" }Page rows have type: "page", id, name, url, category, intro, likes, followers, talkingAbout, rating, ratingCount, email, phone, website, address, links, services, priceRange, createdAt, isBusinessPageActive, adStatus, adLibraryPageId, profilePicUrl, coverPhotoUrl, input, scrapedAt.
Post rows have type: "post", id, url, permalink, text, postedAt, reactions, reactionBreakdown, commentsCount, shares, views, author (id, name, handle, url, verified, imageUrl), imageUrls, video (url, sdUrl, hdUrl, thumbnailUrl, durationSeconds), link (shared link preview), isPaidPartnership, sharedPostId, sharedPostUrl, topComments, source (page, group or post), input, scrapedAt. Group feeds do not show shares, and views are only known for videos.
Comment rows have type: "comment", id, postId, postUrl, text, postedAt, reactions, reactionBreakdown, repliesCount, author (id, name, url, imageUrl), attachments, source, input, scrapedAt.
Each run also writes a SUMMARY record. For every input link it lists rows requested and delivered, posts and comments delivered, posts older than Posted after, duplicates, links not found, failed lookups, and why it stopped (limit reached, no more results, older than postedAfter, private or not found, duplicate, temporary error, spending limit, free plan limit or data source unavailable).
Pricing
$6.50 per 1,000 pages; $2.40 per 1,000 posts from page and group feeds; $6.50 per 1,000 posts by link; $0.75 per 1,000 comments
Fair billing
- No start fee, no per-run fee, no minimum charge. You pay per row saved.
- The date filter is free. Posts older than Posted after are skipped and never charged, and paging stops once a feed is past the date.
- Only real rows are charged. Private, missing and age-restricted pages and posts cost nothing.
- Duplicates are never charged. A post found in a feed and also pasted as a link is saved once.
- Failed lookups are not charged. They are counted in the
SUMMARYrecord and listed in the log. - Post and comment limits are exact: you never get, or pay for, more than you asked.
- When you hit your spending limit, the run stops cleanly.
- Free Apify plan: up to 100 rows per run, so you can try it. Any paid plan removes the limit.
Integrations
- Apify API to start runs and read datasets from any language, plus the Python and JavaScript clients (
apify-client). - Zapier, Make and n8n to send new rows to Google Sheets, HubSpot, Slack or a database.
- MCP for AI agents: connect the Apify MCP server to Claude, ChatGPT or another MCP client and the agent can run this Actor as a tool.
- Schedules and webhooks in Apify Console for daily or weekly runs.
FAQ
Do I need a Facebook account, login or cookies? No. You only need an Apify account. The Actor reads public data, the same as a logged-out visitor sees.
Can it scrape private groups or personal profiles that are not public?
No. Only public pages, public profiles and public groups. Private and age-restricted pages are reported as private or not found and are not charged.
Why do posts by link cost more than posts from a feed? A page or group feed returns about 3 posts per data request, while a post link needs a request of its own. Post links also include the share count for group posts and, when Facebook shows them, view counts.
Why did I get fewer rows than I asked for?
Open the SUMMARY record. It says for each link why it stopped: no more posts, the Posted after date, a duplicate, a private or missing page, a temporary error, the spending limit or the free plan limit.
Does "Posted after" filter comments too? No. It filters posts. Comments are collected for every post that is saved, up to Max comments per post.
Does it get replies to comments? No. Comment rows are top-level comments with their reply count.
Can I schedule it?
Yes. Create a schedule in Apify Console, for example a daily run over your pages with Posted after set to 1 day, and connect an integration to get the new rows.
Is it legal to scrape Facebook? The Actor collects only public data. You are responsible for how you use it: follow Facebook's terms and the laws where you live, and take care with personal data (for example under GDPR). This is not legal advice.