Facebook Posts Scraper avatar

Facebook Posts Scraper

Pricing

from $2.00 / 1,000 result items

Go to Apify Store
Facebook Posts Scraper

Facebook Posts Scraper

Scrape Facebook posts from Facebook profiles, pages, groups etc. Retrieve post URLs, content, publication dates, author details, and engagement metrics. Ideal for Facebook monitoring solutions.

Pricing

from $2.00 / 1,000 result items

Rating

5.0

(5)

Developer

Scraper One

Scraper One

Maintained by Community

Actor stats

24

Bookmarked

1.8K

Total users

208

Monthly active users

9 hours ago

Last modified

Share

Apify Actor

This apify actor scrapes public posts from Facebook groups or pages based on input URLs. It supports pagination and returns data including post content, timestamp, number of comments, reactions, and author information. Ideal for social media monitoring solutions.

You can also provide direct URLs of individual public posts, group posts, reels, and videos.

URL errors

Invalid or unsupported input URLs and content confirmed unavailable by Facebook produce a separate dataset row:

{
"inputUrl": "https://www.facebook.com/example/posts/123",
"error": "PAGE_UNAVAILABLE"
}
  • INVALID_URL: a malformed URL, wrong domain, or unsupported Facebook URL type.
  • PAGE_UNAVAILABLE: Facebook returned HTTP 404/410 for the page or a recognized visible content-unavailable message. This does not distinguish deleted from private or restricted content.

inputUrl preserves the original input in both successful results and error rows, including when a share link redirects to a post. Equivalent input URLs are processed once, using the first occurrence. Successful post records retain the deprecated pageUrl (normalized input URL) for compatibility and url (the collected post URL). Use inputUrl in new integrations; successful records do not include error or status. Error rows have no result-item charge and do not count toward resultsLimit; the existing run initialization charge is unchanged.

Input

The actor accepts the following input fields:

FieldTypeRequiredDescription
pageUrlsstring[]✅A list of Facebook group or page URLs to scrape posts from.
resultsLimitnumber❌Maximum number of posts to extract from each URL (default: 10).
onlyPostsNewerThanstring❌Optional first day to include (YYYY-MM-DD, UTC). Supported for pages and groups; group posts are filtered before saving and counting toward the results limit.
onlyPostsOlderThanstring❌Optional last day to include (YYYY-MM-DD, includes the whole day in UTC). Supported for pages only; ignored for groups with a console message.

Example input

{
"resultsLimit": 3,
"pageUrls": [
"https://www.facebook.com/groups/1054903574928547",
"https://www.facebook.com/tweakedmotorsports",
"https://www.facebook.com/groups/289835267786139"
]
}

Example input with a date range

{
"resultsLimit": 20,
"pageUrls": [
"https://www.facebook.com/NFL"
],
"onlyPostsNewerThan": "2023-03-01",
"onlyPostsOlderThan": "2023-03-31"
}

Example input with page and individual post URLs

You can mix page URLs and direct links to individual posts in the same input:

{
"resultsLimit": 3,
"pageUrls": [
// Page URL — collect posts from this page
"https://www.facebook.com/knowyourmeme",
// Direct post URL — collect this individual post
"https://www.facebook.com/knowyourmeme/posts/1528500792655485",
// Direct reel URL is also supported
"https://www.facebook.com/reel/2571258890059094"
]
}

Remove comments before using this example as JSON input.

resultsLimit applies to each input URL. A direct link to an individual post, reel, or video returns at most one result. Direct links to group posts and videos are also supported, including /groups/.../permalink/..., /watch/?v=..., and /.../videos/.... Facebook share links that lead to supported content can also be used. For individual posts, reels, and videos, both date filters apply, including individual group posts; an item outside the selected date range is not returned.

Output

The actor outputs an array of post objects in JSON format with the following fields. When Facebook provides a tagged location for a post, its ID is returned in the optional taggedLocationId field. The optional sharesCount field contains the number of shares when Facebook provides an exact numeric count. It is omitted when unavailable, including video payloads without a share counter.

inputUrl identifies the original input URL for pages, groups, individual posts, reels, and videos, while url is the content URL returned by Facebook. These addresses can differ, for example when a share link leads to a post or a watch link returns a reel URL.

Deprecated: pageUrl contains the normalized input URL and is retained for backward compatibility. Use inputUrl instead.

Example output

{
"url": "https://www.facebook.com/groups/1054903574928547/permalink/2303563860062506/",
"pageUrl": "https://www.facebook.com/groups/1054903574928547",
"inputUrl": "https://www.facebook.com/groups/1054903574928547",
"timestamp": 1752519380000,
"postText": "Hey, how can I save my geranium? I repotted it and now it’s wilting before my eyes. 😔",
"reactionsCount": 3,
"reactions": {
"like": 3,
"love": 10,
"sad": 15,
"angry": 4,
"haha": 1
},
"commentsCount": 20,
"sharesCount": 2,
"isReshare": false,
"sharedPost": null,
"postId": "2303563860062506",
"taggedLocationId": "109524955741121",
"author": {
"id": "100055230212550",
"name": "Yyyyy Tttttt",
"profilePicture": "https://scontent-mad2-1.xx.fbcdn.net/v/t39.30808-1/274300141_461291382388532_2921259538884887660_n.jpg?...",
"profileUrl": "https://www.facebook.com/kttata.adasda.44"
},
"attachments": [
{
"type": "photo",
"url": "https://scontent.fpoz3-1.fna.fbcdn.net/v/t39.30808-6/805805802_10167424495778942_2119050250610320982_n.jpg?stp=dst-jpg_tt6&cstp=mx2048x1536&ctp=s2048x1536&_nc_cat=109&ccb=1-7&_nc_sid=aa7b47&_nc_ohc=nDfW8CwH7eYQ7kNvwGTDcr3&_nc_oc=AdqjS9IUfkGRBUydeYh0oNo_Q_ncMOnLqoyBPYlyNFxhzYh4DRNw7_W9MIlNbNnQA-o&_nc_zt=23&_nc_ht=scontent.fpoz3-1.fna&_nc_gid=vLuoo5GCOAZwj57ayS-O7w&_nc_ss=7b2a8&oh=00_AQLqOsIqm2inOBfatn2_dQqun2saltWbuegBX0pXVB9axQ&oe=6AAB5415",
"id": "10162424501293942",
"accessibilityCaption": "May be an image of speaker, lighting and text"
}
]
}

Example output for a shared post

{
"url": "https://www.facebook.com/auroraaudio/posts/pfbid02R48dV6WxBU59mfg8nDBPLY3rZBdGqJ6QSThgA9MTzSooLxibptb54BhuS3DhhyRm",
"pageUrl": "https://www.facebook.com/NorthHiFi",
"inputUrl": "https://www.facebook.com/NorthHiFi",
"timestamp": 1749803809000,
"postText": "",
"reactionsCount": 417,
"reactions": {
"like": 371,
"love": 42,
"support": 3,
"wow": 1
},
"commentsCount": 31,
"sharesCount": 19,
"isReshare": true,
"sharedPost": {
"postId": "716284953810627",
"url": "https://www.facebook.com/auroraaudio/posts/pfbid02R48dV6WxBU59mfg8nDBPLY3rZBdGqJ6QSThgA9MTzSooLxibptb54BhuS3DhhyRm",
"postText": "A new review of our AA6-MKII integrated amplifier is out! Thank you for the kind words and the listening session.",
"author": {
"id": "100080039527614",
"name": "AURORA AUDIO",
"profilePicture": "https://scontent.fpoz3-1.fna.fbcdn.net/v/t39.30808-1/328395162_896374205618293_2694187352069871435_n.jpg?...",
"profileUrl": "https://www.facebook.com/auroraaudio"
},
"timestamp": 1749803809000,
"attachments": [
{
"type": "photo",
"url": "https://scontent.fpoz3-1.fna.fbcdn.net/v/t39.30808-6/505793216_716291997143256_2113985267041829653_n.jpg?...",
"id": "716291987143257",
"accessibilityCaption": "May be an image of an amplifier and review text"
}
]
},
"postId": "1222096845078316",
"author": {
"id": "100057092683415",
"name": "NorthHiFi",
"profilePicture": "https://scontent.fpoz3-1.fna.fbcdn.net/v/t39.30808-1/309874652_589306247815923_5332871964085637214_n.jpg?...",
"profileUrl": "https://www.facebook.com/northhifi"
}
}
Let me know if you need additional output fields! 🤙

Usage

  1. Create an Apify account and navigate to the actor.
  2. Configure input parameters in the Apify UI or via API.
  3. Run the actor and monitor execution logs.
  4. Download extracted comments as JSON, CSV, or Excel.

Limitations & Notes

  • Scraping Facebook data must comply with their Terms of Service.
  • Avoid excessive scraping to prevent IP bans.
  • The accuracy of data depends on Facebook’s page structure and visibility settings.
  • Free users can process up to 5 page URLs per run and retrieve up to 100 posts per page URL.
  • Free users are rate-limited to a certain number of processed page URLs per day.
  • For higher usage limits, upgrade to a paid Apify plan.

Works Best With

For the best results, use this scraper alongside Facebook Comments Scraper.

Before extracting comments, you can use the Facebook Posts Scraper actor to gather post URLs from specified pages. Then, pass those URLs into Facebook Comments Scraper to collect comments associated with those posts. ✅ Best Use Case Scenario

  • Run Facebook Posts Scraper → Collect posts from facebook pages.
  • Feed post URLs into Facebook Comments Scraper → Extract comments for each post.
  • Gain complete insights → Combine posts and comments for a full dataset, useful for engagement analysis, sentiment tracking, and social media monitoring.

This combination provides a powerful way to analyze conversations happening around specific posts! 🚀

If you're working with multiple platforms or want additional data sources, check out these scrapers:

Support & Contact

✉️ If you encounter issues or need help, feel free to open an issue or contact us at scraper1one@gmail.com.