Facebook Timeline Posts & Reel Transcript Extractor
Pull recent posts and Reels from a public Facebook Page or Profile, or fetch one post by its link, with text, reaction breakdown, comments, media, and real auto-generated video captions. No login or cookies required.
Input schema
Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.
| Field | Type | Required | Description |
|---|---|---|---|
startUrls | array | required | Mix any public Facebook links. A Page or Profile link (facebook.com/nike, profile.php?id=…, /people/…/…) returns its timeline posts. A post, reel, video, photo, watch, share (facebook.com/share/…, fb.watch/…), permalink.php, story.php or public group post link returns that single post. Group feeds, events, Marketplace and search pages are not supported. |
maxItems | integer | optional | How many posts to collect from each Page or Profile link, newest first. Posts removed by the filters below don't count. Single post links always return one post. |
onlyPostsNewerThan | string | optional | Page and Profile links only: keep posts published after this moment. Accepts a date (2026-01-01), a full ISO 8601 timestamp, or a relative period such as "7 days", "2 weeks", "3 months" or "1 year". |
Show all input fields
| Field | Type | Required | Description |
|---|---|---|---|
startUrls | array | required | Mix any public Facebook links. A Page or Profile link (facebook.com/nike, profile.php?id=…, /people/…/…) returns its timeline posts. A post, reel, video, photo, watch, share (facebook.com/share/…, fb.watch/…), permalink.php, story.php or public group post link returns that single post. Group feeds, events, Marketplace and search pages are not supported. |
maxItems | integer | optional | How many posts to collect from each Page or Profile link, newest first. Posts removed by the filters below don't count. Single post links always return one post. |
onlyPostsNewerThan | string | optional | Page and Profile links only: keep posts published after this moment. Accepts a date (2026-01-01), a full ISO 8601 timestamp, or a relative period such as "7 days", "2 weeks", "3 months" or "1 year". |
onlyPostsOlderThan | string | optional | Page and Profile links only: keep posts published before this moment. Same formats as "Only posts newer than". Combine both for a date window. |
contentTypes | array | optional | Page and Profile links only: keep only these kinds of posts. Leave empty to keep everything. When matching posts are rare, the timeline scan stops after 20 × the post limit (at least 50) scanned posts and the run status says so. |
minReactions | integer | optional | Page and Profile links only: skip posts with fewer reactions than this. |
minComments | integer | optional | Page and Profile links only: skip posts with fewer comments than this. |
includeTopComments | boolean | optional | Attach the comments Facebook shows under each post (about 1-10 per post) at no extra cost. |
fetchAllComments | boolean | optional | Collect the full comment list of every post into allComments, up to the limit below. Adds a few requests per post. |
maxCommentsPerPost | integer | optional | Upper limit for allComments on each post. Replies count toward this limit when replies are included. |
commentsSortOrder | string | optional | Order in which allComments are collected. "Newest first" is the best choice for monitoring recent discussion. |
onlyCommentsNewerThan | string | optional | Keep only comments posted after this moment in allComments: a date (2026-01-01), ISO timestamp, or period such as "1 day" or "2 weeks". Comments are then read newest first. |
includeCommentReplies | boolean | optional | Add each comment's reply thread (including replies to replies) as a replies list inside the comment. |
includeCommentReactions | boolean | optional | Add each comment's reactions split by type (Like, Love, Haha, …) with exact totals, also for busy comments Facebook shows as "1.2K". Adds one request per comment that has reactions. |
fetchVideoCaptions | boolean | optional | For videos and reels that have captions, download Facebook's own caption file and add it as a transcript (SRT text plus plain text). These are Facebook's captions, not independent speech-to-text. |
fetchReelDetails | boolean | optional | For reels, add the audio track (title, original audio or song, album art) and whether the reel can be remixed. Adds one request per reel. |
fetchSharedPostDetails | boolean | optional | For posts that re-share another post, add the original post's text, type and counters to sharedPost. Adds one request per shared post. |
fetchAllAlbumPhotos | boolean | optional | The timeline shows at most five photos of an album post. Turn this on to list every photo of the album. |
rehostMedia | string | optional | Facebook's media links stop working after a few days. Copies are stored with this run and keep working; the original link stays in the matching …Original field. |
Download the published input schema
View complete JSON
{
"description": "Paste Facebook Page, Profile, post, reel, video or share links. Page and Profile links return their timeline posts; every other link returns that one post.",
"properties": {
"commentsSortOrder": {
"default": "mostRelevant",
"description": "Order in which allComments are collected. \"Newest first\" is the best choice for monitoring recent discussion.",
"editor": "select",
"enum": [
"mostRelevant",
"newest",
"all"
],
"enumTitles": [
"Most relevant (Facebook's default)",
"Newest first",
"All comments, unfiltered"
],
"title": "Comment order",
"type": "string"
},
"contentTypes": {
"default": [],
"description": "Page and Profile links only: keep only these kinds of posts. Leave empty to keep everything. When matching posts are rare, the timeline scan stops after 20 × the post limit (at least 50) scanned posts and the run status says so.",
"editor": "select",
"items": {
"enum": [
"text",
"photo",
"album",
"video",
"reel",
"link",
"share",
"live"
],
"enumTitles": [
"Text only",
"Single photo",
"Photo album (several photos)",
"Video",
"Reel",
"Link with preview",
"Shared post",
"Live video"
],
"type": "string"
},
"title": "Content types",
"type": "array"
},
"fetchAllAlbumPhotos": {
"default": false,
"description": "The timeline shows at most five photos of an album post. Turn this on to list every photo of the album.",
"prefill": false,
"title": "Fetch every album photo",
"type": "boolean"
},
"fetchAllComments": {
"default": false,
"description": "Collect the full comment list of every post into allComments, up to the limit below. Adds a few requests per post.",
"prefill": false,
"title": "Fetch all comments",
"type": "boolean"
},
"fetchReelDetails": {
"default": false,
"description": "For reels, add the audio track (title, original audio or song, album art) and whether the reel can be remixed. Adds one request per reel.",
"prefill": false,
"title": "Reel audio and remix details",
"type": "boolean"
},
"fetchSharedPostDetails": {
"default": false,
"description": "For posts that re-share another post, add the original post's text, type and counters to sharedPost. Adds one request per shared post.",
"prefill": false,
"title": "Original text of shared posts",
"type": "boolean"
},
"fetchVideoCaptions": {
"default": false,
"description": "For videos and reels that have captions, download Facebook's own caption file and add it as a transcript (SRT text plus plain text). These are Facebook's captions, not independent speech-to-text.",
"prefill": false,
"sectionCaption": "Media",
"title": "Fetch video transcripts",
"type": "boolean"
},
"includeCommentReactions": {
"default": false,
"description": "Add each comment's reactions split by type (Like, Love, Haha, …) with exact totals, also for busy comments Facebook shows as \"1.2K\". Adds one request per comment that has reactions.",
"prefill": false,
"title": "Reactions by type on comments",
"type": "boolean"
},
"includeCommentReplies": {
"default": false,
"description": "Add each comment's reply thread (including replies to replies) as a replies list inside the comment.",
"prefill": false,
"title": "Include replies",
"type": "boolean"
},
"includeTopComments": {
"default": true,
"description": "Attach the comments Facebook shows under each post (about 1-10 per post) at no extra cost.",
"prefill": false,
"sectionCaption": "Comments",
"title": "Include top comments",
"type": "boolean"
},
"maxCommentsPerPost": {
"default": 100,
"description": "Upper limit for allComments on each post. Replies count toward this limit when replies are included.",
"maximum": 5000,
"minimum": 1,
"title": "Max comments per post",
"type": "integer"
},
"maxItems": {
"default": 20,
"description": "How many posts to collect from each Page or Profile link, newest first. Posts removed by the filters below don't count. Single post links always return one post.",
"maximum": 10000,
"minimum": 1,
"prefill": 1,
"sectionCaption": "Timeline limits and filters",
"title": "Max posts per Page or Profile",
"type": "integer"
},
"minComments": {
"description": "Page and Profile links only: skip posts with fewer comments than this.",
"maximum": 100000000,
"minimum": 0,
"title": "Minimum comments",
"type": "integer"
},
"minReactions": {
"description": "Page and Profile links only: skip posts with fewer reactions than this.",
"maximum": 100000000,
"minimum": 0,
"title": "Minimum reactions",
"type": "integer"
},
"onlyCommentsNewerThan": {
"description": "Keep only comments posted after this moment in allComments: a date (2026-01-01), ISO timestamp, or period such as \"1 day\" or \"2 weeks\". Comments are then read newest first.",
"editor": "textfield",
"title": "Only comments newer than",
"type": "string"
},
"onlyPostsNewerThan": {
"description": "Page and Profile links only: keep posts published after this moment. Accepts a date (2026-01-01), a full ISO 8601 timestamp, or a relative period such as \"7 days\", \"2 weeks\", \"3 months\" or \"1 year\".",
"editor": "textfield",
"title": "Only posts newer than",
"type": "string"
},
"onlyPostsOlderThan": {
"description": "Page and Profile links only: keep posts published before this moment. Same formats as \"Only posts newer than\". Combine both for a date window.",
"editor": "textfield",
"title": "Only posts older than",
"type": "string"
},
"rehostMedia": {
"default": "images",
"description": "Facebook's media links stop working after a few days. Copies are stored with this run and keep working; the original link stays in the matching …Original field.",
"editor": "select",
"enum": [
"images",
"imagesAndVideos",
"none"
],
"enumTitles": [
"Images (photos, thumbnails, link and author pictures)",
"Images and videos (larger, slower)",
"No copies, keep Facebook's links"
],
"prefill": "none",
"title": "Keep permanent media copies",
"type": "string"
},
"startUrls": {
"description": "Mix any public Facebook links. A Page or Profile link (facebook.com/nike, profile.php?id=…, /people/…/…) returns its timeline posts. A post, reel, video, photo, watch, share (facebook.com/share/…, fb.watch/…), permalink.php, story.php or public group post link returns that single post. Group feeds, events, Marketplace and search pages are not supported.",
"editor": "requestListSources",
"example": [
{
"url": "https://www.facebook.com/nike"
},
{
"url": "https://www.facebook.com/reel/2995026330636892/"
}
],
"items": {
"properties": {
"url": {
"description": "A Facebook Page, Profile, post, reel, video or share link.",
"title": "URL",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"prefill": [
{
"url": "https://www.facebook.com/pepsi/posts/1054998311204476"
}
],
"title": "Facebook links",
"type": "array"
}
},
"required": [
"startUrls"
],
"schemaVersion": 1,
"title": "Facebook Timeline Posts & Reel Transcript Extractor Input",
"type": "object"
}
Output schema
Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.
| Field | Type | Required | Description |
|---|---|---|---|
posts | string | optional | Dataset containing all scraped Facebook posts. |
Download the published output schema
View complete JSON
{
"actorOutputSchemaVersion": 1,
"description": "One record per Facebook post, reel or video: text, author, reactions by type, comment and share counts, video views, media links, link previews, comments with replies and optional transcripts.",
"properties": {
"posts": {
"description": "Dataset containing all scraped Facebook posts.",
"template": "{{links.apiDefaultDatasetUrl}}/items",
"title": "Facebook posts",
"type": "string"
}
},
"title": "Facebook Timeline Posts & Reel Transcript Extractor Output",
"type": "object"
}
Dataset schema
Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.
Download the published dataset schema
View complete JSON
{
"actorSpecification": 1,
"title": "Facebook Posts Data",
"views": {
"engagement": {
"display": {
"component": "table",
"properties": {
"author.name": {
"format": "text",
"label": "Author"
},
"commentsCount": {
"format": "number",
"label": "Comments"
},
"contentType": {
"format": "text",
"label": "Type"
},
"creationTimeIso": {
"format": "date",
"label": "Posted"
},
"permalinkUrl": {
"format": "link",
"label": "URL"
},
"postId": {
"format": "text",
"label": "Post ID"
},
"reactionBreakdown": {
"format": "object",
"label": "Reactions by type"
},
"reactionsTotal": {
"format": "number",
"label": "Reactions"
},
"sharesCount": {
"format": "number",
"label": "Shares"
}
}
},
"title": "Engagement",
"transformation": {
"fields": [
"postId",
"contentType",
"author.name",
"reactionsTotal",
"reactionBreakdown",
"commentsCount",
"sharesCount",
"creationTimeIso",
"permalinkUrl"
]
}
},
"overview": {
"display": {
"component": "table",
"properties": {
"author.name": {
"format": "text",
"label": "Author"
},
"commentsCount": {
"format": "number",
"label": "Comments"
},
"creationTime": {
"format": "number",
"label": "Posted (Unix)"
},
"permalinkUrl": {
"format": "link",
"label": "URL"
},
"postId": {
"format": "text",
"label": "Post ID"
},
"postType": {
"format": "text",
"label": "Type"
},
"reactionsTotal": {
"format": "number",
"label": "Reactions"
},
"sharesCount": {
"format": "number",
"label": "Shares"
},
"text": {
"format": "text",
"label": "Text"
}
}
},
"title": "Posts Overview",
"transformation": {
"fields": [
"postId",
"postType",
"text",
"author.name",
"reactionsTotal",
"commentsCount",
"sharesCount",
"creationTime",
"permalinkUrl"
]
}
},
"videos": {
"display": {
"component": "table",
"properties": {
"author.name": {
"format": "text",
"label": "Author"
},
"commentsCount": {
"format": "number",
"label": "Comments"
},
"contentType": {
"format": "text",
"label": "Type"
},
"creationTimeIso": {
"format": "date",
"label": "Posted"
},
"permalinkUrl": {
"format": "link",
"label": "URL"
},
"postId": {
"format": "text",
"label": "Post ID"
},
"reactionsTotal": {
"format": "number",
"label": "Reactions"
},
"sharesCount": {
"format": "number",
"label": "Shares"
},
"text": {
"format": "text",
"label": "Text"
},
"videoViewCount": {
"format": "number",
"label": "Video views (alt. metric)"
},
"viewsCount": {
"format": "number",
"label": "Views"
}
}
},
"title": "Videos & reels",
"transformation": {
"fields": [
"postId",
"contentType",
"text",
"author.name",
"viewsCount",
"videoViewCount",
"reactionsTotal",
"commentsCount",
"sharesCount",
"creationTimeIso",
"permalinkUrl"
]
}
}
}
}
Key-value schema
Published key-value store definitions, when provided by this build.
This definition is not present in the default published build. See the published README for available documentation.
Published README
Read the full published documentation
Facebook Timeline Posts & Reel Transcript Extractor
Turn any public Facebook Page or Profile into a clean, spreadsheet-ready feed of its posts, or look up individual posts, reels and videos straight from their links. Every record carries the post text, the author, reaction counts split by type, comment and share totals, play counts for videos and reels, photo and video files, link-card details, and, when you ask for them, the full comment threads and Facebook's own reel and video captions. You don't need a Facebook account, cookies or any proxy setup.
What this actor does
- Reads whole timelines, not only the first screen. Collect a few posts or thousands from each Page or Profile, newest first. Narrow them down with a date window, content types (reels, albums, links, shared posts and more), or minimum reactions and comments.
- Opens almost any Facebook link. Post, reel, video, watch, photo,
permalink.php,story.php, mobile, public group post and share links (facebook.com/share/…,fb.watch/…) each return that one post, so a list of links you collected elsewhere can be enriched in one run. - Counts and conversations, included. Video and reel records include the play count Facebook displays plus its two other view metrics; reactions come per type (Like, Love, Care, Haha, Wow, Sad, Angry and seasonal ones) next to the total. Pick the comment order (most relevant, newest or unfiltered) and optionally include each comment's reply thread, with its author, profile picture, time, reaction count and direct link.
- Keeps the media usable. Every photo of an album, link-preview cards, the shared post behind a re-share, and permanent copies of images (videos optional), because Facebook's own media links expire after a few days.
- Empty fields are omitted. Fields Facebook doesn't show for a post are left out instead of filled with blanks.
Output per post
| Field | Description |
|---|---|
postId |
Facebook's numeric post ID |
permalinkUrl |
Direct link to the post, reel or video |
postType |
photo, video, reel or text (from the first photo/video; link shares and re-shares are text) |
contentType |
Finer type: text, photo, album, video, reel, link, share or live |
text |
Full post text |
hashtags |
Hashtags in the text |
mentions |
Tagged people and Pages: {id, name, url} |
externalLinks |
Links in the text, as their real destination (not a tracking redirect) |
creationTime / creationTimeIso |
Publication time as a Unix timestamp and as ISO 8601 (UTC) |
backdatedTime / backdatedTimeIso / backdatedTimeGranularity |
The date the author set for a backdated post (for example a life event in 1985) and how precise it is (DAY, MONTH, YEAR) |
author |
{id, name, url, profilePictureUrl, profileUrlIsFallback}; the flag is true only when Facebook gave no profile link and one was built from the numeric ID |
collaborators |
Co-authors of a joint post: {id, name, url} |
attachments |
Photos (id, url, width, height, accessibilityCaption) and videos (videoUrlHd, videoUrlSd, thumbnailUrl, durationMs, width, height, isReel, isLive, captionsAvailable, plus videoTranscript, videoTranscriptText, videoTranscriptLocale and videoTranscriptFormat when transcripts are requested) |
albumPhotoCount |
Total photos in an album post |
linkPreview |
Link card: {url, title, description, source, domain, imageUrl} |
sharedPost |
The original post behind a re-share: {postId, url, author, creationTime, creationTimeIso, text}, plus contentType, reactionsTotal, commentsCount, sharesCount and viewsCount with "Original text of shared posts" |
reelAudio / remix |
Reels with "Reel audio and remix details": {title, type, id, albumArtUrl, isOriginalAudio} and {isRemixable, status} |
musicTitle |
Song used in a reel or video |
location |
Place the post was checked in at: {id, name, url} |
taggedProfiles |
People or Pages tagged with "is with": {id, name, url} |
reactionsTotal / reactionBreakdown |
Total reactions and [{type, count}] per reaction type |
commentsCount / sharesCount |
Totals as shown by Facebook |
viewsCount |
Plays shown on the video or reel (the "views" number on Facebook) |
videoViewCount / videoPostViewCount |
Facebook's two other view metrics for videos and reels |
feedbackId |
Facebook's engagement ID for the post, handy for joining with other comment datasets |
isAd |
true when Facebook marks the post as sponsored |
topComments |
Comments shown under the post |
allComments |
Full comment list when "Fetch all comments" is on |
inputUrl |
The link from your input, normalized |
scrapedAt |
When the record was collected (ISO 8601) |
recordType |
Always post |
Comment fields (in topComments, allComments and replies): commentId, commentUrl, text, author {id, name, url, profilePictureUrl}, createdTime, createdTimeIso, reactionsTotal (or reactionsCountText such as "1.2K" when Facebook only shows a rounded figure), reactionBreakdown (per type, exact, with "Reactions by type on comments"), replyCount, depth, parentCommentId, imageUrl and replies.
Media copies: when a file is copied into the run's storage, the field holds the permanent copy and <field>Original keeps Facebook's link (for example url and urlOriginal). Links left on Facebook's servers get <field>ExpiresAt, the moment they stop working.
Fields with no value for a given post are left out rather than filled with empty values.
Input
| Field | Type | Default | Description |
|---|---|---|---|
startUrls |
array | – | Required. Page, Profile, post, reel, video, photo, watch or share links, in any mix |
maxItems |
integer | 20 |
Posts per Page or Profile (1-10,000) |
onlyPostsNewerThan |
string | – | Keep timeline posts after a date (2026-01-01), ISO timestamp, or period (7 days, 3 months) |
onlyPostsOlderThan |
string | – | Keep timeline posts before a date; combine both for a window |
contentTypes |
array | all | Keep only text, photo, album, video, reel, link, share and/or live posts |
minReactions / minComments |
integer | – | Skip timeline posts below these engagement levels |
includeTopComments |
boolean | true |
Comments shown under each post |
fetchAllComments |
boolean | false |
Full comment lists into allComments |
maxCommentsPerPost |
integer | 100 |
Limit for allComments (1-5,000); replies count toward it |
commentsSortOrder |
select | mostRelevant |
mostRelevant, newest or all (unfiltered), in Facebook's own ordering |
onlyCommentsNewerThan |
string | – | Keep only comments after a date or period (1 day); read newest first |
includeCommentReplies |
boolean | false |
Reply threads inside each comment |
includeCommentReactions |
boolean | false |
Each comment's reactions by type with exact totals |
fetchVideoCaptions |
boolean | false |
Facebook's caption files as transcripts |
fetchReelDetails |
boolean | false |
Reel audio track and remix setting |
fetchSharedPostDetails |
boolean | false |
Text and counters of the original behind each re-share |
fetchAllAlbumPhotos |
boolean | false |
Every photo of album posts (the timeline shows up to five) |
rehostMedia |
select | images |
images, imagesAndVideos or none |
Date, content-type and engagement filters apply to Page and Profile links. A direct post link always returns its post.
Example: last 30 days of a brand's reels, with transcripts
{
"startUrls": [{ "url": "https://www.facebook.com/nike" }],
"maxItems": 100,
"onlyPostsNewerThan": "30 days",
"contentTypes": ["reel"],
"fetchVideoCaptions": true
}
Example: a news Page's most discussed posts in a fixed window
{
"startUrls": [{ "url": "https://www.facebook.com/nytimes" }],
"maxItems": 50,
"onlyPostsNewerThan": "2026-09-01",
"onlyPostsOlderThan": "2026-10-01",
"minComments": 500
}
Example: enrich a list of post and reel links with full, newest-first comment threads
{
"startUrls": [
{ "url": "https://www.facebook.com/pepsi/posts/1054998311204476" },
{ "url": "https://www.facebook.com/reel/2995026330636892/" },
{ "url": "https://fb.watch/72TEK5emY-/" }
],
"fetchAllComments": true,
"commentsSortOrder": "newest",
"includeCommentReplies": true,
"maxCommentsPerPost": 500
}
Example: archive a club's photo albums with permanent image copies
{
"startUrls": [{ "url": "https://www.facebook.com/fcbarcelona" }],
"maxItems": 40,
"contentTypes": ["album", "photo"],
"fetchAllAlbumPhotos": true,
"rehostMedia": "images"
}
Use cases
- Competitor and brand tracking: chart posting cadence, formats and reactions by type for any set of Pages.
- Reel and video performance reports: compare play counts across creators, and read what was said through the caption transcripts.
- Audience research: collect entire comment threads, replies included, for sentiment or topic analysis.
- Newsroom and fact-check work: freeze a viral post's text, media, counters and discussion at a known moment.
- Content archiving: keep album photos and media copies that still open after Facebook's links expire.
- Lead and partner discovery: find who comments on, collaborates with, or is re-shared by a Page.
FAQ
Do I need a Facebook login, cookies or a proxy? No. The actor reads only what Facebook shows to logged-out visitors and picks its connection method automatically. There is nothing to configure.
How many posts can I get from one Page? As many as Facebook publicly lists, up to 10,000 per link per run. Some Pages and personal profiles show only a handful of posts to everyone, logged in or not. In that case the run stops when the timeline ends and the status message says so.
Why did a link return no post? The status message names every link that produced nothing and why: removed or private content (including videos Facebook hides from logged-out visitors), links that aren't posts or Pages (group feeds, events, Marketplace), or a page that Facebook restricts in some countries. Region-restricted pages show "not available in <country>" and are reported as such instead of being retried.
Are video view counts exact?
Yes. viewsCount is the full integer behind the rounded number Facebook displays (for example 422,708 behind "422K"). Photo, text and link posts have no public view count, so the field is left out for them.
Is the transcript AI-generated? No. It is the caption file Facebook created or the uploader added. Roughly a third of videos have one, in many languages, and English is preferred when available. Videos without captions simply have no transcript.
Why do some comment reactions read "1.2K"?
Next to each comment, Facebook only shows a rounded figure for busy comments, and that is what reactionsCountText keeps. Turn on "Reactions by type on comments" to get the exact total and the split by reaction type for every comment.
Do the photo and video links keep working?
Facebook's media links expire after one to five days. By default every post image (photos, video thumbnails, link pictures and the author's picture) is copied into the run's storage and the copy is what you receive, with Facebook's original kept beside it. Choose imagesAndVideos to copy videos too, or none to keep only Facebook's links, each with its expiry time. Profile pictures inside comments always stay on Facebook's servers, so download them soon after the run if you need them.
Can I monitor a Page on a schedule?
Yes. Schedule the actor with "Only posts newer than" set to the schedule interval (for example 1 day) to receive only the new posts each time.
What can't this actor collect? These limits come from what Facebook shows to logged-out visitors:
- Some Pages and personal profiles show only a few posts to everyone, logged in or not. The run stops when that public timeline ends.
- Pages restricted in the country of the connection are reported as "not available in <country>".
- Videos hidden from logged-out visitors are reported as unavailable.
- Live viewer counts and a post's edit history aren't shown to logged-out visitors.
- Authors of group posts and some commenters appear with a masked ID and no profile link, because Facebook hides them from the public.
- Some link previews carry no description, because the linked site doesn't provide one.
- Album videos beyond the first five are listed with their ID and thumbnail. Open the video's own link for the playable file.
- Reels come from the Page's timeline, which includes the reels a Page posts; filter them with "Content types: Reel".
- A post that Facebook adds to a timeline after your run, with an earlier timestamp, appears only in the next run. When scheduling, let "Only posts newer than" overlap the previous run a little (for example
2 daysfor a daily schedule). - Facebook shows slightly different posts to different visitors and connections. A run can occasionally omit a post that another visitor sees at the same moment, most often near the top of a timeline; a later run usually returns it. The run stays newest-first and reports exactly what its connection was shown.
Is this affiliated with Facebook or Meta? No. It is an independent tool that reads publicly available Facebook pages. It is not endorsed by or connected to Meta Platforms, Inc.
Python quickstart
Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.
Source build 2UujWfpn7EOKxWDbO. Documentation is regenerated from the default published build; private drafts are not included.