Facebook Posts Scraper - Pages, Profiles & Reactions

Eimantas V · @amethyst

Scrape posts from public Facebook Pages and profiles: text, date, reactions by type, comments, shares, video views and media. Date filters and new-post alerts.

About

Facebook Posts Scraper extracts posts from public Facebook Pages and profiles. Paste Page links, usernames or IDs, get one row per post with its text, date, reactions by type, comment, share and view counts, the top comments, photos with image descriptions, videos and reels with direct file links, link previews and reshared posts. No login, no cookies, no browser.

{
    "postId": "1670768087751894",
    "url": "https://www.facebook.com/reel/4075684206061398/",
    "date": "2026-10-29T11:49:38.000Z",
    "text": "NASA astronaut Anil Menon and Canadian Space Agency astronaut Joshua Kutryk are getting ready to head out of the International Space Station! ...",
    "authorName": "NASA - National Aeronautics and Space Administration",
    "reactionCount": 957,
    "reactions": { "like": 809, "love": 112, "care": 19, "haha": 11, "wow": 5, "sad": 0, "angry": 1 },
    "commentCount": 81,
    "shareCount": 89,
    "viewCount": 18067,
    "playCount": 102934,
    "mediaType": "reel",
    "videoDurationSecs": 39.4
}

90 posts from 3 Pages in 28 seconds, the latest post of 20 Pages in 20 seconds: no login, no browser.

What does Facebook Posts Scraper do?

It reads a Page's or profile's timeline the way Facebook's own website loads it for a visitor who is not logged in, and returns every post as a clean row you can export or feed to other tools. Limit by date, jump straight to any period of a Page's history, or keep a schedule running that only ever returns new posts.

  • Every way to name a Page. Page URLs (facebook.com/nasa), profile links (facebook.com/profile.php?id=...), usernames, numeric IDs, for brand Pages and public personal profiles alike. Inputs written for apify/facebook-posts-scraper (startUrls, resultsLimit, onlyPostsNewerThan, onlyPostsOlderThan, captionText) work unchanged.
  • Engagement in detail. Reactions split into like, love, care, haha, wow, sad and angry; comment and share counts; views and plays for videos and reels; the 1-2 comments Facebook shows under each post, with author, date, reactions and replies.
  • All the media. Photos and albums with image descriptions, videos and reels with a direct MP4 link, length, thumbnail and caption languages, link previews with title, description and site, reshared posts with their text and author.
  • Video transcripts. Turn on "Include video transcripts" and every captioned video or reel gets its captions as plain text.
  • Any date range. "Posts newer than" stops at the first older post. "Posts older than" makes Facebook jump straight to that date, so posts from 2019 cost the same as this week's.
  • Monitoring built in. "Only posts not seen in earlier runs" remembers the newest post delivered for each Page, so a daily schedule returns only what is new and never delivers the same post twice.
  • Page details on every row. Page name, ID, username, picture, verified badge, and the Page's Meta Ad Library ID (to look up its ads).
  • Clear errors. Pages that are private, missing or cannot be read return an error row instead of failing the run.

Why it is fast and cheap

There is no browser to start. The Actor calls the same timeline endpoint Facebook's website uses for logged-out visitors, three posts per request. Facebook answers timelines only to residential addresses, so the Actor uses the platform's residential proxy by default and moves to a fresh address whenever Facebook refuses one.

What data can you extract from Facebook posts?

GroupFields
PostpostId, url, shortUrl, date, timestamp, text, hashtags, mentions, links, position
EngagementreactionCount, reactions (by type), commentCount, shareCount, viewCount, playCount, topComments
MediamediaType, imageUrls, imageDescriptions, photoCount, videoUrl, videoThumbnailUrl, videoDurationSecs, videoCaptionLocales, videoTranscript
Links and shareslinkUrl, linkTitle, linkDescription, linkDomain, sharedPostUrl, sharedPostText, sharedPostAuthorName
PageauthorName, authorId, authorUsername, authorUrl, authorPictureUrl, authorIsVerified, adLibraryPageId, isBusinessPageActive, collaborators

How to scrape Facebook posts

  1. Click Try for free and paste Page links, usernames or IDs into Facebook Pages or profiles, one per line.
  2. Set Posts per Page and Max posts in total. These also cap the run's compute and proxy traffic.
  3. Optionally set Posts newer than and Posts older than for a date range, or turn on Only posts not seen in earlier runs for a schedule. Click Start. Each Page gives about 3 posts a second; Pages run in parallel.
  4. Open the Output tab, or read the dataset as JSON.

How much does it cost to scrape Facebook posts?

One flat monthly rental, shown on this page, with a free trial. There is no per-post fee: scrape as many posts as you need.

Runs use your credits for compute and proxy traffic, as every Actor does. Facebook answers timelines only to residential addresses, so the residential proxy is part of every run. Measured on Bytewells: the last 20 posts of NASA's Page in 18 seconds at 512 MB, with about 1 MB of residential traffic, for $0.006 of credits: about $0.30 per 1,000 posts, almost all of it proxy traffic.

Input

{
    "targets": [
        "https://www.facebook.com/NASA",
        "natgeo",
        "https://www.facebook.com/profile.php?id=100064277875532"
    ],
    "maxPostsPerPage": 50,
    "maxItems": 1000,
    "postsNewerThan": "30 days",
    "includeVideoTranscripts": false
}
FieldDefaultNotes
Facebook Pages or profilesPage or profile URLs, usernames or IDs, one per line. Public Pages and profiles only
Posts per Page20Newest first; Facebook serves 3 posts per request
Max posts in total1000Across all Pages: your cost cap
Posts newer thanA date (2026-01-31) or a period ("7 days"). Paging stops at the first older post
Posts older thanA date. Facebook jumps straight to it; combine with the field above for a range
Only posts not seen in earlier runsoffFor schedules: returns only posts newer than the last run delivered, per Page
Include video transcriptsoffCaptions of captioned videos and reels as plain text
ProxyResidentialKeep it: Facebook refuses timelines from other addresses

Output

Each post is one row in the dataset. The Overview view shows the key columns, and the Engagement, Media and Pages views group the rest; every export includes all fields.

{
    "recordType": "post",
    "input": "https://www.facebook.com/NASA",
    "postId": "1670768087751894",
    "url": "https://www.facebook.com/reel/4075684206061398/",
    "shortUrl": "https://www.facebook.com/100044561550831/posts/1670768087751894",
    "date": "2026-10-29T11:49:38.000Z",
    "timestamp": 1793274578,
    "text": "NASA astronaut Anil Menon and Canadian Space Agency astronaut Joshua Kutryk are getting ready to head out of the International Space Station! ... Tune into today's spacewalk: https://www.youtube.com/live/hv867HnY4j4",
    "authorName": "NASA - National Aeronautics and Space Administration",
    "authorId": "100044561550831",
    "authorUsername": "NASA",
    "authorUrl": "https://www.facebook.com/NASA",
    "authorPictureUrl": "https://scontent.xx.fbcdn.net/v/t39.30808-1/...",
    "authorIsVerified": true,
    "adLibraryPageId": "54971236771",
    "isBusinessPageActive": false,
    "collaborators": [],
    "reactionCount": 957,
    "reactions": { "like": 809, "love": 112, "care": 19, "haha": 11, "wow": 5, "sad": 0, "angry": 1 },
    "commentCount": 81,
    "shareCount": 89,
    "viewCount": 18067,
    "playCount": 102934,
    "topComments": [
        {
            "commentId": "1434787351418028",
            "text": "They're the real astronauts... me, I'm just a fan of space and NASA!",
            "date": "2026-10-29T12:50:18.000Z",
            "authorName": "A. Commenter",
            "authorId": "1000943384...",
            "authorPictureUrl": "https://scontent.xx.fbcdn.net/v/t39.30808-1/...",
            "reactionCount": 6,
            "replyCount": 2,
            "url": "https://www.facebook.com/reel/4075684206061398/?comment_id=1434787351418028"
        }
    ],
    "mediaType": "reel",
    "imageUrls": [],
    "imageDescriptions": [],
    "photoCount": null,
    "videoUrl": "https://video.xx.fbcdn.net/o1/v/t2/f2/m366/...mp4",
    "videoThumbnailUrl": "https://scontent.xx.fbcdn.net/v/t15.5256-10/...jpg",
    "videoDurationSecs": 39.4,
    "videoCaptionLocales": [],
    "videoTranscript": null,
    "linkUrl": null,
    "linkTitle": null,
    "linkDescription": null,
    "linkDomain": null,
    "sharedPostUrl": null,
    "sharedPostText": null,
    "sharedPostAuthorName": null,
    "hashtags": [],
    "mentions": ["Canadian Space Agency", "International Space Station"],
    "links": ["https://www.youtube.com/live/hv867HnY4j4"],
    "position": 4,
    "feedbackId": "ZmVlZGJhY2s6MTY3MDc2ODA4Nzc1MTg5NA==",
    "scrapedAt": "2026-10-30T11:27:08.957Z"
}

A Page that cannot be read becomes a row with "recordType": "error" and an errorCode instead of failing the whole run:

errorCodeMeaning
NOT_FOUNDNo public Page or profile at this address, or the ID does not exist
NOT_A_PAGEThe address is a group or a single post, or the ID belongs to a group
NO_POSTSThe Page or profile shows no posts to visitors who are not logged in
RATE_LIMITEDFacebook refused every address tried; run the Page again later
FACEBOOK_ERRORFacebook rejected the request itself (it may have changed its site)

Tips and limits

  • Public Pages and profiles only. Posts visible only to friends or followers who are logged in cannot be read, and this Actor never logs in.
  • Groups and single posts are not covered: this Actor reads Page and profile timelines.
  • Top comments, not all comments. Facebook shows 1-2 comments per post on the timeline. Each post carries those top comments, not the full thread.
  • Pinned posts are read in their place on the timeline, not first, so date limits work.
  • Albums carry their first few photos on the timeline; photoCount says how many the album has.
  • Image and video links are temporary Facebook CDN links: download what you need soon after the run.

FAQ

Is it legal to scrape Facebook posts?

This Actor collects only data that Facebook shows publicly to visitors who are not logged in. Posts and comments can still contain personal data, which laws such as the GDPR protect. Scrape personal data only for a legitimate purpose, and ask a lawyer if you are unsure. Facebook is a trademark of Meta Platforms; this Actor is not affiliated with or endorsed by Meta.

Do I need a Facebook account or cookies?

No. Nothing is logged in, and no cookies or tokens are needed. That is also why only public Pages and profiles can be scraped.

How do I monitor Pages for new posts?

Turn on Only posts not seen in earlier runs and run the Actor on a schedule. Each run returns only the posts published since the newest one the previous runs delivered, per Page, and stops reading there, so a quiet day costs almost nothing. The memory is a key-value store in your account named facebook-page-monitor-state.

Can I use it through the API?

Yes. Every run can be started through the API and returns the dataset as JSON. Runs can also be scheduled and followed with webhooks.

Can AI agents use it?

Yes. Agents connected to the Bytewells MCP server can find and run this Actor as a tool.

Why did I get fewer posts than I asked for?

The Page has fewer posts than your limit (or fewer in your date range), or the run reached its timeout. The log says which, and nothing collected before that is lost.

Related scrapers

FAQ

What data does it return for each Facebook post?
Text, date, reactions by type, comment and share counts, video views, the top comments, photos, videos, reels and links, plus the Page or profile it came from. Albums carry their first photos and a photoCount.
Do I need a Facebook account or cookies?
No. Nothing is logged in and no cookies or tokens are needed. That is also why only public Pages and profiles can be scraped.
How do I monitor Pages for new posts?
Turn on Only posts not seen in earlier runs and run the Actor on a schedule. Each run returns only the posts published since the newest one delivered before, per Page, and stops reading there, so a quiet day costs almost nothing.
How much does it cost?
One flat monthly rental, shown on this page, with a free trial and no per-post fee. Facebook answers timelines only to residential addresses, so runs use your Bytewells credits for compute and residential traffic. Measured on Bytewells: NASA's last 20 posts in 18 seconds for $0.006, about $0.30 per 1,000 posts.
Does it get every comment on a post?
No. Facebook shows 1-2 top comments per post on the timeline, and each post carries those, not the full thread.
Can it scrape Facebook groups or single post links?
No. It reads the timelines of public Pages and profiles. Groups and single post URLs are not covered.
Can I use it through the API or from AI agents?
Yes. Start runs through the Bytewells API (bytewells.com/docs/api), schedule them and read the dataset as JSON; webhooks work too. The API is Apify-compatible, so apify-client works with the Bytewells base URL. AI agents can run it as a tool through the Bytewells MCP server (bytewells.com/docs/mcp).

More Actors from the same publisher.

View all from @amethyst